TMlSkinImageButton

完全用图片绘制的按钮,外观由一张多状态图片决定,适合做风格化的界面按钮。

分类
按钮与工具栏
所在单元
uMlSkinButton.pas
继承自
TMlSkinCustomButtonTMlSkinCustomControl

用法要点

  • Pictures 指定按钮图片:一张图按帧分成正常、悬停、按下、禁用几种状态,用 Count 说明总帧数。
  • 按钮上还可以叠一层图标,用 Layers 指定、LayersOffset 调位置,这样换图标不必重做整张按钮图。
  • 只要图片不要文字时,把 CaptionVisible 关掉。
  • DropdownMenu 挂一个弹出菜单,点击按钮即可弹出。

示例

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

object btn6: TMlSkinImageButton
  Left = 852
  Top = 8
  Width = 18
  Height = 18
  AutoInvalidate = True
  Down = False
  HotFont.Charset = DEFAULT_CHARSET
  HotFont.Color = clWindowText
  HotFont.Height = -12
  HotFont.Name = 'Tahoma'
  HotFont.Style = []
  DropdownMenuOffset.X = -4
  DropdownMenuOffset.Y = -4
  Anchors = [akTop, akRight]
  Caption = 'btn6'
  TabOrder = 3
  TabStop = True
  Pictures.Active = True
  Pictures.Normal = 0

属性 9

名称类型默认值说明
StreachBooleanFalse图片是否拉伸到控件大小。关掉则按图片原始尺寸绘制。
PicturesTPngPictures控件使用的图片,按状态分帧(未选中、选中、悬停、禁用等)。
LayerModeBooleanFalse是否启用图层模式。打开后才会绘制 Layers 指定的图层。
LayersTPngPictures叠加在按钮上的图层图片(通常是图标),和按钮底图分开管理,换图标不用重做整张按钮图。
LayersOffsetTMlBtnItemOffset图层相对按钮的偏移量(X、Y)。
CaptionVisibleBoolean是否显示文字。做纯图标按钮时关掉。
CaptionOffsetTMlBtnItemOffset文字相对控件的偏移量(X、Y),用来微调文字位置。
ImageOffsetTMlBtnItemOffset图标相对控件的偏移量(X、Y)。
DropdownMenuTPopupMenu关联的弹出菜单。设置后按钮旁出现下拉箭头,点击即可弹出菜单。
TMlSkinCustomButton 的属性 15
名称类型默认值说明
AboutTMlAboutInfo设计期属性。在对象检查器里双击会弹出 MlSkin 的关于窗口,显示组件版本信息;运行时没有作用,也不会保存到 dfm。
AllowAllUpBooleanFalse同组按钮是否允许全部弹起。关掉后组内必须有一个处于按下状态。
IgnoreMouseBooleanFalse忽略鼠标。打开后控件不响应鼠标,事件穿透到下面的控件。
CycleDownClickBooleanFalse按住不放时循环触发点击,常用于数值增减按钮;触发的是 OnCycleDownClick
WordWrapBooleanFalse文字过长时是否换行显示。
DownBoolean按钮是否处于按下状态,配合 GroupIndex 可做成开关或标签页效果。
HotFontTFont鼠标移上去时使用的字体,可换颜色或加下划线做悬停效果。
GroupIndexInteger0分组编号。编号相同的按钮互斥,同一时间只有一个处于按下状态;0 表示不分组。
DropdownMenuOffsetTMlBtnItemOffset下拉菜单弹出位置的偏移量(X、Y)。
PressedOffsetInteger1按下时内容向右下偏移的像素数,用来做按下去的效果,0 表示不偏移。
CanFocusedBooleanTrue控件是否可以获得焦点。关掉后点击不抢焦点,也不能用 Tab 切换到它。
DefaultBooleanFalse是否为默认按钮。窗体上按回车时相当于点击它。
CancelBooleanFalse是否为取消按钮。窗体上按 Esc 时相当于点击它。
ModalResultTModalResult0点击后给模态窗体返回的结果值,用法与标准按钮相同。
ShowFocusFrameBooleanFalse是否显示焦点虚线框。
TMlSkinCustomButton 的事件 2
名称类型默认值说明
OnCustomPaintTCustomPaintEvent自绘事件。需要完全自己画按钮时,在这里接管绘制。
OnCycleDownClickTNotifyEvent按住不放期间反复触发(需先打开 CycleDownClick)。
TMlSkinCustomControl 的属性 5
名称类型默认值说明
AboutTMlAboutInfo设计期属性。在对象检查器里双击会弹出 MlSkin 的关于窗口,显示组件版本信息;运行时没有作用,也不会保存到 dfm。
TransparentBooleanTrue背景是否透明。打开后控件不画自己的底色,直接显示窗体的背景(图片或颜色)。
ColorTColorclWhite控件的底色。Transparent 打开时不生效。
AutoInvalidateBooleanFalse内容变化时是否自动重绘。动态改属性看不到变化时可以打开。
EraseBackgroundBooleanFalse绘制前是否擦除背景。界面闪烁时可以调整这个开关。
TMlSkinCustomControl 的事件 4
名称类型默认值说明
OnDPIChangedTMlDPIChangedEvent屏幕 DPI 改变时触发(例如窗口被拖到另一块不同缩放的显示器上),可在这里重新调整自绘内容。
OnBackgroundChangingTMlBackgroundEvent背景即将改变时触发,可在这里干预要绘制的背景。
OnBackgroundChangedTMlCustomDrawEvent背景绘制完成后触发,可在背景之上继续自绘内容。
OnVisibleChangedTNotifyEvent控件显示或隐藏时触发。

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

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