Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi den Inhalt eines StringGrid in einem Memo speichern? (https://www.delphipraxis.net/107600-den-inhalt-eines-stringgrid-einem-memo-speichern.html)

Code 30. Jan 2008 14:41


den Inhalt eines StringGrid in einem Memo speichern?
 
Hallo

Wie kann man den Inhalt eine StringGrid in einem Memo speichern? Das StringGrid hat 7 Spalten und beliebig viele Zeilen.

Gruß
Klaus

s-off 30. Jan 2008 16:33

Re: den Inhalt eines StringGrid in einem Memo speichern?
 
Hallo,

man muss unterscheiden, ob man fixe Zeilen oder Spalten im Grid hat, und ob diese ggf. mit ins Memo übernommen werden sollen, oder nicht.

Ein Weg (kommasepariert, Zeile für Zeile) wäre bspw. folgender:
Delphi-Quellcode:
Procedure Grid2Memo(oGrid: TStringGrid; oMemo: TMemo; bFixedCells: Boolean = False);
Var
   i, j: Integer;
   sTemp: String;
Begin
   sTemp := '';

   //wenn fixe Zeilen oder Spalten
   If ((oGrid.FixedCols > 0) Or (oGrid.FixedRows > 0)) And Not bFixedCells Then Begin

      //Zelle für Zelle durchgehen und fixe Zellen ignorieren
      For i := oGrid.FixedRows To oGrid.RowCount - 1 Do Begin

         sTemp := '';
         For j := oGrid.FixedCols To oGrid.ColCount - 1 Do Begin
            sTemp := sTemp + IntToStr(j) + ':' + IntToStr(i) + ','
         End;

         //letzten Separator löschen
         Delete(sTemp, Length(sTemp), 1);

         //Zeile dem Memo hinzufügen
         oMemo.Lines.Add(sTemp);
      End;

      //keine fixen Spalten oder Zeilen oder wenn diese explizit mit übertragen werden sollen (bFixedCells)
   End Else Begin
      //Zeile für Zeile durchgehen
      For i := oGrid.FixedRows To oGrid.RowCount - 1 Do Begin

         //und komplett ans Memo übergeben (z.B. kommasepariert)
         oMemo.Lines.Add(oGrid.Rows[i].CommaText);
      End;
   End;
End;
Aufruf für Übertrag mit fixen Zeilen/Spalten (unabhängig davon, ob vorhanden oder nicht)
Delphi-Quellcode:
Procedure TForm1.Button1Click(Sender: TObject);
Begin
   Grid2Memo(StringGrid1, Memo1, True);
End;
Aufruf für Übertrag ohne fixe Zeilen/Spalten (unabhängig davon, ob vorhanden oder nicht)
Delphi-Quellcode:
Procedure TForm1.Button1Click(Sender: TObject);
Begin
   Grid2Memo(StringGrid1, Memo1, False); //'False' kann hier auch weggelassen werden, da Defaultwert
End;

Code 31. Jan 2008 13:09

Re: den Inhalt eines StringGrid in einem Memo speichern?
 
Zitat:

Zitat von s-off
Hallo,

man muss unterscheiden, ob man fixe Zeilen oder Spalten im Grid hat, und ob diese ggf. mit ins Memo übernommen werden sollen, oder nicht......

Hi.
Vielen Dank für Deine Mühe, klappt wunderbar. Hast Du auch sehr gut beschrieben.

Grüß
Klaus

PS. Sorry, konnte erst heute testen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz