Sources
Delphi Russian Knowledge Base
DRKB - это самая большая и удобная в использовании база знаний по Дельфи в рунете, составленная Виталием Невзоровым

Не устанавливается цвет панели

01.01.2007
unit Unit1;

 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, XPMan;
 
type
  TForm1 = class(TForm)
    Panel1: TPanel;
    XPManifest: TXPManifest;
    procedure FormCreate(Sender: TObject);
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
uses
  Themes;
 
type
  TMyPanel = class(TPanel)
  public
    constructor Create(AOwner: TComponent); override;
  end;
 
{ TMyPanel }
 
constructor TMyPanel.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
 
  if ThemeServices.ThemesEnabled then
    ControlStyle := ControlStyle - [csParentBackground] + [csOpaque];
end;
 
procedure TForm1.FormCreate(Sender: TObject);
var
  R: TRect;
begin
  with TMyPanel.Create(Self) do
  begin
    Parent := Self;
    Color := clGreen;
    R := Panel1.BoundsRect;
    R.Left := R.Left + 300;
    R.Right := R.Right + 300;
    BoundsRect := R;
  end;
end;
 
end.

Автор: Smike

Взято из https://forum.sources.ru


Можно отключать стили XP и для отдельных контролов (темы должны быть включены и манифест лежать на форме):

 

unit Unit1;

 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtCtrls, StdCtrls, ComCtrls, XPMan;
 
 
type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    XPManifest1: TXPManifest;
    procedure FormCreate(Sender: TObject);
  private
    procedure Unload2Themes(var M:TMSG); message WM_USER+1;
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
 
function SetWindowTheme(hwnd: HWND; pszSubAppName: LPCWSTR; 
                        pszSubIdList: LPCWSTR): HRESULT; stdcall;  external 'uxtheme.dll';
 
 
procedure TForm1.Unload2Themes(var M: TMSG);
begin
  SetWindowTheme(Button4.Handle, ' ', ' ');
  SetWindowTheme(Button5.Handle, ' ', ' ');
  SetWindowTheme(Form1.Handle, ' ', ' ');
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
 PostMessage(Handle,WM_USER+1,0,0)
end;
 
end.

Автор: Krid

Взято из https://forum.sources.ru