TMlSkinForm

窗体皮肤的核心组件。放到窗体上后接管窗体的背景、边框和标题栏绘制,是使用 MlSkin 的起点。

分类
窗体与边框
所在单元
uMlSkinForm.pas
继承自
TMlHookWindowProc

用法要点

  • 一个窗体放一个即可,放上去后窗体立即变为 MlSkin 外观。
  • 背景用纯色还是图片由 Style 决定:ssColorColorssPictureCustomPicture 指定的图片,图片的铺法由 FillStyle 控制。
  • 标题栏由它绘制,高度用 TitleHeight,颜色用 TitlerColor;标题栏上的 TMlSkinNCButton、TMlSkinNCLabel 等控件都依赖它。
  • 圆角有两种:RoundCorner 自己画圆角,NativeRoundCorner 交给 Windows 11 的系统圆角。
  • ShadowEnabled 开启窗体自绘阴影(v5.7 新增),配合 ShadowColorShadowSizeShadowAlpha 调整效果。
  • 要做异形窗体时,用 ImageBorder 指定一圈边框图片。

示例

摘自 Demo:MlSkin.Demo.360云盘.v3.0(窗体文件 .dfm)

object mlsknfrm1: TMlSkinForm
  FlatFrame = True
  TitleHeight = 56
  TitlerColor = 15434544
  Color = clWhite
  RoundWindow = False
  FramWidth = 0
  ActiveGradient = False
  MainMenu.Font.Charset = DEFAULT_CHARSET
  MainMenu.Font.Color = clWindowText
  MainMenu.Font.Height = -11
  MainMenu.Font.Name = 'Tahoma'
  MainMenu.Font.Style = []
  MainMenu.Pos.Align = caLeft
  MainMenu.Pos.XValue = 5
  MainMenu.Pos.YValue = 5
  MainMenu.Pos.UseDefault = False
  MainMenu.Pictures.Active = True
  MainMenu.Pictures.Image = 'MlSkinFlatBtn'
  MainMenu.Pictures.Normal = 0

属性 29

名称类型默认值说明
AboutTMlAboutInfo设计期属性。在对象检查器里双击会弹出 MlSkin 的关于窗口,显示组件版本信息;运行时没有作用,也不会保存到 dfm。
FlatFrameBooleanFalse扁平边框。打开后窗体边框画成单线条的扁平样式,不带立体感。
TitleHeightInteger27标题栏高度(像素)。标题栏上的按钮、文字等控件都在这个高度范围内排布。
TitlerColorTColor$00FFC446标题栏颜色。StylessColor 时生效;用图片背景时标题栏由图片决定。
ColorTColor$00F2ECE1窗体背景色。StylessColor 时作为整个窗体的底色。
OptionsTMlSkinFormOptions窗体行为选项,展开后可设置:最小化到任务栏、是否在任务栏隐藏、拖动窗体时是否显示完整内容。
RoundWindowBooleanTrue圆角窗口开关。打开后窗体四角为圆角,圆角大小由 RoundCorner 决定。
RoundCornerInteger2圆角半径(像素)。数值越大角越圆,0 为直角。
NativeRoundCornerBooleanTrue使用系统圆角。打开后交给 Windows 11 绘制圆角,边缘抗锯齿由系统处理;在旧版 Windows 上无效,需改用 RoundCorner
NativeBorderColorTColorclDefault系统边框颜色,配合 NativeRoundCorner 使用,设定 Windows 11 绘制的窗体边框线颜色。
FramWidthInteger2边框宽度(像素)。
FrameColorTColorclBlack边框颜色。
FillStyleTMlFillStylemfsBlur背景图片的铺法:mfsStretch 拉伸铺满、mfsTile 平铺、mfs9Block 九宫格拉伸(四角不变形)、mfsBlur 模糊填充。
HitTestWidthInteger5窗体边缘用于拉伸改变大小的响应宽度(像素)。数值太小不容易拖到,太大会影响靠边的控件。
EraseBackGroundBooleanFalse是否擦除背景。窗体上有闪烁时可以调整这个开关。
GradientHeightInteger168标题栏渐变的高度(像素),配合 ActiveGradient 使用。
CustomPictureTMlResID窗体背景图片,填资源管理器里的图片 ID 或图片文件路径;Style 要设为 ssPicture 才会显示。
StyleTMlSkinStylessColor皮肤方式:ssColor 用纯色(ColorTitlerColor),ssPicture 用图片(CustomPicture)。切换皮肤通常就是改这个属性和对应的颜色或图片。
ActiveGradientBooleanTrue标题栏渐变开关。打开后标题栏颜色按 GradientHeight 的高度做渐变。
SkinResTMlSkinRes关联的图片资源组件(TMlSkinRes)。指定后,窗体和上面控件用到的图片 ID 都从这个资源里取。
ImageBorderTmlFormLayerBorder图片边框设置,展开后可指定边框图片、各边尺寸和拉伸方式,用来做异形窗体。
MainMenuTMlSkinMainMenu关联的皮肤主菜单。指定后菜单由 MlSkin 绘制,并可显示在标题栏上。
DoubleFrameBooleanTrue双层边框。打开后在边框内侧再画一条线,常用来做浅色内描边。
KeepTitlerColorBooleanFalse换肤时保持标题栏颜色不变,即使背景图片或皮肤颜色变化也不改标题栏颜色。
KeepFrameColorBooleanFalse换肤时保持边框颜色不变。
ShadowEnabledBooleanFalse窗体自绘阴影开关(v5.7 新增),打开后窗体四周画出阴影,不依赖系统阴影。
ShadowColorTColorclBlack阴影颜色。
ShadowSizeInteger20阴影大小(像素),也就是阴影向外扩散的宽度。
ShadowAlphaByte90阴影透明度,0 为完全透明、255 为不透明。

事件 1

名称类型默认值说明
ChangedTNotifyEvent皮肤设置改变后触发,可用来同步更新自己绘制的界面部分。

本页只列出 MlSkin 新增的属性和事件;Align、Anchors、Font、OnClick 等标准 VCL 属性同样可用,用法与原生控件一致。

离线帮助文档需要离线查阅时,可下载 PDF / CHM 版帮助文档。