Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#13

Re: [NonVCL] Hintergundfarbe des TabSheets mit XP-Styles

  Alt 22. Sep 2006, 00:49
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.
Miniaturansicht angehängter Grafiken
project1_137.jpg  
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat