Стили VCL применяют обложку ко всем приложениям VCL, но вы можете отключить Стили VCL для определенного класса управления. Поэтому, если вы хотите отключить стили VCL для конкретной формы, вы можете использовать функцию RegisterStyleHook
, передающую тип формы, и класс TStyleHook
, который является пустым классом ловушек стиля.
Эта строка кода отключит стили VCL во всех формах типа TFormChild:
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;
и теперь вы можете отключить VCL Стили TButton этой формы, а также с этим кодом
TStyleManager.Engine.RegisterStyleHook(uChild.TButton, TStyleHook);
Если вам нужна дополнительная информация об использовании класса TStyleHook, ознакомьтесь со статьей Изучение Delphi XE2 - VCL Styles Part II .