VCL Styles применяют скин ко всем приложениям VCL, но вы можете отключить стили VCL для определенного класса управления. Поэтому, если вы хотите отключить стили VCL для определенной формы, вы можете использовать функцию RegisterStyleHook
, передающую тип формы и класс TStyleHook
, который является пустым классом класса hook.
Эта строка кода отключит Стили 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 класса, проверьте статью Exploring Delphi XE2 – VCL Styles Part II.
AFAICT, с новыми 'Styles' это все или ничего. IOW, если вы используете 'Styles', они применяются к каждой отдельной форме в вашем приложении, и нет возможности выборочно включать/отключать их на основе каждой формы. –