Jak zmienić kolor paska postępu komponentu klasy TProgressBar?
:|
procedure ChangeProgressColor(pb: TProgressbar; cl: TColor);
const
PBM_SETBARCOLOR = WM_USER+9;
begin
inherited;
SendMessage(pb.Handle, PBM_SETBARCOLOR, 0, cl);
end;
Na przykład:
ChangeProgressColor(ProgressBar1, clRed);
Wejdź na http://delphi.about.com
Aby nie zakładać identycznego tematu odkopuje ten...
Próbuje w Lazarusie zmienić kolor ProgressBar
oraz Calendar
.
W kalendarzu próbowałem:
Calendar1.Color:=clRed
oraz
Calendar1.Brush.Color:=clRed;
W obydwu przypadkach kolor zmienia się jedynie na ułamek sekundy przy zmianie miesiąca...
Co do ProgressBar
próbowałem:
ProgressBar1.Brush.Color: = clRed;
SendMessage (ProgressBar1.Handle, PBM_SETBARCOLOR, 0, clBlue);
Pasek jak był zielony tak jest ....
Możecie mi podpowiedzieć jak to prawidłowo zrobić?
Zdaje się że się nie da przy włączonych kompozycjach pulpitu
http://msdn.microsoft.com/en-us/library/windows/desktop/bb760838%28v=vs.85%29.aspx
Remarks napisał(a)
When visual styles are enabled, this message has no effect
I chyba nie ma innego sposoby poza zrobieniem własnego progressbara.
Dziękuję za odpowiedź i przepraszam za pomyłkę (nie zakładając nowego tematu).
Niestety za "cienki w uszach" jestem na tworzenie własnego ProgressBar'a póki co, więc muszę zadowolić się tym co jest...
@hipekk - ProgressBar jest na tyle nieskomplikowanym komponentem, że mógłbyś spokojnie samemu taki napisać, na podstawie np. klasy TControl czy TGraphicControl; W sieci jest sporo materiałów na temat tworzenia własnych komponentów - zobacz sobie i pokombinuj.
ColorProgress (autor: Wile64, strona na wiki lazarusa: http://wiki.freepascal.org/Wile64 , strona autora nie działa)
Wygląd:
Komponent:
colorprogress.zip