Ichhabe das gerade mit der
VCL ausprobiert und ein TPageControl mit TTabSheets genommen. Da scheint das aber nicht zu funktionieren.
Mein Code:
Delphi-Quellcode:
type
TEnableThemeDialogTexture = function(wnd: HWND; dwFlags: dword): HRESULT; stdcall;
const
ETDT_ENABLE = $00000002;
ETDT_USETABTEXTURE = $00000004;
var
Form1: TForm1;
implementation
{$R *.dfm}
function LoadThemeDLL(wnd: hWnd; dwFlags: DWord): Boolean;
var
EnableThemeDlgText: TEnableThemeDialogTexture;
hThemeDll : THandle;
DllResult : HRESULT;
begin
Result := False;
hThemeDll := LoadLibrary('uxtheme.dll');
if hThemeDll <> 0 then
begin
@EnableThemeDlgText := GetProcAddress(hThemeDll, 'EnableThemeDialogTexture');
if @EnableThemeDlgText <> nil then
begin
DllResult := EnableThemeDlgText(wnd, dwFlags);
Result := DllResult = S_OK;
end;
FreeLibrary(hThemeDll);
end;
end;
Delphi-Quellcode:
procedure TForm1.EnableTabTheme;
var
i: Integer;
TabSheet: TTabSheet;
hTab: THandle;
begin
for i := 0 to Form1.ComponentCount - 1 do
begin
TabSheet := FindComponent('TabSheet' + IntToStr(i)) as TTabSheet;
if Assigned(TabSheet) then
begin
hTab := TabSheet.Handle;
if not LoadThemeDLL(hTab, ETDT_ENABLE or ETDT_USETABTEXTURE) then
ShowMessage(SysErrorMessage(GetLastError));
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
EnableTabTheme;
end;
Ein Manifets liegt im Anwendungsverzeichnis. Aber egal, ob ich EnableTabTheme; aufrufe oder nicht, ich sehe nur einen Rand um die Tabsheet. Im XP Usermanager funktioniert es prächtig. Siehe Anhang.