Rubrik: Controls · MSFlexGrid/DataGrid | VB-Versionen: VB4, VB5, VB6 | 12.02.04 |
Spaltenbreiten im FlexGrid speichern und wiederherstellen Zwei nützliche Prozeduren, um die Spaltenbreiten im FlexGrid-Control zu speichern und wiederherzustellen. | ||
Autor: Dieter Otter | Bewertung: | Views: 12.808 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Das FlexGrid-Control ist eines der Controls, das aufgrund seiner Flexibilität oft innerhalb des eigenen Programms verwendet wird. U.a. lässt sich auch über die AllowUserResizing-Eigenschaft festlegen, dass der Anwender die Spaltenbreiten verändern kann.
Leider wird die vom Anwender vorgenommene Spaltenbreiten-Anpassung nicht automatisch wieder bei einem erneuten Programmstart berücksichtigt. Genauso wenig existiert ein Befehl, mit der sich eine die Spaltenbreiten speichern und wiederherstellen lassen.
Mit dem nachfolgenden Code gehört dieses Problem der Vergangenheit an. Ab sofort lassen sich die Spaltenbreiten eines FlexGrid-Controls mit einem einzigen Prozeduraufruf speichern und bei Bedarf jederzeit wiederherstellen. Die Informationen selbst wird hierbei in der Windows-Registry "abgelegt".
Speichern der Spaltenbreiten eines FlexGrid-Controls
' Spaltenbreiten speichern SaveSetting "myApplication", "FlexGrid", _ "ColWidth", fGridGetColumnsWidth(MSFlexGrid1)
Wiederherstellen der Spaltenbreiten
' Spaltenbreiten wiederherstellen fGridSetColumnsWidth MSFlexGrid1, _ GetSetting("myApplication", "FlexGrid", "ColWidth")
Und hier noch die beiden Prozeduren, die die Hauptaufgabe erledigen. Am besten Sie "packen" den nachfolgenden Code in ein Modul, so dass die Routinen im gesamten Projekt genutzt werden können.
' FlexGrid-Spaltenbreiten ermitteln Public Function fGridGetColumnsWidth(oFlexGrid As MSFlexGrid) As String Dim sTemp As String Dim i As Long With oFlexGrid For i = 0 To .Cols - 1 sTemp = sTemp & CStr(.ColWidth(i)) & "|" Next i End With fGridGetColumnsWidth = sTemp End Function
' Spaltenbreiten wiederherstellen Public Sub fGridSetColumnsWidth(oFlexGrid As MSFlexGrid, _ ByVal sColumnsWidth As String) Dim i As Long Dim sData() As String If sColumnsWidth <> "" Then sData = Split(sColumnsWidth, "|") With oFlexGrid For i = 0 To UBound(sData) If i > .Cols - 1 Then Exit For .ColWidth(i) = Val(sData(i)) Next i End With End If End Sub