Rubrik: Controls | VB-Versionen: VB2005, VB2008, VB2010 | 05.04.12 |
Progressbar in den Ampelfarben einfärben Hier wird gezeigt, wie mittels "SendMessage" die Progressbar in den Ampelfarben (ROT,GELB,GRÜN) eingefärbt werden kann. | ||
Autor: Dierk | Bewertung: | Views: 10.140 |
ohne Homepage | System: WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Das Einfärben einer ProgressBar in den Ampelfarben (rot, gelb und grün) kann, wie im Beispiel, dazu genutzt werden, um die Auslastung eines Laufwerks farbig darzustellen.
' API-Deklaration Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" ( _ ByVal hwnd As IntPtr, _ ByVal uMsg As Integer, _ ByVal wParam As Integer, _ ByVal lParam As Integer) As Integer ' Enum der Farben für die Progressbar Public Enum PBarColor Gruen = 1 Rot = 2 Gelb = 3 End Enum ''' <summary> ''' Setzt die Farbe der Progressbarsbar ''' </summary> ''' <param name="PBar">Die Progessbar, deren Farbe gesetzt werden soll</param> ''' <param name="Color">Farbe der gewählten Progressbar</param> ''' <returns>True or False</returns> Function SetPBarColor(ByVal PBar As ProgressBar, ByVal Color As PBarColor) As Boolean Try SendMessage(PBar.Handle, 1040, CInt(Color), 0) Return True Catch ex As Exception Return False End Try End Function
Beispielaufruf:
' So kann man z.b den Freien Speicherplatz eines Laufwerks in Prozent anzeigen ' und je nach Auslastung einfärben ' Dazu holen wir und´s erstmal die Infos zum Laufwerk Dim d As New System.IO.DriveInfo("C:\") ' Da wir Prozentual anzeigen, ist das Max 100 ProgressBar1.Maximum = 100 ' Den Freien Speicher in Prozent berechnen Dim proz As Integer = d.TotalFreeSpace / d.TotalSize * 100 ' Die Anzeige der Progressbar setzen ProgressBar1.Value = ProgressBar1.Maximum - proz ' jetzt können wir beliebig nach Auslastung des Laufwerks die Farbe setzen If proz > 0 And proz < 10 Then ' hier wäre jetzt alles zwischen 0 - 10% freier Speicher "ROT" SetPBarColor(ProgressBar1, PBarColor.Rot) ElseIf proz > 10 And proz < 15 Then ' zwischen 10 und 15% wäre es "GELB" SetPBarColor(ProgressBar1, PBarColor.Gelb) Else ' andernfalls grün SetPBarColor(ProgressBar1, PBarColor.Gruen) End If