样式工具控件
# Smart控件使用(样式工具)
提供个性化样式调整工具控件。
# 1. TscStyleManager
用于调整样式菜单、样式通用对话框和缩放选项的组件。scStyleManager 单元还改进了一些用于常见对话框的系统样式挂钩(绘图和缩放(高 DPI)支持)。
# 1.1. 属性
属性 | 功能说明 |
---|---|
MenuAlphaBlendValue | 菜单的 AlphaBlend 值。 如果值 < 255,则启用菜单的 AlphaBlend |
MenuImages | 墙纸图像和菜单背景 |
MenuWallpaperIndex | 菜单墙纸图像索引 |
MenuBackgroundIndex | 菜单自定义背景的图像索引 |
MenuBackgroundOverContentIndex | 图像索引,将覆盖菜单的所有项目 |
MenuHeadersSupport | 如果为 True ,则您可以调整样式菜单的标题将某些项目作为这些步骤的标题: 1.设置 TMenuItem.Caption 的第一个和最后一个字符 ='-' 2. 设置 TMenuItem.Enabled = False |
MenuHookEnabled | 启用/禁用菜单样式,也可使用标准的 TStyleManager.SystemHooks 属性 |
ScaleStyles | 如果为 True ,则所有控件都将为系统缩放某些样式元素。 |
ScaleThemes | 如果为 True ,那么所有控件都将为 hi-dpi 系统缩放一些主题元素。例如,如果您将表单移动到其他显示器,使用其他 dpi,则复选框和单选框将使用当前 DPI 的大小。 |
ScaleFormBorder | 如果为 True ,则样式表的边框将缩放到任何系统比例因子(125%、150%-200% 和更多) |
StyleArrowType | 定义将使用某些控件和菜单中的哪种箭头 |
MenuSelectionStyle | 定义将在菜单中使用哪种选择scmssStyled - 使用样式中的选择位图scmssColor - 使用样式中的选择颜色 |
RTLMode | 为对话框窗体启用 BidiMode = bdRightToLeft |
SystemShellDialogs | 使用此属性可以在 TscOpenDialog 、TscSaveDialog 、TscOpenPictureDialog 、TscSavePictureDialog 组件中使用系统外壳对话框而不是自定义窗体 |
# 2. TscStyledForm
调整和改进样式表行为的组件。
# 2.1. 属性
属性 | 功能说明 |
---|---|
ClientWidth, ClientHeight | 表格的客户端大小的存储值。 当您更改具有不同大小的表单边框的样式时,此组件会自动将客户端大小调整为这些值 |
ShowStylesMenu | 如果为 True ,则组件会自动将样式菜单添加到窗体的系统菜单中 |
StylesMenuCaption | 样式菜单的菜单项标题 |
ShowIcon | 显示/隐藏图标 |
Buttons | TscNCButtonItems 控件项目的集合 |
Tabs | TscNCTabItems 控件项目的集合 |
ButtonFont | 按钮的文本字体 |
TabFont | 标签页的文本字体 |
ButtonImages | 按钮使用的图像库控件 |
TabImages | 标签使用的图像库控件 |
ShowButtons | 显示、隐藏按钮 |
ShowTabs | 显示、隐藏标签页 |
TabIndex | 活动标签页的索引序号 |
TabsPosition | 左侧或右侧的标签页位置 |
ShowInactiveTab | 如果为 False ,则选项卡的正常和禁用状态将是透明的 |
CaptionFont | 字幕文本的字体 |
CaptionAlignment | 字幕文本的对齐方式 |
ShowHints | 显示来自按钮和选项卡的提示 |
DropDownForm | 如果为 True,则表单将具有下拉样式。 1.可以把任何控件放在TCustomForm上,并把它用作下拉表单。 2. TscStyledForm 必须放在所有窗体上进行交互。 3. 在表单上设置 TscStyledForm.DropDownForm = True,允许下拉。 4.使用TscStyledForm.OnDropDown、TscStyledForm.OnCloseUp事件来使用控件。 5. 使用 TscStyledForm.DropDown 方法显示下拉菜单父窗体的 nc 区域中的控件、位置或对象。 6.可以使用TscButton.CustomDropDown = True,TscButton.OnDropDown 和 TscButton.OnCloseUp 事件进行互动。 |
DropDownAnimation | 为下拉表单启用 alphableend 动画 |
DropDownBorderColor | 下拉窗体的边框颜色 |
InActiveClientColor | 表单客户端的非活动效果的颜色。 这种颜色与模糊的客户形象融合在一起。请参阅 ShowClientInActiveEffect 和 HideClientInActiveEffect 方法。默认值为 clWindow,控件使用样式中的 clWindow 颜色 |
InActiveClientColorAlpha | InActiveClientColor 值的 Alpha 值 |
InActiveClientBlurAmount | 设置不活跃的客户区的模糊效果数值 |
DWMClientShadow | 如果为 True,则组件为 BorderStyle = bsNone 的表单添加系统 DWM 阴影 |
DWMClientShadowHiTest | 启用阴影的反馈条,可使用它来调整表单大小 |
CaptionWallpapers | 标题壁纸的图像 |
CaptionWallpaperIndex | 字幕的壁纸索引 |
CaptionWallpaperInAcitveIndex | 表格未激活的标题壁纸的索引 |
CaptionWallpaperLeftMargin CaptionWallpaperRightMargin CaptionWallpaperTopMargin CaptionWallpaperBottomMargin | 标题字幕壁纸的边距 |
FluentUIBackground | scfuibNone - 默认表单背景scfuibBlur - 具有模糊背景的透明形式scfuibAcrylic - 具有模糊背景和合并丙烯酸颜色的透明形式 |
FluentUIAcrylicColor | 亚克力色值 |
FluentUIAcrylicColorAlpha | 亚克力色值的Alpha/不透明度 |
FluentUIBorder | 启用/禁用带有模糊背景的窗体的系统边框 |
FluentUIInactiveAcrylicColorOpaque | 如果为true,则对于非活动的窗口,亚克力颜色alpha值自定设定未为255 |
在表单和控件上调整Fluent UI
在表单上添加Fluent UI背景的步骤
- 将
TscStyledForm
组件放在窗体上。 - 将
TscStyledForm.DWMClientShadow
设置为True
- 如果需要调整带阴影的表单大小,请设置
TscStyledForm.DWMClientShadow
。 - 将
TscStyledForm.FluentBackground
设置为scfuibBlur
或scfuibAcrylic
(推荐使用scfuibAcrylic
)。 - 设置
TscStyledForm.FluentUIAcrylicColor
(与虚化背景融合的亚克力色) - 设置
TscStyledForm.FluentUIAcrylicColorAlpha
(与模糊背景合并的丙烯酸颜色的不透明度) - 设置
TscStyledForm.FluentUIBorder = True
。
运行应用程序,你会得到一个带有模糊背景效果的空透明表单。
调整应用程序中控件的步骤
- 在透明背景上仅使用 TscGP...(带有 GDI+ 图形的控件)带有
DrawTextMode = scdtmGDIPlus
的控件。如果您设置TscGPPanel.FillColor = clBlack
和TscGPPanel.FillColorAlpha = 255
那么这个区域将是透明的。 - 请注意,默认的 GDI 绘图(填充矩形、线条、文本)结果将是透明的。这意味着像
TEdit
、TListView
和其他带有 GDI 文本的控件在此背景下看起来不正确。要获得任何第三方控件的不透明区域,您可以使用TscPanel
或TscGPPanel
,设置其中的FluentUIOpacity = True
。把控件放在上面。其他一些控件也具有FluentUIOpacity
属性(TscEdit
、TscGPEdit
等)。
调整应用程序以在Windows 10和其他Windows版本上使用的步骤
- 使用
TscStyledForm.IsFluentUIAvailable
方法检测系统中的 Fluent UI。您可以在主窗体的OnCreate
事件上使用此方法调整 TscGP.. 控件。 - 使用
scControls.SC_SetDrawTextModeInControl(AControl: TControl; ADrawTextMode: TscDrawTextMode)
方法快速调整 TscGP 中的 DrawTextMode...控件或窗体上的控件。如果 Fluent UI 不可用,您可以禁用 GDI+ 文本绘制。
if not scStyledForm1.IsFluentUIAvailable or (scStyledForm1.FluentUIBackground = scfuibNone) then
begin
scControls.SC_SetDrawTextModeInControl(Self, scdtmGDI);
BorderPanel.FrameWidth := 1;
BorderPanel.FillColor := clBtnFace;
scGPPanel1.TransparentBackground := False;
...
end;
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
- 如果您在 Windows 10 下打开/关闭 Fluent UI,请在控件中将
FluentUIOpaque
属性设置为 True / False。
# 2.2. 事件
事件 | 说明 |
---|---|
OnStyleChanged | 当调整窗体中的样式组件时触发事件 |
OnTabChanged | 当前激活的Tab标签页发生变化时触发事件 |
OnBeforeChangeScale | 当调整表单的尺寸大小前触发事件 |
OnChangeScale | 为其他 DPI 缩放表单时的事件。使用 AScaleFactor 参数可获取表单的实际比例因子,并用它调整一些控件 |
OnDropDown | 将此事件与 DropDownForm = True 属性一起使用,该事件帮助您在窗体显示之前初始化窗体上的一些控件 |
OnCloseUp | 将此事件与 DropDownForm = True 属性一起使用,在隐藏下拉表单后,使用此事件与下拉控件进行交互 |
# 2.2.1. OnChangeScale
TscOnChangeScaleEvent = procedure(AScaleFactor: Double) of object;
1
当调整表单的尺寸大小前触发事件。为其他 DPI
缩放表单时的事件。 使用 AScaleFactor
参数获取表单的实际比例因子并用它调整一些控件。
if AScaleFactor >= 4 then // 400% +
scButton1.Images := ImageList5
else
if AScale >=3 then // 300 % +
scButton1.Images := ImageList4
else
if AScale >= 2 then // 200% +
if scButton1.Images := ImageList3
else
if AScale >= 1.5 then // 150 % +
if scButton1.Images := ImageList2
else
scButton1.Images := ImageList1; // 100 % or 125%
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
# 2.2.2. OnDropDown
TscOnFormDropDownEvent = procedure(ADropDownForm: TCustomForm; ADropDownControl: TControl) of object;
1
将此事件与 DropDownForm = True
属性一起使用,该事件帮助您在窗体显示之前初始化窗体上的一些控件。
procedure TPopupForm.scStyledForm1DropDown(ADropDownForm: TCustomForm;
ADropDownControl: TControl);
var
S: String;
begin
S := '';
if ADropDownControl <> nil then
begin
if ADropDownControl is TscButton then
begin
S := TscButton(ADropDownControl).Caption;
end
else
if ADropDownControl is TscCustomEdit then
begin
S := TscCustomEdit(ADropDownControl).Text;
end;
end;
if S <> '' then
begin
scListView1.Selected := scListView1.FindCaption(0, S, False, True, False);
if scListView1.Selected <> nil then
scListView1.ItemIndex := scListView1.Selected.Index;
end;
end;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# 2.2.3. OnCloseUp
TscOnFormCloseUpEvent = procedure(ADropDownForm: TCustomForm; ADropDownControl: TControl; AAcceptChanges: Boolean) of object;
1
将此事件与 DropDownForm = True
属性一起使用,在隐藏下拉表单后,使用此事件与下拉控件进行交互。
procedure TPopupForm.scStyledForm1CloseUp(ADropDownForm: TCustomForm;
ADropDownControl: TControl; AAcceptChanges: Boolean);
begin
if ADropDownControl <> nil then
begin
if ADropDownControl is TscButton then
begin
TscButton(ADropDownControl).CloseUp(AAcceptChanges);
end
else
if ADropDownControl is TscCustomEdit then
begin
if (scListView1.Selected <> nil) and AAcceptChanges then
TscCustomEdit(ADropDownControl).Text := scListView1.Selected.Caption;
end;
end;
end;
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 2.3. 方法
# 2.3.1. CloseUp
procedure CloseUp(AAcceptChanges: Boolean);
1
AAcceptChanges
- 使用此参数进行下拉控制。使用此方法隐藏下拉表单。
# 3. TscNcButtonItem
TscNcButtonItem
中 Buttons
使用的控件集合。
# 3.1. 属性
属性 | 说明 |
---|---|
ImageIndex, HotImageIndex, PressedImagesIndex | 特定状态的图像索引 |
Enabled | 是否启用按钮 |
Visible | 按钮是否可见 |
PopupMenu | 下拉菜单 |
Caption | 按钮显示的文字 |
SplitButton | 当 PopupMenu <> nil 时拆分按钮 |
Style | 按钮的样式 |
Width | 按钮的宽度。 如果值为 0,则大小将自动 |
Height | 按钮的高度。 如果值为 0,则大小将自动 |
MarginLeft, MarginTop, MarginRight, MarginBottom | 表单标题区域中按钮的边距 |
Position | 表单标题区域中按钮的位置(scbpLeft、scbpRight) |
Spacing | 按钮中文本和图像之间的间距 |
Margin | 按钮中文本和图像的边距 |
ContentMargin | 按钮中左右两侧的额外边距。 使用此值自动增加按钮的宽度(Width = 0) |
GroupIndex | 按钮组索引 |
AllowAllUp | 组中的所有按钮都可以为按起的状态 |
Down | GroupIndex > 0 时的向下状态 |
Hint | 按钮提示 |
CustomDropDown | 如果为 True,则按钮将与下拉表单一起使用 |
# 3.2. 事件
事件 | 说明 |
---|---|
OnPaint | 使用此事件完全重绘按钮,您可以使用来自 TscImageCollection 的自定义图像 |
OnGetPaintParams | 使用此事件设置特定字体颜色、按钮大小或绘制您的按钮中的内容(AHandled = True ) |
OnClick | 按钮的点击事件 |
OnMouseMove, OnMouseUp, OnMouseDown | 当进行鼠标相关的操作时触发事件 |
OnMouseEnter, OnMouseLeave | 当鼠标光标进入或离开时触发事件 |
OnDropDown | 使用此事件可打开下拉窗口 |
OnCloseUp | 当下拉窗口关闭时触发事件 |
# 4. TscNCTabItem
TscNcButtonItem
中 Tabs
使用的控件集合。
# 4.1. 属性
属性 | 说明 |
---|---|
ImageIndex | 标签的图片索引序号 |
Enabled | 启用标签 |
Visible | 标签是否可见 |
Caption | 标签文本 |
Width | 选项卡的宽度,如果值是 0 那么大小将是自动的 |
Height | 选项卡的高度,如果值是 0 那么大小将是自动的 |
MarginTop | 表单标题区域中制表符的上边距 |
Spacing | 制表符中文本和图像之间的间距 |
ContentMargin | 选项卡中左右两侧的额外边距,使用此值自动增加选项卡的宽度(宽度 = 0) |
Hint | 选项卡提示 |
# 4.2. 事件
事件 | 说明 |
---|---|
OnPaint | 使用此事件完全重绘选项卡,您可以使用来自 TscImageCollection 的自定义图像 |
OnGetPaintParams | 使用此事件设置特定字体颜色、选项卡大小或绘制您的按钮中的内容(AHandled = True) |
OnMouseMove,OnMouseUp,OnMouseDown | 当鼠标的关联事件发生时触发的事件,其中 AIndex 表示标签的索引号,X,Y 表示鼠标所在的位置 |
OnMouseEnter,OnMouseLeave | 当鼠标的关联事件发生时触发的事件,其中 AIndex 表示标签的索引号 |