Rubrik: Controls · MSFlexGrid/DataGrid | VB-Versionen: VB4, VB5, VB6 | 19.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 Bajonczak | Bewertung: | Views: 12.516 |
ohne Homepage | System: 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