Ответ 1
Стили 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 Part II.