![]() |
in Laufzeit Objakt hinzufügen
wie kann man während der laufzeit ein objekt in die form hinzufügen?
|
Re: in Laufzeit Objakt hinzufügen
keiner ne idee wie ich ein edit feld oder eine checkbox einfügen kann (kann ja auch bei oncreate geschehen)
|
Re: in Laufzeit Objakt hinzufügen
z.B. mit:
Delphi-Quellcode:
Var MeinEdit : TEdit;
procedure TForm1.FormCreate(Sender: TObject); begin MeinEdit := TEdit.Create(TForm1); end; procedure TForm1.FormDestroy(Sender: TObject); begin MeinEditFreeAndNil(MeinEdit); end; |
Re: in Laufzeit Objakt hinzufügen
könnt das so gehn:
Delphi-Quellcode:
var MyButton: TButton;
begin MyButton := TButton.Create(Form1); with MyButton do begin Parent := Form1; Height := 32; Width := 128; Caption := 'Neuer Button'; Left := 50; Top := 50; OnClick:=ButtonXClick; end; end; |
Re: in Laufzeit Objakt hinzufügen
wenn Du vorher irgendwo in dieser Unit
Delphi-Quellcode:
deklariert hast sollte das so gehen...
procedure TForm1.ButonXClick(Sender:TObject)
|
Re: in Laufzeit Objakt hinzufügen
Zitat:
Durch den Paramter Form1 in MeinEdit := TEdit.Create(Form1); wird das Formular zum Besitzer des Objektes/Komponente. In diesem Fall kümmert sich das Formular um die Freigabe. |
Re: in Laufzeit Objakt hinzufügen
Recht hast Du Jens, aber unser (Delphi-)junger Freund hier scheint mir auf dem besten Wege, selbst dynamisch Controls in eigenen Routinen/Komponenten zu erzeugen und dort spätestens tauchen die ersten Schutzverletzungen oder Speicherleaks auf. Daher @Remote1: Wenn der Owner mal kein Form, sondern eine Komponente von Dir sein sollte, dann immer im OnDestroy daran denken, die dynamisch erzeugten Objecte wieder freizugeben. :zwinker:
|
Re: in Laufzeit Objakt hinzufügen
ich hab jetz eigentlich nur noch ein paar kleine probleme:
und zwar ist das allen ziemlich langwierig (muss ne menge obj erstellen und das dauert) kann man das nicht irgendwie verschnellern bzw die obj verankern (werden bei mir auf registrierkarte erstellt und bei einem change sind die ja dann wieder weg --> deshalb hab ich bei onchange das ganze drin, damit die halt wieder erstellt werden) |
Re: in Laufzeit Objakt hinzufügen
¿?
(zeig mal 'n bischen Code...) |
Re: in Laufzeit Objakt hinzufügen
Delphi-Quellcode:
und das dann bei onchange (bzw extra procedure
procedure cedit(ort:tcomponent; par:twincontrol; jahr:string; x,y:integer);
var MyEdit: TEdit; begin MyEdit := TEdit.Create(ort); with MyEdit do begin Parent := par; Height := 21; Width := 33; Text := jahr; Left := x; Top := y; end; end;
Delphi-Quellcode:
aber nach dem erstellen will ich alle edit felder auch wieder auslesen und ich hab keine ahnung wie ich die ansprechen soll (edit1 geht ja wohl nicht)
for i:=1 to 5 do
cedit(Form2.PageControl1, Form2.PageControl1, inttostr(1872+i), 16,32+32*i); for i:=1 to 34 do cedit(Form2.PageControl1, Form2.PageControl1, inttostr(1884+i), 16,160+32*i); ach ja, das alles soll ne art datenbank werden ich les halt aus einer ini datensätze aus und dementsprechend werden dann die obj erstellt |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:49 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 by Thomas Breitkreuz