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

https://www.vbarchiv.net
Rubrik: Controls · MSFlexGrid/DataGrid   |   VB-Versionen: VB4, VB5, VB619.03.07
AutoSize für das MSFlexGrid-Control II

Hier wird gezeigt, wie man die Spaltenbreite des FlexGrid-Controls optimal an den Inhalt der Spalten anpassen kann - unter Berücksichtigung der evtl. vorhandenen Zellen-Formatierungen.

Autor:   Sascha BajonczakBewertung:  Views:  12.509 
ohne HomepageSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Bereits vor längerer Zeit haben wir Ihnen eine Möglichkeit aufgezeigt, wie man die Spaltenbreite des FlexGrid-Controls optimal an den Inhalt der Spalten anpassen kann.

Leider ist der Code nicht ganz ausgereift. da die Funktion nicht die - manchmal vorkommende - unterschiedliche Formatierung einzelner Zellen berücksichtigt.
Das Skript wurde daher ein klein wenig angepasst, so dass damit auch einzelne Zellformatierungen berücksichtigt werden.

Fügen Sie hierzu ein unsichtbares Label-Control auf die Form, auf der sich das MSFlexGrid-Control befindet und nennen das Label lblTemp.

Den nachfolgenden Code am besten in ein Modul packen, so dass man die Prozedur auch in anderen Formen verwenden kann.

' AutoSize für das MSFlexGrid-Control
Public Function Grid_AutoSize(oGrid As MSFlexGrid, oLabel As Label)
  Dim nRow As Long
  Dim nCol As Long
  Dim nWidth As Long
  Dim nMaxWidth As Long
 
  ' Setzen der Eigenschaften
  With oLabel
    ' Wichtig!
    .WordWrap = False
    .AutoSize = True
  End With
 
  ' Auswerten und Setzen der Grössen
  With oGrid
    For nCol = 0 To .Cols - 1
      nMaxWidth = 0 ' .ColWidth(nCol)
      .Col = nCol
      For nRow = 0 To .Rows - 1
        .Row = nRow
        ' Prüfen der Zellenformatierung und setzen der Eigenschaften für diese Zelle
        With oLabel.Font
          .Name = oGrid.CellFontName
          .Size = oGrid.CellFontSize
          .Bold = oGrid.CellFontBold
          .Italic = oGrid.CellFontItalic
          .Strikethrough = oGrid.CellFontStrikeThrough
          .Underline = oGrid.CellFontUnderline
        End With
        oLabel.Caption = .TextMatrix(nRow, nCol)
        nWidth = oLabel.Width
        If nWidth + 100 > nMaxWidth Then nMaxWidth = nWidth + 100
      Next nRow
 
      .ColWidth(nCol) = nMaxWidth
    Next nCol
  End With
End Function

Aufruf der Funktion:

Grid_AutoSize MSFlexGrid1, lblTemp



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.