VB 5/6-Tipp 0593: Progressbar in Statusbar anzeigen
von Simon Taddiken
Beschreibung
Wer Office kennt, kennt auch die kleine, unscheinbare Progressbar auf der Statusleiste, die angezeigt wird, solange ein z.B. Dokument gespeichert wird. In VB gibt es die Statusbar und die Progressbar. Und - zum Glück - die SetParent Function der User32.dll. Aus diesen 3 Dingen lassen sich die Office Effekte leicht nachbauen.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '------------- Anfang Projektdatei Project1.vbp ------------- ' Die Komponente 'Microsoft Windows Common Controls 5.0 (SP2) (COMCTL32.OCX)' wird benötigt. '--------- Anfang Formular "Form1" alias Form1.frm --------- ' Steuerelement: Schaltfläche "Command1" ' Steuerelement: Fortschrittsanzeige "ProgressBar1" ' Steuerelement: Erweiterte Statusbar "StatusBar1" ' Steuerelement: Timersteuerelement "Timer1" ' Steuerelement: Beschriftungsfeld "Label1" 'Dieser Code zeigt wie sie ganz einfach eine ProgressBar in eine StatusBar 'einsetzen können, so wie beim IE wenn er eine Seite Lädt. 'Copyright by Simon Taddiken 'Simon-Taddiken@gmx.de Option Explicit 'API Deklaration um die ProgressBarBar in die StatusBar zu setzen Private Declare Function SetParent Lib "user32" ( _ ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long Private Sub Command1_Click() 'Den Panel der ProgressBar sichtbar machen StatusBar1.Panels(2).Visible = True 'Die ProgresBar sichtbar machen ProgressBar1.Visible = True 'Den Timer starten Timer1.Enabled = True End Sub Private Sub Form_Load() StatusBar1.Panels(3).Text = "Progressbar in Statusbar Beispiel" End Sub 'Damit unsere ProgressBar auch immer richtig positioniert wird Private Sub Form_Resize() With ProgressBar1 'Die Progressbar in die Statusbar setzen Call SetParent(.hWnd, StatusBar1.hWnd) .Top = 60 .Left = StatusBar1.Panels(2).Left .Width = StatusBar1.Panels(2).Width .Height = StatusBar1.Height - 90 End With End Sub 'Um die ProgressBar zu Füllen Private Sub Timer1_Timer() ProgressBar1.Value = ProgressBar1.Value + 1 'Wenn ProgressBar voll ist dann If ProgressBar1.Value >= 100 Then 'den Panel der ProgressBar unsichtbar machen StatusBar1.Panels(2).Visible = False 'die Progressbar unsichtbar machen ProgressBar1.Visible = False 'die Progressbar auf 0 zurücksetzen ProgressBar1.Value = 0 'den Timer ausmachen Timer1.Enabled = False End If End Sub '---------- Ende Formular "Form1" alias Form1.frm ---------- '-------------- Ende Projektdatei Project1.vbp --------------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 2 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von Levis am 21.06.2005 um 16:23
Super Tipp! Danke!
Aber wieso funktioniert er (laut Angabe oben) nicht unter Win98? Was passiert da? Absturz durch Fehler?
Kommentar von Lars Blumberg am 07.07.2003 um 12:12
Dieser Code funktioniert nicht in MDI-Formularen, weil sich die ProgressBar nicht frei ausrichten lässt, obwohl sie in die StatusBar eingebunden wird.