// Ein Beispiel für das systemweite Ändern der Farbe von Fensterelementen.
// Es werden in diesem Code zur Verdeutlichung des Prinzips nur drei Farben
// geändert. Die Bezeichnung der Fensterelemente findet man in der
Win32.hlp
// unter GetSysColor.

// Getestet mit D4 unter WinME
// (Bei höheren Versionen funktionieren nicht mehr alle Elemente
//  wegen  Windows-Theme. Dann müsste man den jetzt auskommentierten
//  Code nutzen)
(* uses UxTheme; 
 
  procedure TForm2.FormActivate(Sender: TObject); 
  begin 
  SetWindowTheme(Handle, '', ''); 
  end; *) 
 
const 
  count = 3; 
 
var 
  NochNichtGespeichert: boolean = true; 
  OldColors: array [0 .. count - 1] of TColor; 
  DisplayElements: array [0 .. count - 1] of integer = ( 
    COLOR_BTNHIGHLIGHT, 
    COLOR_ACTIVECAPTION, 
    COLOR_WINDOW 
  ); 
  NewColors: array [0 .. count - 1] of TColor = ( 
    clRed, 
    clGreen, 
    clYellow 
  ); 
 
// Farben tauschen 
procedure TForm2.Button1Click(Sender: TObject); 
var 
  x: integer; 
begin 
  if NochNichtGespeichert then 
  begin 
    for x := 0 to count - 1 do 
      OldColors[x] := getsyscolor(DisplayElements[x]); 
    NochNichtGespeichert := false; 
  end; 
  setsyscolors(count, DisplayElements, NewColors); 
end; 
 
// alte Einstellung wieder herstellen 
procedure zurueck; 
begin 
  if NochNichtGespeichert then 
    exit; 
  setsyscolors(count, DisplayElements, OldColors); 
  NochNichtGespeichert := true; 
end; 
 
procedure TForm2.Button2Click(Sender: TObject); 
begin 
  zurueck; 
end; 
 
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction); 
begin 
  zurueck; 
end;



Zugriffe seit 6.9.2001 auf Delphi-Ecke