有没有一个很好的VCL样式教程,我们看到如何动态(在运行时)加载/更改样式?
解决方法
我正在添加一个答案,因为本地信息通常仅仅是链接.
在开始之前,您需要了解的主要事实:
>许多VCL控件具有颜色属性,但是当样式打开时,这些属性将被忽略,而像Button这样的默认“常用控件”将由Delphi自己绘制,而不是使用XP或Windows 2000样式“自带窗户“.
>不知何故,在您的应用程序中,VCL样式将挂钩插入绘制控件.它可以处理的一切,将使用常规控件顶部的“皮肤”绘制.许多人称之为“剥皮vcl”,在VCL风格之前,您可能已经找到了第三方皮肤系统.现在它内置了
>任何不挂钩的东西,仍然会得到普通的风格.所以大多数第三方的控制,VCL的一些位将不会主题.不要期待完美的即时结果.此外,您有时会看到由于皮肤造成的瞬间闪烁或毛刺,这是预期的.在运行时加载样式,结果的最终质量是任何人的猜测.您不一定会保证在运行时加载的样式将包含您可能希望包含的所有内容.你也不能保证一个您静态地包含在您的应用程序中,但至少您静态包含的可以由您的质量检查团队(可能是您)进行验证.
这里是最简单的开始步骤:只有步骤#2到#4是必不可少的.
>单击文件 – >新 – > VCL表单项目.
>右键单击“项目管理器”窗格中的项目选项,然后单击属性.导航到应用程序 – >出现
>点击自定义样式将其打开. (Amakrits是我的列表中的第一个,所以我点击).
>单击默认样式组合框并将其更改为默认值以外的其他内容.
把东西放在你的表单上,所以它不是空的. (A按钮,列表框等).
>运行你的应用程序
现在,高级的东西:在运行时改变你的风格:
我用这个按钮点击并创建formcreate来做到这一点:
添加fdefaultStyleName:String;到您的表单的私人部分.
确保Vcl.Themes在你的uses子句中.
procedure TForm1.Button1Click(Sender: TObject); begin if Assigned(TStyleManager.ActiveStyle) and (TStyleManager.ActiveStyle.Name<>'Windows') then begin TStyleManager.TrySetStyle('Windows'); end else begin TStyleManager.TrySetStyle(fdefaultStyleName); // whatever was in the project settings. end; end; procedure TForm1.FormCreate(Sender: TObject); begin if Assigned(TStyleManager.ActiveStyle) then fdefaultStyleName := TStyleManager.ActiveStyle.Name; end;