Delphi VCL样式教程 – 如何在运行时更改样式

是否有一个很好的VCL样式教程,我们看到如何动态(在运行时)加载/更改样式?

这应该适用于Delphi XE2及更高版本,因为XE2是第一个带有VCL样式的版本.

我正在添加一个答案,因为本地信息通常比链接更受欢迎.

以下是您在开始之前需要了解的关键事实:

>许多VCL控件都有颜色属性,但是当打开样式时,这些属性将被忽略,而像Button这样的默认“常用控件”将由Delphi本身绘制,而不是使用“或”.配有窗户“.
>不知何故,在你的应用程序的深处,VCL样式会引入一些钩子来接管绘制你的控件.它可以处理的所有东西都将使用常规控件顶部的“皮肤”绘制.很多人称之为“剥皮vcl”,在VCL风格之前,你可能已经找到了第三方皮肤系统.现在它已经内置了.
>任何没有挂钩的东西,仍然会得到常规风格.所以大多数第三方控件,以及VCL的一些位都不是主题.不要指望完美的即时结果.此外,您可能有时会看到一些由于蒙皮造成的瞬间闪烁或毛刺,这是可以预料的.在运行时添加样式加载,结果的最终质量是任何人的猜测.您不一定能保证在运行时加载的样式将包含您可能希望它包含的所有内容.你也不能保证在你的应用程序中静态包含一个,但至少你静态包含的那些可以由你的QA团队(可能是你)验证.

这是开始的最简单的步骤:真的只有步骤#2到#4是必不可少的.

>点击文件 – >新 – > VCL表单项目.
>右键单击“项目管理器”窗格中的项目选项,然后单击“属性”.导航到应用程序 – >出现
>单击自定义样式将其打开. (Amakrits是我列表中的第一个,所以我会点击它).
>单击默认样式组合框并将其更改为默认值以外的其他值.
>在表单上放一些东西,这样就不会空了. (按钮,列表框等).
>运行你的应用程序.

现在,高级的东西:在运行时改变你的风格:

我使用这个按钮click和formcreate来做到这一点:

添加fdefaultStyleName:String;到您表单的私人部分.

确保Vcl.Themes在您的使用条款中.

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;
相关文章
相关标签/搜索
王中王中特免费公开资料选料