VCL 样式将皮肤应用于所有 VCL 应用程序,但您可以禁用特定控件类的 VCL 样式。因此,如果您想禁用特定表单的 VCL 样式,您可以使用 RegisterStyleHook 函数传递表单的类型和 TStyleHook 类,这是一个空的样式挂钩类。
这行代码将禁用 TFormChild 类型的所有表单中的 VCL 样式:
TStyleManager.Engine.RegisterStyleHook(TFormChild, TStyleHook);
现在,如果您运行此代码,表单的所有控件,TFormChild 仍将使用 VCL 样式进行绘制,因此要解决此问题,您必须使用这样的技巧禁用表单所有控件的默认样式挂钩
unit uChild;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TButton = class(Vcl.StdCtrls.TButton); //This declaration is only for disabling the TButton of this form
TFormChild = class(TForm)
Button1: TButton;
private
{ Private declarations }
public
{ Public declarations }
end;
现在您也可以使用此代码禁用此表单的 TButton 的 VCL 样式
TStyleManager.Engine.RegisterStyleHook(uChild.TButton, TStyleHook);
如果您想了解有关 TStyleHook 类使用的更多信息,请查看文章Exploring Delphi XE2 – VCL Styles Part II。