Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Stringgrid kopieren und in anderes einfügen untereinander (https://www.delphipraxis.net/182031-stringgrid-kopieren-und-anderes-einfuegen-untereinander.html)

klaus9 25. Sep 2014 08:56

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:
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;
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.
Wie bekomme ich dies hin ?

mkinzler 25. Sep 2014 09:03

AW: Stringgrid kopieren und in anderes einfügen untereinander
 
Mit StringGrid.Rows.Add kann man eine Zeile einfügen.

Headbucket 25. Sep 2014 09:27

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

klaus9 25. Sep 2014 09:44

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;

Jumpy 25. Sep 2014 09:52

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:
Form1.StringGrid2.ColCount:= Form1.StringGrid1.ColCount;
Form1.StringGrid2.RowCount := Form1.StringGrid1.RowCount;
Könnte werden zu:
Delphi-Quellcode:
Form1.StringGrid2.ColCount := Form1.StringGrid1.ColCount;
Form1.StringGrid2.RowCount := Form1.StringGrid2.RowCount + Form1.StringGrid1.RowCount;
dann musst du auch nix mit Add machen.

------------

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.

klaus9 25. Sep 2014 10:16

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

p80286 25. Sep 2014 10:55

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

klaus9 25. Sep 2014 10:57

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..

DeddyH 25. Sep 2014 11:07

AW: Stringgrid kopieren und in anderes einfügen untereinander
 
Aus dem Hut und ungetestet:
Delphi-Quellcode:
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;
Aufruf wäre dann:
Delphi-Quellcode:
AppendToStringGrid(StringGrid2, StringGrid1);

klaus9 25. Sep 2014 11:32

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 01:34 Uhr.
Seite 1 von 2  1 2      

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