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

https://www.vbarchiv.net
Rubrik: Controls · MSFlexGrid/DataGrid   |   VB-Versionen: VB4, VB5, VB618.02.02
MSFlexGrid-Inhalt speichern

Eine Prozedur zum Speichern des Inhaltes eines FlexGrid-Controls - mit oder ohne Zeilen-/Spaltenbezeichner.

Autor:   Dieter OtterBewertung:  Views:  15.669 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 Beispielprojekt auf CD 

Mit nachfolgender Prozedur lässt sich der Inhalt eines FlexGrid-Controls in eine Datei speichern. Als Trennzeichen der einzelnen Spalteninhalte wird das Tabulator-Zeichen verwendet. Jede Zeile im Grid wird als solche auch in der Textdatei "abgelegt". Optional kann angegeben werden, ob die FixedRows und FixedCols - Zellen ebenfalls gespeichert werden, oder nicht.

' Inhalt eines FlexGrid-Controls speichern
' sFilename: Dateiname inkl. vollständigen Pfad
' SaveFixesRowCols: True, wenn Texte der FixedRows
'   und FixedCols-Zellen gespeichert werden soll
' ===================================================
Public Sub FlexGrid_SaveToFile(Grid As MSFlexGrid, _
  ByVal sFilename As String, _
  Optional ByVal SaveFixedRowCols As Boolean = True)
 
  Dim F As Integer
  Dim lRow As Long
  Dim lCol As Long
  Dim lRowStart As Long
  Dim lColStart As Long
 
  ' Datei für das Speichern der Daten öffnen
  F = FreeFile
  Open sFilename For Output As #F
 
  With Grid
    ' Startzeile / Spalte
    lRowStart = IIf(SaveFixedRowCols, 0, .FixedRows)
    lColStart = IIf(SaveFixedRowCols, 0, .FixedCols)
 
    For lRow = lRowStart To .Rows - 1
      ' Spalten speichern - Trennzeichen "vbTab"
      For lCol = lColStart To .Cols - 1
        Print #F, .TextMatrix(lRow, lCol);
        If lCol < .Cols-1 Then Print #F, vbTab;
      Next lCol
      Print #F, ""
    Next lRow
  End With
 
  ' Datei schliessen
  Close #F
End Sub

Aufruf:

Dim sDataFile As String
 
sDataFile = App.Path & "\Grid.dat"
FlexGrid_SaveToFile MSFlexGrid1, sDataFile, True

Und das Gegenstück zum Speichern...
Wie man den Inhalt wieder einlesen kann, zeigt Ihnen folgende Proezdur:

' Inhalt eines FlexGrid-Controls einlesen
' sFilename: Dateiname inkl. vollständigen Pfad
' SaveFixesRowCols: True, wenn Texte der FixedRows
'   und FixedCols-Zellen eingelesen werden soll
' ===================================================
Private Sub FlexGrid_LoadFromFile(Grid As MSFlexGrid, _
  ByVal sFilename As String, _
  Optional ByVal SaveFixedRowCols As Boolean = True)
 
  Dim F As Integer
  Dim lRow As Long
  Dim lCol As Long
  Dim lRowStart As Long
  Dim lColStart As Long
  Dim sLine As String
  Dim sCols() As String
 
  ' Existiert die Datei überhaupt?
  If Dir(sFilename, vbNormal) <> "" Then
    ' Datei für das Lesen der Daten öffnen
    F = FreeFile
    Open sFilename For Input As #F
 
    With Grid
      ' Startzeile / Spalte
      lRowStart = IIf(SaveFixedRowCols, 0, .FixedRows)
      lColStart = IIf(SaveFixedRowCols, 0, .FixedCols)
 
      ' Textdatei zeilenweise einlesen
      lRow = lRowStart
      While Not EOF(F)
        Line Input #F, sLine
        If sLine <> "" Then
          ' Zeile in einzelne Spalten zerlegen
          sCols = Split(sLine, vbTab)
          If UBound(sCols) < .Cols Then _
            ReDim Preserve sCols(.Cols)
 
          ' Spalteninhalt ins Grid übertragen
          For lCol = lColStart To .Cols - 1
            .TextMatrix(lRow, lCol) = sCols(lCol)
          Next lCol
 
          lRow = lRow + 1
        End If
      Wend
    End With
 
    ' Datei schliessen
    Close #F
  End If
End Sub

Aufruf:

Dim sDataFile As String
 
sDataFile = App.Path & "\Grid.dat"
FlexGrid_LoadFromFile MSFlexGrid1, sDataFile, True



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.