vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Suche Visual-Basic Code
Re: Ich erbitte eine Antwort 
Autor: Tolwyn
Datum: 07.09.01 09:45

Hallo,

Da gibt es erstmal 2 Ansätze.
1. Du nimmst Dir eine Standard ProgressBar und plazierst eine TextBox mittig darüber. In dieser TextBox kannst Du dann eine Prozentzahl ausgeben. Nachteil ist das bei einer Textbox zwar der Rahmen entfernt werden kann, nicht jedoch der Hintergrund Transparent.
2. Mit der Fortschrittsanzeige mit VB-Boardmitteln kann der gleiche Effekt mit einem Label erzeugt werden.

Ich habe diesen Tipp mal etwas ungemünzt und eine ProgressBar als UserControl nachgebaut.

Anleitung:
1. Füge Deinem Projekt ein neues Benutzersteuerelement hinzu.
2. Setze die BorderStyle Eigenschaft des Controls auf 1 – Fest Einfach
3. Plaziere 2 Label darauf. Die Namen müssen „lblProgress“ und „lblProzent“ lauten.
4. Setzte die Indexeigenschaft von „lblProgress“ auf 0.
5. Beschrifte das Label „lblProzent“ mit 100 % und passe die Größe des Labels genau an die Schrift an.
(Positionen der Label sind egal.)
6. Kopiere Dir den unten stehenden Code in das UserControl und probiere es auf einem Form aus

Option Explicit
 
Private mlMin               As Long
Private mlMax               As Long
Private mlValue             As Long
Private mlStep              As Long
Private mlLoaded            As Long
Private mlLastValue         As Long
 
Private mbWithLabel         As Boolean
Private mbPLabelBold        As Boolean
 
Private mlWidth             As Long
Private mlHeight            As Long
 
Private Sub UserControl_InitProperties()
  mlMin = 0
  mlMax = 1
  mlValue = 0
  mlStep = 10
  mbWithLabel = False
End Sub
 
Private Sub UserControl_Initialize()
  mlLoaded = 0
  mlLastValue = 0
End Sub
 
Private Sub UserControl_Resize()
 
  mlWidth = 300
  mlStep = UserControl.ScaleWidth / mlWidth + 1
  mlHeight = UserControl.ScaleHeight - 10
  lblProzent.Left = (UserControl.ScaleWidth / 2) - lblProzent.Width / 2
  lblProzent.Top = (UserControl.ScaleHeight / 2) - lblProzent.Height / 2
 
  lblProgress(0).Left = 0
  lblProgress(0).Top = 0
  lblProgress(0).Height = UserControl.Height
  lblProgress(0).Width = UserControl.Width
  lblProgress(0).Visible = False
End Sub
 
Private Sub UserControl_ReadProperties(PropBag As PropertyBag)
  mlMin = PropBag.ReadProperty("Min", mlMin)
  mlMax = PropBag.ReadProperty("Max", mlMax)
  mlValue = PropBag.ReadProperty("Value", mlValue)
  Me.ShowPLabel = PropBag.ReadProperty("ShowPLabel", mbWithLabel)
  Me.PLabelBold = PropBag.ReadProperty("PLabelBold", mbPLabelBold)
  Call UserControl_Resize
End Sub
 
Private Sub UserControl_WriteProperties(PropBag As PropertyBag)
  PropBag.WriteProperty "Min", mlMin, 0
  PropBag.WriteProperty "Max", mlMax, 1
  PropBag.WriteProperty "Value", mlValue, 0
  PropBag.WriteProperty "ShowPLabel", mbWithLabel, False
  PropBag.WriteProperty "PLabelBold", mbPLabelBold, False
End Sub
 
Public Property Get Min() As Long
  Min = mlMin
End Property
Public Property Let Min(lNew As Long)
  If lNew >= 0 And lNew < mlMax Then
    mlMin = lNew
  End If
End Property
 
Public Property Get Max() As Long
  Max = mlMax
End Property
Public Property Let Max(lNew As Long)
  If lNew > 0 And lNew > mlMin Then
    mlMax = lNew
  Else
    mlMax = mlMin + 1
  End If
  mlValue = 0
  Call UserControl_Resize
End Property
 
Public Property Get Value() As Long
  Value = mlValue
End Property
Public Property Let Value(lNew As Long)
  If lNew >= mlMin And lNew <= mlMax Then
    mlValue = lNew
    Call DisplayStb
  End If
End Property
 
Public Property Get ShowPLabel() As Boolean
  ShowPLabel = mbWithLabel
End Property
Public Property Let ShowPLabel(bNew As Boolean)
  mbWithLabel = bNew
  lblProzent.Visible = mbWithLabel
End Property
 
Public Property Get PLabelBold() As Boolean
  PLabelBold = mbPLabelBold
End Property
Public Property Let PLabelBold(bNew As Boolean)
  mbPLabelBold = bNew
  lblProzent.Font.Bold = mbPLabelBold
End Property
 
Private Function DisplayStb()
  Dim bLoad         As Boolean
  Dim lUpTo         As Long
  Dim lCount        As Long
  Dim lPos          As Long
  ' Den Fortschritt anzeigen
  bLoad = False
  lPos = mlValue / mlMax * 100
  If mbWithLabel Then lblProzent.Caption = lPos & " %"
  lPos = lPos / (mlMax / mlStep)
  If lPos = mlLastValue Then Exit Function
  mlLastValue = lPos
  If lPos > mlLoaded Then
    ' Das betreffende Label ist noch nicht geladen
    lUpTo = lPos
  Else
    ' Das betreffende Label ist bereits geladen
    lUpTo = mlLoaded
  End If
 
  For lCount = 1 To lUpTo
    ' Laden des nächsten Labels
    If lblProgress.Count < lCount + 1 Then
      ' Label muss geladen werden
      Load lblProgress(lCount)
      mlLoaded = lCount
    End If
    With lblProgress(lCount)
      .Left = IIf(lCount = 1, 0, ((lCount - 1) * mlWidth))
      .Top = 5
      .Height = mlHeight
      .Width = mlWidth
      ' Die Farbe des Balkens
      .BackColor = &HFF8080
    End With
    If lCount <= lPos Then
      lblProgress(lCount).Visible = True
    Else
      ' Alle Labels, die größer als das aktuelle Value sind
      ' ausblenden
      For lPos = lCount To lblProgress.Count - 1
        If Not lblProgress(lPos).Visible Then Exit For
        lblProgress(lPos).Visible = False
      Next lPos
      Exit For
    End If
  Next lCount
End Function
Gruß
Tolwyn
PS. Ein weiterer Ausbau des UserControls ist sicherlich noch möglich, aber ich will Dir ja nicht alle Arbeit abnehmen
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Installationsleiste95Major PP04.09.01 15:24
Ich erbitte eine Antwort66Major PP05.09.01 16:16
Re: Ich erbitte eine Antwort341unbekannt05.09.01 20:41
Re: Ich erbitte eine Antwort65Major PP06.09.01 12:24
Re: Ich erbitte eine Antwort82Tolwyn07.09.01 09:45

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2025 vb@rchiv Dieter Otter
Alle 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.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel