TMlSkinToolbar

重新设计的工具栏,支持水平和垂直排列,每个按钮可带图标、文字和下拉菜单,也常被用作标签页式的导航栏。

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

用法要点

  • 按钮在 Items 集合里添加,每项可设文字、图标序号、类型(普通按钮 / 分隔条等)、是否可用。
  • 图标来自 Images(标准 ImageList)或 ButtonImage(多状态图片)。
  • 按钮尺寸用 ButtonWidthButtonHeight;打开 AutoButtonWidth 则按文字长度自动决定宽度,MaxButtonWidth 限制上限。
  • 工具栏放不下时会出现滚动按钮,ScrollButtonVisible 控制是否显示、ScrollSize 设定滚动按钮大小。
  • 背景可以用颜色加透明度(Alpha),也可以用 BackgroundImage 贴图,贴法由 BackgroundFillType 决定。
  • 点击按钮触发 OnItemClick,事件参数里带着被点的项。

示例

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

object mlskntlbr1: TMlSkinToolbar
  Left = 0
  Top = 0
  Width = 201
  Height = 586
  Color = 16644854
  Items = <
  ...

属性 28

名称类型默认值说明
AllowArrowKeysBooleanFalse是否允许用方向键在按钮之间移动焦点。
AutoButtonWidthBooleanFalse按钮宽度是否随文字长度自动调整;关掉则统一使用 ButtonWidth
DelayRefreshBooleanFalse延迟刷新。批量修改按钮时打开可减少重绘次数。
TextOffsetTMlBtnItemOffset按钮文字的偏移量(X、Y)。
ItemsTMlSkinToolbarItems工具栏上的按钮集合。每一项可设文字、图标序号(正常/悬停/按下/禁用)、类型、是否可用、是否按下,以及关联的 Action。
ImagesTCustomImageList按钮图标来源的 ImageList,项里的图标序号就是指向这个列表。
ButtonImageTPngPictures按钮底图(多状态图片),决定按钮正常、悬停、按下时的背景。
ButtonWidthInteger48按钮宽度(像素)。
MaxButtonWidthInteger0按钮最大宽度(像素),0 表示不限制。打开 AutoButtonWidth 后用它防止按钮过宽。
ButtonHeightInteger48按钮高度(像素)。
SpaceSizeInteger3按钮之间的间距(像素)。
MultiLineBooleanFalse按钮放不下时是否换行显示。
DropdownMenuOffsetTMlBtnItemOffset下拉菜单弹出位置的偏移量(X、Y)。
ScrollSizeInteger15两端滚动按钮的大小(像素)。
ScrollButtonVisibleBooleanTrue按钮放不下时是否显示两端的滚动按钮。
MarginSizeInteger20工具栏内容与边缘的间距(像素)。
MarginTextSizeInteger2图标与文字之间的间距(像素)。
PressedOffsetInteger0按钮按下时内容偏移的像素数。
AlphaByte192工具栏背景的透明度,0 为完全透明、255 为不透明。
BorderSidesTSides画哪几条边框(上、下、左、右可任意组合)。
BorderColorTColor$00D9CBBA边框颜色。
BackgroundImageTMlResID工具栏背景图片,填图片 ID 或路径。
BackgroundFillTypeTMlPngFillTypeftNormal背景图片的铺法:原样、平铺、自动拉伸、居中、拉伸、渐变。
BackgroundOffsetXInteger0背景图片的横向偏移(像素)。
BackgroundOffsetYInteger0背景图片的纵向偏移(像素)。
DoubleBorderBooleanTrue双层边框,在边框内侧再画一条线。
FontHotTFont鼠标移上去时使用的字体。
FontDownTFont按下时使用的字体。

事件 5

名称类型默认值说明
OnItemClickTToolbarClickEvent点击按钮时触发,事件参数里带着被点击的项。
OnItemDownTToolbarClickEvent按钮被按下时触发(早于点击完成)。
OnItemFocusChangedTNotifyEvent焦点在按钮之间移动时触发。
OnDrawItemTMlToolbarItemDrawEnvent自绘按钮事件,需要自己画某一项时使用。
OnButtonWidthChangedTToolbarButtonWidthEvent按钮宽度变化后触发(多在 AutoButtonWidth 打开时)。
TMlSkinCustomPanel 的属性 1
名称类型默认值说明
ColorTColorclWhite控件的底色。Transparent 打开时不生效。
TMlSkinCustomPanel 的事件 1
名称类型默认值说明
OnCustomDrawTMlCustomDrawEvent自绘事件,可在控件画完后继续绘制自己的内容。
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 版帮助文档。