Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - TUpDown Komponente zur Laufzeit klonen
trm - Mi 18.04.12 13:44
Titel: TUpDown Komponente zur Laufzeit klonen
Laut einem Tipp auf SwissDelphichenter kann man diverse Controls/Komopnenten zur Laufzeit mittels Memorystream klonen.
http://www.swissdelphicenter.ch/de/showcode.php?id=785
Leider versagt diese Möglichkeit bei einem TUpDown. Es gibt immer einen Speicherfehler beim Lesen des Streams:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:
| if TabSheet_Setup_Dummy.Controls[x] is TUpDown then begin ms := TMemoryStream.Create; try Dummy_UpDown := TabSheet_Setup_Dummy.Controls[x] as TUpDown; s := TabSheet_Setup_Dummy.Controls[x].Name; TabSheet_Setup_Dummy.Controls[x].Name := ''; try ms.WriteComponent(Dummy_UpDown); ms.Position := 0; p_UpDown := TUpDown.Create(Self);
ms.ReadComponent(p_UpDown); begin p_UpDown.Name := 'zufallsname'; p_UpDown.Parent := Dummy_Sheet; end; finally Dummy_UpDown.Name := s; end; finally ms.Free; end; end; |
Mein Code ist ein wenig anders, da ich auf einem TabSheet alle Controls durchgehe und diese auf ein neues Tabsheet kopieren möchte.
Kann mir jemand helfen und sagen, warum das beim UpDown nicht geht ?
bummi - Mi 18.04.12 18:56
mit der Ergänzung vor Deinem Codeauszug
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| var x:Integer; ms:TMemoryStream; Dummy_UpDown,p_UpDown:TUpDown; s:String;
begin for x := 0 to TabSheet_Setup_Dummy.ControlCount -1 do |
läuft es bei mir mit XE ohne Fehler ....
trm - Mi 18.04.12 22:11
In einem neuen Project geht das tatsächlich.
Das Problem habe ich endlich gefunden: Das UpDown ist einem Edit zugeordnet.
Somit wird, wenn ControlCount durchlaufen wird, das Editfeld nicht auf dem neuen Parent nicht existiert und das UpDown zuerst kopiert wird, ein Fehler - zu Recht ausgegeben, da keine Assoziation bestehen kann.
Abhilfe schafft hier die Verknüpfung zu lösen und auf OnChange vom UpDown selbst zu reagieren und den Wert ins Editfeld einzutragen.
Wenn jeman eine Lösung kennt, wie die Assoziation beibehalten werden kann, lasst es mich doch bitte wissen :)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!