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

https://www.vbarchiv.net
Rubrik: Controls · Sonstiges   |   VB-Versionen: VB631.10.06
Prozentuale Breitenermittlung (MSFlexGrid/StatusBar)

Mit diesem Code lassen sich die Panels der StatusBar bzw. die Spalten des MSFlexGrids prozentual zur Gesamtbreite des Controls festlegen.

Autor:   Dietrich HerrmannBewertung:  Views:  8.113 
ohne HomepageSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Die nachfolgende Funktion setzt anhand einer prozentualen Vorgabe die Breite der Panels einer Statusbar bzw. der Spalten eines MS-Flexgrids.
Die Prozentwerte werden der Funktion als String übergeben und durch ein Komma voneinander getrennt.

Die Funktion:

' Prozentuale Breitenermittlung der Panels einer Statusbar
' oder der Spalten eines FlexGrid
' clips: ein String mit der prozentualen Aufteilung von links beginnend
Public Sub setProzWidth(theCtrl As Control, clips As String)
  Dim proz() As String
  Dim i As Long
  Dim gl As Long
  Dim ra As Long
 
  ' Wenn keine Prozentangaben gemacht wurden...
  If Len(clips) = 0 Then Exit Sub
 
  ' Prozentsätze splitter
  proz = Split(clips, ",")
 
  gl = 0  ' aktuelle Gesamtbreite
  With theCtrl
    Select Case TypeName(theCtrl)
      Case "StatusBar"
        ' StatusBar
        ra = .Panels.Count - UBound(proz)
        For i = 1 To .Panels.Count
          If i > UBound(proz) Then Exit For
          .Panels(i).Width = .Width * Val(proz(i - 1)) / 100
          gl = gl + .Panels(i).Width
        Next i
        If gl < .Width Then
          For i = i To ra + 1
            .Panels(i).Width = (.Width - gl) / (ra - 1)
          Next i
        End If
 
      Case "MSFlexGrid"
        ' FlexGrid
        ra = .Cols - UBound(proz)
        For i = 0 To .Cols - 1
          If i > UBound(proz) Then Exit For
          .ColWidth(i) = .Width * Val(proz(i)) / 100
          gl = gl + .ColWidth(i)
        Next i
        If gl < .Width Then
          For i = i - 1 To ra
            .ColWidth(i) = (.Width - gl) / (ra - 1)
          Next i
        End If
    End Select
  End With
End Sub

Aufrufbeispiele:

setProzWidth StatusBar1, "20,30,60"

oder

setProzWidth FlexGrid1, "33,33,27"



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.