![]() |
Objekt kopieren
Wie kann ich per Code, wenn ich ein objekt hab das kopieren, am besten beliebig oft...
Lhid |
Re: Objekt kopieren
Wenn dein Objekt von TPersistent abgeleitet ist, kannst du einfach ein neues Objekt dieser Klasse erstellen und die Daten mit
![]() |
Re: Objekt kopieren
wenn ich dumm fragen darf, woran sieht man das ein obbjekt von TPersistent abgeleitet ist?
Lhid |
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; |
Re: Objekt kopieren
thx
Zitat:
Lhid |
Re: Objekt kopieren
Hoi
Meinst Du das?
Delphi-Quellcode:
Du musst aufpassen, Assign funktioniert nicht bei allen Nachfahren von TPersistent. Aber Du kannst dir eine Prozedur schreiben, welche die relevanten Eigenschaften kopiert.
NewButton:= TButton.Create(Self)
Gruss Shaman |
Re: Objekt kopieren
Jep so ungefähr mein ich das...
Code:
welche variable muss das haben oder wie mach ichs das es passt?
NewButton:=
Lhid |
Re: Objekt kopieren
Zitat:
Meinst Du, welchen Typ die Variable haben muss?
Delphi-Quellcode:
var
NewButton: TButton; begin NewButton := TButton.Create(Self); end; |
Re: Objekt kopieren
Delphi-Quellcode:
Einfach vom selben Typ wie das Objekt, dass Du kopieren willst...
var
NewButton: TButton; Aber eben, bei Buttons z.B. geht Assign schon nicht. Gruss Shaman |
Re: Objekt kopieren
k. Ich versuch mal assign hinzubekommen *g*
Lhid |
Re: Objekt kopieren
Also jetzt siehts so aus:
Code:
jedoch wird der alte dann unsichtbar und der andere hat auch nicht die gleichen eigenschaften...
neuer.Assign(alter);
Lhid |
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 |
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 |
Re: Objekt kopieren
sieht ungefähr so aus:
Delphi-Quellcode:
Tbutton2:=Tbutton2.Create(Self);
Tbutton2.Assign(tbutton1); Lhid |
Re: Objekt kopieren
Wenn schon, dann müsste der Code so lauten:
Delphi-Quellcode:
Oder nicht?
Button2:=TButton.Create(Self);
Button2.Assign(Button1); MfG Binärbaum |
Re: Objekt kopieren
Jo klar, aber das löst trotzdem nicht mein prob...
Lhid |
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:
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.
function ClonePersistent(const source:TPersitent):TPersisten;
begin result := source.classType.create; result.assign(source); end; |
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 |
Re: Objekt kopieren
Zitat:
|
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