2012-03-28 101 views
12

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

由于XE2是VCL样式的第一个版本,因此这应该与Delphi XE2一起使用。

+0

有很多在http://www.tindex.net/VCL/VCLStyles.html相关链接 – LachlanG 2013-06-20 05:06:38

+0

与模态窗口小心地VCL风格。仍然在DX10中的错误 - http://stackoverflow.com/questions/33606625/delphi-xe7-dx10-using-tstylemanager-trysetstyle-in-runtime-when-modal-window-d – Zam 2016-08-08 08:38:51

回答

24

我加入一个答案,因为当地的信息往往是首选,只是链接。

下面是你需要知道的重要事实,然后再开始:

  1. 许多VCL控件有颜色的特性,但这些特性都将被忽略时,风格上,并且默认“共同控制”像Button将会被Delphi自己绘制,而不是使用“随窗口”附带的XP或Windows 2000风格。

  2. 不知何故,在你的应用程序的深处,VCL的风格把挂钩画在你的控件上。它可以处理的所有东西都将使用常规控件上的“外观”进行绘制。许多人称之为“剥皮vcl”,在VCL样式之前,您可能已经找到了第三方皮肤系统。现在它的内置。

  3. 任何不挂钩,仍然会得到正常的风格。所以大多数第三方控件,以及VCL的一些部分不会是主题。不要期望完美的即时结果。此外,您可能有时会看到由于蒙皮造成的瞬间闪烁或毛刺,这是可以预料的。在运行时添加样式加载,并且结果的最终质量是任何人的猜测。您不一定能保证在运行时加载的样式将包含您可能希望包含的所有样式。你也不能保证在你的应用中静态包含一个,但至少静态包含的可以由你的QA团队(可能是你)来验证。

这里是最简单的入门步骤:真的只有第2步到第4步是必不可少的。

  1. 单击文件 - >新建 - > VCL Forms项目。

  2. 右键单击项目管理器窗格中的项目选项,然后单击属性。导航到应用程序 - >外观

  3. 单击自定义样式将其打开。 (Amakrits是我列表中的第一个,所以我会点击它)。

  4. 单击默认样式组合框并将其更改为默认值以外的值。

  5. 把东西放在你的窗体上,所以它不是空的。 (一个按钮,一个列表框等)。

  6. 运行您的应用程序。

enter image description here

现在,先进的东西:在运行时改变你的风格:

我用这个按钮,点击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; 
2

一个例子(公开程序)。请记住使用Vcl.Themes;

procedure TData.AllowSKIN(bSKIN:boolean); 
var 
    sSKIN:string; 
begin 
    sSKIN := 'Aqua Light Slate'; 
    if not bSKIN then sSKIN := 'Windows'; 
    TStyleManager.TrySetStyle(sSKIN); 
end;