Rubrik: Controls · StatusBar/ProgressBar | VB-Versionen: VB4, VB5, VB6 | 22.10.02 |
Farbige ProgressBar Ein kleiner Trick - und die Farben der Standard-ProgressBar aus den Common Controls lassen sich beliebig festlegen. | ||
Autor: Steffen Stamprath | Bewertung: | Views: 29.085 |
www.bluedeveloper.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Die Standard ProgressBar aus der Window Common Controls-Sammlung ist zwar schön und gut, doch vermisst hier vielleicht manchmal die Möglichkeit die Farben (Balken und Hintergrund) individuell an das Programm anpassen zu können.
Dieses Manko lässt sich aber beheben - und zwar wieder einmal durch den Einsatz der SendMessage API-Funktion.
' Benötigte API-Deklarationen Private Declare Function SendMessage Lib "user32" _ Alias "SendMessageA" ( _ ByVal hWnd As Long, _ ByVal wMsg As Long, _ ByVal wParam As Long, _ ByVal lParam As Long) As Long
Im ersten Parameter wird das Window-Handle verlangt - also die hWnd-Eigenschaft der ProgressBar. Um die Vordergrundfarbe zu ändern (die Farbe der kleinen Balken) muss für den Parameter wMsg der Wert &H409 angegeben werden. wParam setzt man auf 0 und für lParam übergibt man der Funktion die gewünschte Farbe. Soll die Hintergrundfarbe der ProgressBar geändert werden, einfach wMsg = &H2001 festlegen.
Das ganze lässt verpackt in eine Prozedur sieht dann so aus:
' Farben der ProgressBar festlegen Private Sub SetProgressbarColor(ByVal hWnd As Long, _ ByVal nForeColor As Long, _ ByVal nBackColor As Long) ' neue Vordergrundfarbe SendMessage hWnd, &H409, 0&, nForeColor ' Neue Hintergrundfarbe SendMessage hWnd, &H2001, 0&, nBackColor End Sub
Beispiel:
Sie möchten, dass die ProgressBar grün mit weißem Hintergrund angezeigt werden soll? Kein Problem
SetProgressbarColor ProgressBar1.hWnd, _ vbGreen, vbWhite