Не устанавливается цвет панели
Материал из DRKB
Не устанавливается цвет панели[править | править код]
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.
Author: Smike
Source: Взято из http://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.
Author: Krid
Source: Взято из http://forum.sources.ru
ID: 00590