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 Form wird nicht gefunden (https://www.delphipraxis.net/88885-form-wird-nicht-gefunden.html)

MrDevil 22. Mär 2007 15:36


Form wird nicht gefunden
 
Ich erzeuge zur Laufzeit eine Form wie folgt;

Delphi-Quellcode:
m1_form := Tm1_form.create(m1_form);
Dann suche ich nach dieser wie folgt;

Delphi-Quellcode:
procedure Ttb_form.Button1Click(Sender: TObject);
var
  AForm: TForm;
begin
  AForm := TForm(Application.FindComponent('m1_form'));

  if AForm = nil then
  ShowMessage('Nicht gefunden!');
end;

Aber leider finde ich die Form nicht. Wichtig ist das an der art des findens nichts geändert werden darf!

Bernhard Geyer 22. Mär 2007 15:41

Re: Form wird nicht gefunden
 
Wenn Du willst das das Formular in der Application-Forms-Auflistung zu finden ist mußt du es auch dort erstellen:

Delphi-Quellcode:
Application.CreateForm(Tm1_form, m1_form);

mkinzler 22. Mär 2007 15:42

Re: Form wird nicht gefunden
 
Du kannst auch nicht nach der Bezeichnung der Referenzvariable sondern nur nach dem Namen der Form suchen:
Delphi-Quellcode:
m1_form := Tm1_form.create(Application);
m1_form.Name := 'm1_form');
[Edit:Zitiert ohne genau zu Lesen. Sich selbst als Owner geht natürlich nicht]

MrDevil 22. Mär 2007 15:44

Re: Form wird nicht gefunden
 
Ich nahm die Zeile

Delphi-Quellcode:
Application.CreateForm(Tm1_form, m1_form);
aus der DPR raus, da ich mit der hauptform wäredn des create auf ide Form zugreife und es so immer Zugrifsverletzungen gab.

also schrieb ich in der create der hauptForm
Delphi-Quellcode:
m1_form := Tm1_form.create(m1_form);
das funzte nämlich...

wenn ich in der Create der Hauptform
Delphi-Quellcode:
Application.CreateForm(Tm1_form, m1_form);
schreibe wird nur die Form "m1_form" angezeigt die Hauptform nicht

SirThornberry 22. Mär 2007 15:47

Re: Form wird nicht gefunden
 
das hier macht keinen Sinn:
Delphi-Quellcode:
m1_form := Tm1_form.create(m1_form);
Warum übergibst du m1_form als Owner wenn du es ja gerade erst erstellst und es somit zu dem Zeitpunkt unbestimmt ist?
Im besten Fall ist m1_form zu diesem Zeitpunkt nil und somit kann man auch gleich:
Delphi-Quellcode:
m1_form := Tm1_form.create(nil);
schreiben.

MrDevil 22. Mär 2007 15:51

Re: Form wird nicht gefunden
 
Zitat:

Zitat von SirThornberry
das hier macht keinen Sinn:
Delphi-Quellcode:
m1_form := Tm1_form.create(m1_form);
Warum übergibst du m1_form als Owner wenn du es ja gerade erst erstellst und es somit zu dem Zeitpunkt unbestimmt ist?
Im besten Fall ist m1_form zu diesem Zeitpunkt nil und somit kann man auch gleich:
Delphi-Quellcode:
m1_form := Tm1_form.create(nil);
schreiben.

Ok das habe ich geändert - ändert aber nichts an der suche nach der Form

SirThornberry 22. Mär 2007 15:57

Re: Form wird nicht gefunden
 
du musst das von "Bernhard Geyer" und "mkinzler" kombinieren. Mit Application.FindComponent findest du nur die Forms welche als Owner Application bekommen haben.
Also entweder so:
Delphi-Quellcode:
m1_form := Tm1_form.create(Application);
m1_form.Name := 'm1_form';
oder
Delphi-Quellcode:
Application.CreateForm(Tm1_form, m1_form);
m1_form.Name := 'm1_form';

MrDevil 22. Mär 2007 16:05

Re: Form wird nicht gefunden
 
Zitat:

Zitat von SirThornberry
du musst das von "Bernhard Geyer" und "mkinzler" kombinieren. Mit Application.FindComponent findest du nur die Forms welche als Owner Application bekommen haben.
Also entweder so:
Delphi-Quellcode:
m1_form := Tm1_form.create(Application);
m1_form.Name := 'm1_form';
oder
Delphi-Quellcode:
Application.CreateForm(Tm1_form, m1_form);
m1_form.Name := 'm1_form';

Ok danke und jetzt habe ich es auch begriffen! :wall:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:48 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz