Rubrik: Controls · MSFlexGrid/DataGrid | VB-Versionen: VB4, VB5, VB6 | 10.10.03 |
AutoSize für das MSFlexGrid-Control Diesmal zeigen wir Ihnen eine Möglichkeit, wie man die Spaltenbreite des FlexGrid-Controls optimal an den Inhalt der Spalten anpassen kann. | ||
Autor: Sascha Bajonczak | Bewertung: | Views: 26.284 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Diesmal zeigen wir Ihnen eine Möglichkeit, wie man die Spaltenbreite des FlexGrid-Controls optimal an den Inhalt der Spalten anpassen kann.
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 With .Font .Name = oGrid.Font.Name .Size = oGrid.Font.Size .Bold = oGrid.Font.Bold .Italic = oGrid.Font.Italic .Strikethrough = oGrid.Font.Strikethrough .Underline = oGrid.Font.Underline End With ' Wichtig! .WordWrap = False .AutoSize = True End With ' Auswerten und Setzen der Grössen With oGrid For nCol = .FixedCols To .Cols - 1 nMaxWidth = 0 For nRow = .FixedRows To .Rows - 1 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