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 Objekt kopieren (https://www.delphipraxis.net/37790-objekt-kopieren.html)

Lhid 10. Jan 2005 16:55


Objekt kopieren
 
Wie kann ich per Code, wenn ich ein objekt hab das kopieren, am besten beliebig oft...


Lhid

Dax 10. Jan 2005 16:56

Re: Objekt kopieren
 
Wenn dein Objekt von TPersistent abgeleitet ist, kannst du einfach ein neues Objekt dieser Klasse erstellen und die Daten mit Delphi-Referenz durchsuchenAssign kopieren.

Lhid 10. Jan 2005 17:02

Re: Objekt kopieren
 
wenn ich dumm fragen darf, woran sieht man das ein obbjekt von TPersistent abgeleitet ist?



Lhid

SirThornberry 10. Jan 2005 17:07

Re: Objekt kopieren
 
entweder durch die Hilfe (dort ist die Hirarchy ersichtlich) oder du prüfst es per quelltext
Delphi-Quellcode:
var LObj: TButton;
begin
  if LObj is TPersistent then
    showmessage('Ist davon abgeleitet');
end;

Lhid 10. Jan 2005 19:13

Re: Objekt kopieren
 
thx
Zitat:

Zitat von Dax
Wenn dein Objekt von TPersistent abgeleitet ist, kannst du einfach ein neues Objekt dieser Klasse erstellen und die Daten mit Delphi-Referenz durchsuchenAssign kopieren.

ja ne ich meinte jetzt aber per quellcode ein neues objekt, das von TPersistent abgeleitet ist zu erstellen.



Lhid

Shaman 11. Jan 2005 07:00

Re: Objekt kopieren
 
Hoi

Meinst Du das?
Delphi-Quellcode:
NewButton:= TButton.Create(Self)
Du musst aufpassen, Assign funktioniert nicht bei allen Nachfahren von TPersistent. Aber Du kannst dir eine Prozedur schreiben, welche die relevanten Eigenschaften kopiert.

Gruss
Shaman

Lhid 11. Jan 2005 13:06

Re: Objekt kopieren
 
Jep so ungefähr mein ich das...
Code:
NewButton:=
welche variable muss das haben oder wie mach ichs das es passt?

Lhid

rwachtel 11. Jan 2005 13:10

Re: Objekt kopieren
 
Zitat:

Zitat von Lhid
Jep so ungefähr mein ich das...
Code:
NewButton:=
welche variable muss das haben oder wie mach ichs das es passt?

:?:

Meinst Du, welchen Typ die Variable haben muss?

Delphi-Quellcode:
var
  NewButton: TButton;
begin
  NewButton := TButton.Create(Self);
end;

Shaman 11. Jan 2005 13:11

Re: Objekt kopieren
 
Delphi-Quellcode:
var
  NewButton: TButton;
Einfach vom selben Typ wie das Objekt, dass Du kopieren willst...
Aber eben, bei Buttons z.B. geht Assign schon nicht.

Gruss
Shaman

Lhid 11. Jan 2005 13:59

Re: Objekt kopieren
 
k. Ich versuch mal assign hinzubekommen *g*


Lhid

Lhid 11. Jan 2005 16:23

Re: Objekt kopieren
 
Also jetzt siehts so aus:
Code:
neuer.Assign(alter);
jedoch wird der alte dann unsichtbar und der andere hat auch nicht die gleichen eigenschaften...


Lhid

Lhid 15. Jan 2005 19:40

Re: Objekt kopieren
 
irgendwie müsste ich das neue Objekt noch von dem alten Objekt loslösen, hat dafür jemand ne idee? mit xyobjectxy.free; klappts nicht *g*



Lhid

Shaman 17. Jan 2005 07:02

Re: Objekt kopieren
 
Hoi

Kannst Du mal ein ein wenig mehr Code posten? Sofern es funktioniert, arbeitet Assign schon richtig und es muss nichts losgelöst werden.

Gruss
Shaman

Lhid 22. Jan 2005 20:09

Re: Objekt kopieren
 
sieht ungefähr so aus:
Delphi-Quellcode:
Tbutton2:=Tbutton2.Create(Self);
Tbutton2.Assign(tbutton1);


Lhid

Binärbaum 22. Jan 2005 20:38

Re: Objekt kopieren
 
Wenn schon, dann müsste der Code so lauten:
Delphi-Quellcode:
Button2:=TButton.Create(Self);
Button2.Assign(Button1);
Oder nicht?

MfG
Binärbaum

Lhid 26. Jan 2005 07:48

Re: Objekt kopieren
 
Jo klar, aber das löst trotzdem nicht mein prob...



Lhid

maximov 26. Jan 2005 11:03

Re: Objekt kopieren
 
Möglicherweise hilft es, wenn du dein problem ein biischen genauer beschreibst oder mehr code zeigst, denn zum kopieren der objekte benötigt man eigentlich nix weiter. Was dann das korrekte einfügen in den komponentenbaum angeht, so ist möglicherweise noch mehr nötig (owner und parent setzen etc.).

Man kann das klonen auch automatisch gestalten. Voraussetzung ist natürlich eine korrekte implementierung von AssignTo:

Delphi-Quellcode:
function ClonePersistent(const source:TPersitent):TPersisten;
begin
  result := source.classType.create;
  result.assign(source);
end;
Dann gäb es noch die möglichkeit über RTTI zu klonen, wobei nur published properties kopiert würden und somit ein eigenhängies definieren, jeder einzelnen kopieraktion, gesparrt wird.

Lhid 26. Jan 2005 11:25

Re: Objekt kopieren
 
Das ist ein Button der hin und her springt, und dann kopiert wird, allerdings klappt das loslössen vom alten Button nicht, also wenn ich sag button1.visible:= false, button2.visible:=true dann sind beide unsichtbar...


Lhid

maximov 27. Jan 2005 14:34

Re: Objekt kopieren
 
Zitat:

Zitat von Lhid
Das ist ein Button der hin und her springt, und dann kopiert wird, allerdings klappt das loslössen vom alten Button nicht, also wenn ich sag button1.visible:= false, button2.visible:=true dann sind beide unsichtbar...


Lhid

du sprichst in Rätseln! Woher sollen wir wissen woran es leigt, wenn du keine genauen information preisgibst :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 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