MSFlexGrid, Inhalt speichern

Hallo,
Ich habe ein FlexGrid welches immer die gleiche anzahl mit Zeilen aber eine Variable anzahl von Spalten hat. Nun würde ich diesen Inhalt gern in ein Textfile speichern. gibt es da einen Befehl wie Flexgrid.save oder muss ich das ganze zeilenweise in eine txt schreiben ?

mfg jonny

Hallo jonny,

Ich habe ein FlexGrid welches immer die gleiche anzahl mit
Zeilen aber eine Variable anzahl von Spalten hat. Nun würde
ich diesen Inhalt gern in ein Textfile speichern. gibt es da
einen Befehl wie Flexgrid.save

nein.

oder muss ich das ganze zeilenweise in eine txt schreiben ?

Ja, Handarbeit. :smile:

Gruß Rainer

sehr gut,

Kann ich ein FlexGrid direkt zeilenweise auslesen ?
if not EOF +1?

mfg jonny

Hi jonny,

Kann ich ein FlexGrid direkt zeilenweise auslesen ?
if not EOF +1?

nein, das Flexgrid ist doch kein File.

Das könnte etwa so aussehen:

Private Sub Command1\_Click()
 Dim Datei As String, ff As Integer
 Dim r As Long, c As Long, Zl As String

 ff = FreeFile
 CommonDialog1.ShowSave

 Open CommonDialog1.FileName For Output As #ff
 Print #ff, MSFlexGrid1.Rows
 Print #ff, MSFlexGrid1.Cols
 For r = 1 To MSFlexGrid1.Rows - 1
 Zl = ""
 For c = 0 To MSFlexGrid1.Cols - 1
 Zl = Zl + MSFlexGrid1.TextMatrix(r, c) + "|"
 Next
 Print #ff, Zl
 Next
 Close #ff
End Sub

Private Sub Command2\_Click()
 Dim Datei As String, ff As Integer
 Dim r As Long, c As Long, Zl As String, Feld() As String

 ff = FreeFile
 CommonDialog1.ShowOpen

 Open CommonDialog1.FileName For Input As #ff
 Input #ff, r
 Input #ff, c
 MSFlexGrid1.Rows = r
 MSFlexGrid1.Cols = c
 For r = 1 To MSFlexGrid1.Rows - 1
 Input #ff, Zl
 Feld = Split(Zl, "|")
 For c = 0 To MSFlexGrid1.Cols - 1
 MSFlexGrid1.TextMatrix(r, c) = Feld(c)
 Next
 Next
 Close #ff
End Sub

Gruß Rainer

Hallo Joe.

Um eine Schleife zu sparen, kannst Du den Inhalt des Flexgrids auch mit dessen Clip-Eigenschaft auslesen. Diese Eigenschaft enthält immer den Inhalt des momentan markierten Bereichs und ist vom Datentyp String.

Ein kleiner (unvollständiger) Beispielcode:

Dim Inhalt as String
With MSFlexGrid1
 .Redraw = False
 .Row = .FixedRows
 .Col = .FixedCols
 .RowSel = .Rows - 1
 .ColSel = .Cols - 1
 Inhalt = .Clip
 .Redraw = True
End With

Dann, wie bei Rainers Beispiel, die Anzahl der Spalten, die Anzahl der Zeilen und den Inhalt von „Inhalt“ in die Datei schreiben.

Viele Grüße
Carsten

Hi Carsten,

Um eine Schleife zu sparen, kannst Du den Inhalt des Flexgrids
auch mit dessen Clip-Eigenschaft auslesen.

super! Danke!

Gruß Rainer