![]() |
Stringgrid kopieren und in anderes einfügen untereinander
Hallo,
ich möchte gerne alle Daten des StringGrid1 ins Stringgrid2 kopieren, dieses klappt über folgenden Code auch ganz gut.
Delphi-Quellcode:
Ich möchte jetzt aber gerne das wenn ich auf den Button klicke, er mir StringGrid1 im StringGrid2 unten an die vorhandenden Daten anhängt.
var
ndx : Integer; begin Form1.StringGrid2.ColCount:= Form1.StringGrid1.ColCount; Form1.StringGrid2.RowCount := Form1.StringGrid1.RowCount; for ndx := 0 to StringGrid1.RowCount +1 do begin Form1.StringGrid2.Rows[ndx] := Form1.StringGrid1.Rows[ndx]; end; end; Wie bekomme ich dies hin ? |
AW: Stringgrid kopieren und in anderes einfügen untereinander
Mit StringGrid.Rows.Add kann man eine Zeile einfügen.
|
AW: Stringgrid kopieren und in anderes einfügen untereinander
Du scheinst viel mit den Daten direkt aus dem Stringgrid zu arbeiten.
Hier solltest du eventuell nochmal deine Struktur überdenken, denn Anzeige und Speicherung der Daten sollte man nach Möglichkeit immer trennen. Ich empfehle dir also, die Daten z.B. in Stringlisten zu speichern. Hier erfolgt dann auch die ganze Verarbeitung. Am Ende der Verarbeitung rufst du einfach eine Funktion auf, die die beiden Stringgrids mit den aktuellen Daten füllt. Du wirst sehen: Es wird alles viel einfacher und übersichtlicher. Deine letzte Frage wurde ja schon beantwortet: Einfach über eine Schleife mit Add die Daten anfügen. Grüße |
AW: Stringgrid kopieren und in anderes einfügen untereinander
hmm irgendwie funktioniert es nicht so..
Delphi-Quellcode:
var
ndx : Integer; begin Form1.StringGrid2.ColCount:= Form1.StringGrid1.ColCount; Form1.StringGrid2.RowCount := Form1.StringGrid1.RowCount; for ndx := 0 to StringGrid1.RowCount +1 do begin Form1.StringGrid2.Rows[ndx].Add := Form1.StringGrid1.Rows[ndx]; end; end; |
AW: Stringgrid kopieren und in anderes einfügen untereinander
Den Part musst du weglassen oder ändern, damit du dir nicht immer alles wieder zurücksetzt:
Delphi-Quellcode:
Könnte werden zu:
Form1.StringGrid2.ColCount:= Form1.StringGrid1.ColCount;
Form1.StringGrid2.RowCount := Form1.StringGrid1.RowCount;
Delphi-Quellcode:
dann musst du auch nix mit Add machen.
Form1.StringGrid2.ColCount := Form1.StringGrid1.ColCount;
Form1.StringGrid2.RowCount := Form1.StringGrid2.RowCount + Form1.StringGrid1.RowCount; ------------ Oder du läßt es ganz weg (oder machst es nur 1x am Anfang) und machst dann nur die Schleife mit dem Add. ------------ Ausserdem würde ich das Form1. entweder weglassen oder durch self. ersetzen, da das sonst später Schwierigkeiten machen kann. |
AW: Stringgrid kopieren und in anderes einfügen untereinander
Hallo Ralph,
funktioniert nicht ganz so, er kopiert zwar jetzt die Werte aus Stringgrid1 und packt diese in Stringgrid2 rein, wenn ich dann die nächste Abfrage mache, fügt er mir nur eine leere tabelle dahinter. Gruß Klaus |
AW: Stringgrid kopieren und in anderes einfügen untereinander
Bist D wirklich sicher, daß das in Ordnung ist?
StringGrid2.Rows[ndx].Add := Form1.StringGrid1.Rows[ndx]; Gruß K-H |
AW: Stringgrid kopieren und in anderes einfügen untereinander
Hallo K+H,
nee das funktioniert leider nicht :-( Irgendwie bekomme ich es einfach nicht hin aus einem Stringgrid1, dessen Daten in Stringgrid2 zu bewegen und wenn ich nochmal klicke das dann alles weitere angefügt wird im Stringgrid2.. |
AW: Stringgrid kopieren und in anderes einfügen untereinander
Aus dem Hut und ungetestet:
Delphi-Quellcode:
Aufruf wäre dann:
procedure AppendToStringGrid(const Source, Destination: TStringGrid);
var Line: integer; begin Assert(Assigned(Source) and Assigned(Destination), 'Beide StringGrids müssen gültige Instanzen sein'); for Line := Source.FixedRows to Source.RowCount - 1 do begin Destination.RowCount := Destination.RowCount + 1; Destination.Rows[Destination.RowCount - 1].Assign(Source.Rows[Line]); end; end;
Delphi-Quellcode:
AppendToStringGrid(StringGrid2, StringGrid1);
|
AW: Stringgrid kopieren und in anderes einfügen untereinander
Hallo Deddy,
vielen Dank, der Source funktioniert schon fast perfekt, habe nur ein Problem die Reihen habe ich jetzt korrekt aber die Zellen werden nicht übertragen.. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:43 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