Controls in einer StatusBar anzeigen
Veröffentlicht am 19.08.2008 von Sebastian Krogolewski
In der StatusBar kann man so manche Informationen zum aktuellen Anwendungszustand Anzeigen, aber Standardmäßig leider nur Text. Viele der heutigen Anwendungen benutzen die Statusbar um den Fortschritt beim Laden oder Speichern von Daten anzuzeigen. Um das auch im eigenen Programm einbauen zu können braucht man nur die Win Api Funktion SetParent aus der user32.dll.
Einbinden der Win API Funktion SetParent als SetParent aus der User32.Dll.
1 2 | Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, _ ByVal hWndNewParent As Long) As Long |
SetParent erwartet 2 Parameter:
hWndChild: das Handle des Controls dessen Parent control geändert werden soll.
hWndNewParent: das Handle des Controls, welches als neues Eltern control gesetzt wird.
1 2 3 4 56 7 8 9 1011 12 13 14 | Public Sub ControlIntoStatusBar(ByVal uControl As Control, ByVal uStatusBar As Control, _ ByVal uPanelIndex As Integer) On Error Resume Next 'Statusbar als neuen Parent für das Control setzen Call SetParent(uControl.hWnd, uStatusBar.hWnd) 'Positionsangaben müssen teilweise an die verschiedenen Controls einzeln 'angepasst werden damit eine genaue Positionierung innerhalb eines Panels möglich ist uControl.Top = 50 uControl.Left = uStatusBar.Panels(uPanelIndex).Left uControl.Width = uStatusBar.Panels(uPanelIndex).Width uControl.Height = uStatusBar.Height - 80 End Sub |
Mit dieser Funktion kann man nicht nur eine ProgressBar sondern auch ein Text oder Command Control einfügen.
Hinweis:
Die Steuerelemente werden nur deswegen als Control übergeben, damit es egal ist von welchem Typen das einzufügende Steuerelement ist und ob man die StatusBar aus den Microsoft Common Controls 5 (ComCtl32.ocx) oder Microsoft Common Controls 6 (MSComCtl.ocx) verwendet.






