// 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;
|