Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi StringGrid1:=StringGrid2? (https://www.delphipraxis.net/56352-stringgrid1-%3Dstringgrid2.html)

Angel4585 4. Nov 2005 13:45


StringGrid1:=StringGrid2?
 
Warum geht der Code
Delphi-Quellcode:
StringGrid1:=StringGrid2;
nicht?

habe eine Komponente auf dem Formular und eine Variable vom Typ TStringGrid.

Jetzt will ich dden Inhalt der Variable in die Komponente kopieren, allerdings geht das scheinbar nicht so einfach.

Aenogym 4. Nov 2005 13:49

Re: StringGrid1:=StringGrid2?
 
hi,

mit dem code kopierst du lediglich eine referenz auf die objekte.
versuchs mal mit

Delphi-Quellcode:
stringGrid1.items.assign(StringGrid2.items);
ich bin mir jetzt nicht ganz sicher, ob die daten des stringgrids in der property items gespeichert werden. aber so sollte es gehen.

aenogym

Angel4585 4. Nov 2005 13:52

Re: StringGrid1:=StringGrid2?
 
Items gibbet bei Stringrids leider nicht

Und einfach StringGrid1.Assign(StringGrid2);

gibbet zwar aber
funzt au net

TeronG 4. Nov 2005 13:56

Re: StringGrid1:=StringGrid2?
 
mach doch einfach na kleine FOR-Schleife in ner FOR-Schleife und schon haste den Inhalt kopier :mrgreen:

Aenogym 4. Nov 2005 14:00

Re: StringGrid1:=StringGrid2?
 
hm... in welcher property wurden denn gleich die einträge gespeichert? diese sollte man ja assignen können.

jetzt isses mir wieder eingefallen: cells[]
da ist assign() leider nicht möglich. ergo funktioniert das:

Delphi-Quellcode:
var x, y: integer;
begin
  stringGrid1.clear();
 
  for x:=0 to stringGrid2.colCount-1 do
  begin
    for y:=0 to stringGrid2.rowCount-1 do
    begin
      //bei folgender zeile könnte es auch sein, dass die zelen andersrum indiziert sind.
      //sollte es also nicht klappen, einfach mal x und y in beiden cells-angaben vertauschen ;)
      stringGrid1.cells[x, y] := stringGrid2.cells[x, y];
    end;
  end;
end;
aenogym

@teron: so ich hab mir jetz die arbeit gemacht und schicks trotzdem ab :)

Angel4585 4. Nov 2005 14:02

Re: StringGrid1:=StringGrid2?
 
Ja aber es sollten wenn möglich alle Spaltenbreiten usw. übernommen werden können und das is v.Hd. bissl "mühsam"(Programmierer sind faul) :mrgreen:

Edit:
@aenogym : das geht au besser :

Delphi-Quellcode:
procedure Grid_anzeigen(Grid : TStringGrid);
var
 i : integer;
begin
with StringGrid1 do
 begin
 RowCount:=Grid.RowCount;
 for i:= 0 to Pred(Grid.RowCount) do
  Rows[i].Assign(Grid.Rows[i]);
//Und damit hab ich die Spaltenbreite
 for i:= 0 to Pred(Grid.ColCount) do
  ColWidths[i]:=Grid.ColWidths[i];

 end;
end;
Jo funzt perfekt danke nochmal
:angel:

Aenogym 4. Nov 2005 14:11

Re: StringGrid1:=StringGrid2?
 
geht doch :mrgreen:
(dass man row und col direkt ansprechen kann, hab ich doch glatt vergessen^^)

TeronG 4. Nov 2005 14:22

Re: StringGrid1:=StringGrid2?
 
Zitat:

Zitat von Aenogym
(dass man row und col direkt ansprechen kann, hab ich doch glatt vergessen^^)

:gruebel: ach ja ... da war doch was ^^


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:29 Uhr.

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