vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#

https://www.vbarchiv.net
Rubrik: Grafik und Font · Grafische Effekte   |   VB-Versionen: VB4, VB5, VB622.12.04
Fortschrittsanzeige selbst gemacht

Eine Alternative zum ProgressBar-Control aus den Windows Common Controls - mit reinen Boardmitteln von VB.

Autor:   Bernd LucasBewertung:  Views:  26.728 
www.lucas-software.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Wenn man innerhalb seines Projektes die "Microsoft Windows Common Controls" nur für die Anzeige eines Fortschrittbalken verwendet, sollte man überlegen, ob man nicht auf diese Controls-Sammlung verzichtet, um so bspw. das Setup der Anwendung "kleiner" zu halten. Einen Fortschrittsbalken kann man nämlich auch mit reinen VB-Boardmitteln realisieren - ohne hierbei zusätzliche "externe" Controls verwenden zu müssen.

Hierzu benötigt man lediglich zwei übereinanderliegende Shape-Controls:

  • das 1. Shape-Control verwendet man für den "Rahmen" des Fortschrittbalkens
  • das 2. Shape-Control dient der Anzeige des Fortschrittbalkens innerhalb des Rahmens, dessen Breite prozentual zum 1. Shapes berechnet wird

Und so geht's:
Platzieren Sie auf die Form zwei Shape-Controls (Shape1 und Shape2). Die Größe des 1. Shapes legen Sie Ihren Wünschen entsprechend fest.
Alles weitere wird dann per Code erledigt.

Private Sub Form_Load()
  With Shape1
    ' Eigenschaften für Shape1 festlegen (Rahmen)
    .BackColor = vbWhite
    .BackStyle = 1
    .BorderStyle = 1
    .BorderColor = vbBlack
 
    ' Shape 2 korrekt positionieren
    Shape2.Move .Left, .Top, 0, .Height
  End With
 
  ' Eigenschaften des Fortschrittsbalken (Shape2) festlegen
  With Shape2
    .Visible = False
    .BackStyle = 1
    .BackColor = vbBlue
    .BorderStyle = 0  ' Transparent
  End With
End Sub
' Fortschrittsbalken anzeigen
Private Sub ShowProgress(ByVal nValue As Long, ByVal nMax As Long)
  Dim nWidth As Long
 
  If nMax > 0 Then
    ' Breite von Shape2 prozentual zur Breite von Shape2 berechnen
    With Shape1
      nWidth = (nValue / nMax) * .Width
 
      ' Sicher ist sicher :-)
      If nWidth > .Width Then nWidth = nWidth
    End With
 
    ' Fortschrittsbalken anzeigen
    With Shape2
      .Width = nWidth
      If Not .Visible Then .Visible = True
    End With
  End If
End Sub

Ein kleiner Test:
Platzieren Sie auf die Form zusätzlich noch einen Command-Button und fügen folgenden Code in den Codeteil der Form ein:

Option Explicit
 
' API-Deklaration für Warteschleife
Private Declare Sub Sleep Lib "kernel32" ( _
  ByVal dwMilliseconds As Long)
Private Sub Command1_Click()
  Dim i As Long
 
  ' Fortschrittsbalken...
  For i = 1 To 100
    ShowProgress i, 100
    Sleep 30
  Next i
End Sub



Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
 
Copyright ©2000-2024 vb@rchiv Dieter OtterAlle Rechte vorbehalten.


Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.