Jak zmienić kolor paska w ProgressBar?

0

Jak zmienić kolor paska postępu komponentu klasy TProgressBar?
:|

0
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);
0

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ć?

1

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.

0

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...

0

@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.

1

ColorProgress (autor: Wile64, strona na wiki lazarusa: http://wiki.freepascal.org/Wile64 , strona autora nie działa)
Wygląd:
colorprogress.png

Komponent:
colorprogress.zip

1 użytkowników online, w tym zalogowanych: 0, gości: 1