用法要点
- 内容通过内部列表的
Items 读写;MultiSelect 打开后可多选。
Columns 设定分几列显示,DefaultItemHeight 设定行高。
- 以
ListBox 开头的属性和事件(如 ListBoxFont、OnListBoxClick)对应内部列表控件,用法与标准 ListBox 一致。
- 打开
Transparent 可以让列表透出窗体背景图,这是「透明背景 ListBox」示例的做法。
示例
摘自 Demo:MlSkin.MainDemo.v3.0(窗体文件 .dfm)
object lst1: TMlSkinListBox
Left = 79
Top = 199
Width = 105
Height = 120
Transparent = False
Alpha = 255
BorderSides = []
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
BorderEffectNormal = 'MlSkinBorderNormal'
BorderEffectHot = 'MlSkinBorderHot'
Items.Strings = (
'Delphi7'
'Delphi2007'
'Delphi2009'
'Delphi2010'
属性 14
| 名称 | 类型 | 默认值 | 说明 |
|---|
Columns | Integer | 0 | 列表分几列显示。 |
RowCount | Integer | 0 | 可见的行数。 |
Alignment | TAlignment | taLeftJustify | 文字的对齐方式。 |
DefaultItemHeight | Integer | 20 | 每行的高度(像素)。 |
Items | TStrings | — | 控件的项目集合,在对象检查器里展开可逐项编辑。 |
ItemIndex | Integer | -1 | 当前选中项的序号,从 0 开始,-1 表示没有选中。 |
MultiSelect | Boolean | False | 是否允许同时选中多行。 |
ListBoxFont | TFont | — | 内部列表的文字字体。 |
ListBoxTabOrder | TTabOrder | 0 | 内部列表的 Tab 顺序。 |
ListBoxTabStop | Boolean | True | 内部列表是否能用 Tab 键切换到。 |
ListBoxDragMode | TDragMode | dmManual | 内部列表的拖放模式。 |
ListBoxDragKind | TDragKind | dkDrag | 内部列表的拖放类型(拖动或停靠)。 |
ListBoxDragCursor | TCursor | crDrag | 内部列表拖动时的鼠标指针。 |
ListBoxPopupMenu | TPopupMenu | — | 内部列表的右键菜单。 |
事件 16
| 名称 | 类型 | 默认值 | 说明 |
|---|
OnUpButtonClick | TNotifyEvent | — | 点击向上箭头按钮时触发。 |
OnDownButtonClick | TNotifyEvent | — | 点击向下箭头按钮时触发。 |
OnCheckButtonClick | TNotifyEvent | — | 点击行内勾选框时触发。 |
OnListBoxClick | TNotifyEvent | — | 点击列表时触发(对应内部列表的 OnClick)。 |
OnListBoxDblClick | TNotifyEvent | — | 双击列表时触发。 |
OnListBoxMouseDown | TMouseEvent | — | 在列表上按下鼠标时触发。 |
OnListBoxMouseMove | TMouseMoveEvent | — | 鼠标在列表上移动时触发。 |
OnListBoxMouseUp | TMouseEvent | — | 在列表上松开鼠标时触发。 |
OnListBoxKeyDown | TKeyEvent | — | 列表有焦点时按下按键触发。 |
OnListBoxKeyPress | TKeyPressEvent | — | 列表有焦点时输入字符触发。 |
OnListBoxKeyUp | TKeyEvent | — | 列表有焦点时松开按键触发。 |
OnListBoxDragDrop | TDragDropEvent | — | 拖放到列表上时触发。 |
OnListBoxDragOver | TDragOverEvent | — | 拖动经过列表时触发,可在这里决定是否接受拖放。 |
OnListBoxStartDrag | TStartDragEvent | — | 从列表开始拖动时触发。 |
OnListBoxEndDrag | TEndDragEvent | — | 从列表的拖动结束时触发。 |
OnDrawItem | TMlDrawSkinItemEvent | — | 绘制某一项时触发,可以自定义该项的外观。 |
TMlSkinBorderPanel 的属性 3
| 名称 | 类型 | 默认值 | 说明 |
|---|
ActiveHotFrame | Boolean | True | 是否启用鼠标悬停时换边框。打开后鼠标移上去会切换到 BorderEffectHot。 |
BorderEffectNormal | TMlResID | — | 正常状态的边框图片。 |
BorderEffectHot | TMlResID | — | 鼠标移上时的边框图片。 |
TMlSkinPanel 的属性 16
| 名称 | 类型 | 默认值 | 说明 |
|---|
Alpha | Byte | 192 | 透明度,0 为完全透明、255 为不透明。 |
BorderAlpha | Byte | 255 | 边框的透明度,0 为完全透明、255 为不透明,可做出淡淡的分隔线。 |
BorderSides | TSides | — | 画哪几条边框(上、下、左、右可任意组合)。 |
BorderColor | TColor | $00D9CBBA | 边框颜色。 |
Color | TColor | clWhite | 控件的底色。Transparent 打开时不生效。 |
CaptionVisible | Boolean | False | 是否显示文字。做纯图标按钮时关掉。 |
BackgroundFillType | TMlPngFillType | ftNormal | 背景图片的铺法:ftNormal 原样、ftTile 平铺、ftAutoStretch 自动拉伸、ftCenter 居中、ftStretch 拉伸铺满、ftGradient 渐变。 |
BackgroundImage | TMlResID | — | 背景图片,填图片资源 ID 或图片文件路径。 |
BackgroundOffsetX | Integer | 0 | 背景图片的横向偏移(像素)。 |
BackgroundOffsetY | Integer | 0 | 背景图片的纵向偏移(像素)。 |
GradientDirection | TGradientDirection | gdVertical | 渐变方向:gdHorizontal 水平、gdVertical 垂直。 |
GradientAlign | TGradientAlign | gaCenter | 渐变的对齐位置:居中、靠左或靠右。 |
GradientSize | Integer | 60 | 渐变区域的大小(像素)。 |
GradientStartColor | TColor | $00FFC446 | 渐变的起始颜色。 |
GradientEndColor | TColor | $00FDF8F3 | 渐变的结束颜色。 |
DoubleBorder | Boolean | True | 双层边框,在边框内侧再画一条线。 |
TMlSkinCustomPanel 的属性 1
| 名称 | 类型 | 默认值 | 说明 |
|---|
Color | TColor | clWhite | 控件的底色。Transparent 打开时不生效。 |
TMlSkinCustomPanel 的事件 1
| 名称 | 类型 | 默认值 | 说明 |
|---|
OnCustomDraw | TMlCustomDrawEvent | — | 自绘事件,可在控件画完后继续绘制自己的内容。 |
TMlSkinCustomControl 的属性 5
| 名称 | 类型 | 默认值 | 说明 |
|---|
About | TMlAboutInfo | — | 设计期属性。在对象检查器里双击会弹出 MlSkin 的关于窗口,显示组件版本信息;运行时没有作用,也不会保存到 dfm。 |
Transparent | Boolean | True | 背景是否透明。打开后控件不画自己的底色,直接显示窗体的背景(图片或颜色)。 |
Color | TColor | clWhite | 控件的底色。Transparent 打开时不生效。 |
AutoInvalidate | Boolean | False | 内容变化时是否自动重绘。动态改属性看不到变化时可以打开。 |
EraseBackground | Boolean | False | 绘制前是否擦除背景。界面闪烁时可以调整这个开关。 |
TMlSkinCustomControl 的事件 4
| 名称 | 类型 | 默认值 | 说明 |
|---|
OnDPIChanged | TMlDPIChangedEvent | — | 屏幕 DPI 改变时触发(例如窗口被拖到另一块不同缩放的显示器上),可在这里重新调整自绘内容。 |
OnBackgroundChanging | TMlBackgroundEvent | — | 背景即将改变时触发,可在这里干预要绘制的背景。 |
OnBackgroundChanged | TMlCustomDrawEvent | — | 背景绘制完成后触发,可在背景之上继续自绘内容。 |
OnVisibleChanged | TNotifyEvent | — | 控件显示或隐藏时触发。 |
本页只列出 MlSkin 新增的属性和事件;Align、Anchors、Font、OnClick 等标准 VCL 属性同样可用,用法与原生控件一致。