// Die Farbe einer TProgressBar wird geändert.

// Variante 1
// Getestet mit D4 unter XP

procedure ProgressbarBalkenFarbe(pgb: TProgressbar; f: TColor); 
begin 
  SendMessage(pgb.handle, $409, 0, f); 
end; 
 
procedure ProgressbarHintergrund(pgb: TProgressbar; f: TColor); 
begin 
  pgb.Brush.Color := f; 
  SendMessage(pgb.handle, $2001, 0, f); 
end; 
 
// Beispielaufruf 
procedure TForm1.Button1Click(Sender: TObject); 
begin 
  ProgressbarBalkenFarbe(Progressbar1, clyellow); 
  ProgressbarHintergrund(Progressbar1, clBlack); 
end;

 

// Variante 2
// Getestet mit D2010 unter W7

// Hier hat man nicht mehr sehr viele Möglichkeiten:

procedure ProgressbarBalkenFarbe(pgb: TProgressBar; f: Integer); 
begin 
  SendMessage(pgb.Handle, 1040, f, 0); 
end; 
 
// Beispiele 
 
procedure TForm2.FormCreate(Sender: TObject); 
begin 
  ProgressbarBalkenFarbe(ProgressBar2, 3);  // Pause - gelb 
  ProgressbarBalkenFarbe(ProgressBar3, 2);  // Fehler - rot 
end; 
 
procedure TForm2.Button1Click(Sender: TObject); 
begin 
  ProgressbarBalkenFarbe(ProgressBar1, 1);  // Normal - grün 
end;


// Es sei denn, man schaltet Windows-Theme ab. Dann sieht das
// aber nicht mehr so gut aus:

uses UxTheme; 
 
procedure TForm2.Button2Click(Sender: TObject); 
begin 
  with ProgressBar1 do 
  begin 
    SetWindowTheme(Handle, '', ''); 
    BackGroundColor := clSilver; 
    BarColor := clBlue; 
  end; 
end; 
 


Zugriffe seit 6.9.2001 auf Delphi-Ecke