![]() |
Fomular mit Button zur Laufzeit erstellen
Hallo,
ich versuche ein Formular mit Button zur Laufzeit zu erstellen, ich bekomme aber das Form ohne Button.
Delphi-Quellcode:
dieses Formular wird auf FormMain mit einem Button Click aufgerufen
unit:Form2
... procedure TForm2.FormCreate(Sender: TObject); var button:TButton; begin button := TButton.create(self); button.left:=10; button.top:=10; button.width:=17; button.height:=17; button.Parent := self; end;
Delphi-Quellcode:
Was mache ich denn Falsch?
unit:TFormMain
.. procedure TFormMain.Btn1Click(Sender: TObject); var: Form: TForm2; begin Form:= TForm2.Create(self); Form.show; end; Danke. |
Re: Fomular mit Button zur Laufzeit erstellen
Wieso ist button eine lokale Variable?
|
Re: Fomular mit Button zur Laufzeit erstellen
In diesen Codezeilen ist eigentlich nichts falsch. Setz doch mal einen Haltepunkt in TForm2.FormCreate und schau, ob der Code überhaupt ausgeführt wird. Vielleicht fällt uns was auf, wenn du mal den kompletten Quellcode hochlädst.
|
Re: Fomular mit Button zur Laufzeit erstellen
OK, die wichtigsten Abzüge des Kodes , was das Problem betrifft sind wie folgt:
Der Aufruf im FormMain
Delphi-Quellcode:
Das Formular zum Aufrufen
var
FormMain: TFormMain; var FormArray :array of TVisualizeForm; implementation procedure TFormMain.StartBtnClick(Sender: TObject); var i:integer; begin for i := 0 to MBListBox.items.Count-1 do begin FormArray[i] := TVisualizeForm.Create(owner); FormArray[i].show; end;
Delphi-Quellcode:
Ich bin für jeden Tip Dankbar.type TVisualizeForm = class(TForm) procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var VisualizeForm: TVisualizeForm; var button:TButton; implementation {$R *.DFM} procedure TVisualizeForm.FormCreate(Sender: TObject); begin button := TButton.create(owner); button.left:=10; button.top:=10; button.width:=17; button.height:=17; button.Parent := self; //VisualizeForm; end; |
Re: Fomular mit Button zur Laufzeit erstellen
Delphi-Quellcode:
constructor TVisualizeForm.[s]Form[/s]Create(Sender: TObject);
begin inherited Create; ... end; |
Re: Fomular mit Button zur Laufzeit erstellen
Naja, wenn er das Create Ereigniss im OI zugewiesen und umbenannt hat, dann braucht er auch kein inherited Create ;)
|
Re: Fomular mit Button zur Laufzeit erstellen
Es wird aber in seinem Fall nicht aufgerufen.
|
Re: Fomular mit Button zur Laufzeit erstellen
Zitat:
Delphi-Quellcode:
Das Problem besteht leider immer noch.
constructor TVisualizeForm.FormCreate(Sender: TObject);
begin inherited Create(self); button := TButton.create(owner); button.left:=10; button.top:=10; button.width:=17; button.height:=17; button.Parent := self; //VisualizeForm; end; |
Re: Fomular mit Button zur Laufzeit erstellen
Hast Du mal einen Breakpoint in die Create-Procedure gesetzt und geschaut, ob der Debugger anhält?
|
Re: Fomular mit Button zur Laufzeit erstellen
Ja, habe ich eben grad , aber der Debugger hält gar nicht an.
Aber wieso denn? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:37 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