Autor Beitrag
schaumermal
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 72



BeitragVerfasst: Di 27.10.09 13:39 
Hi,

kann mir jemand sagen warum ich bei dem folgenden Beispielprogramm, nachdem ich die Form2 erstellt habe (zeige Form2) , nicht daruf zugreifen kann (ändere Label in Form2).


Gruß
Einloggen, um Attachments anzusehen!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19336
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 27.10.09 14:20 
Auf die Schnelle (kanns grad nicht in Delphi laden) sehe ich nirgends, dass du Form2 irgendetwas zuweist. Also wie soll da das neu erzeugte Formular drin sein?
Da musst du schon die erzeugte Form in eine Variable legen und mit dieser Variable arbeiten.
schaumermal Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 72



BeitragVerfasst: Di 27.10.09 14:45 
Hi,

über den Button "zeige Form2" wird die Funktion
CreateFormFromName('Form2') aufgerufen.

Diese Funktion erstellt das Formular und zeigt dies auch an.
Das geht ohne Probleme. Allerdings der Zugriff über Form2.Label1.Caption:='Hallo Test' meldet einen Fehler.

Ich kann auch über die den Aufruf von
ausblenden Delphi-Quelltext
1:
2:
3:
4:
 for i := 0 to AnzPanel.ControlCount-1 do
  if (AnzPanel.Controls[I] is TForm) then
    if AnzPanel.Controls[I].Name='Form2' then
      bla bla bla


feststellen dass diese Form existiert.

Lediglich der Zugriff geht nicht.

Moderiert von user profile iconKlabautermann: Delphi-Tags hinzugefügt.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19336
Erhaltene Danke: 1751

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mi 28.10.09 00:11 
user profile iconschaumermal hat folgendes geschrieben Zum zitierten Posting springen:
Diese Funktion erstellt das Formular und zeigt dies auch an.
Das geht ohne Probleme. Allerdings der Zugriff über Form2.Label1.Caption:='Hallo Test' meldet einen Fehler.
Habe ich ja auch nicht gesagt, dass es nicht richtig erstellt würde. Aber du legst das Formular nun einmal gar nicht in Form2, also wie soll es da hinkommen? :gruebel:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
  f : TForm;
begin
  // Form erzeugen

  fc := TFormClass(FindClass('T'+FormName));
  f := fc.Create(Application);
Du legst das in die lokale Variable f, nicht in die globale Variable Form2. Demzufolge kannst du das Formular natürlich danach auch nicht in Form2 finden.

Das ist genauso als ob du eine Flasche (das Formular) in den Kühlschrank (die eine Variable) legst und dann versuchst sie aus dem Küchenschrank (der anderen Variable) wieder herauszuholen.
schaumermal Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 72



BeitragVerfasst: Fr 30.10.09 09:43 
Hi,

okay, da hats Du natürlich recht!

Kannst Du mir ggf. noch sagen, wie ich es schaffen könnte, wenn ich nur den Namen des Formulars übergebe (hier Form2) dieses auch zuweisen kann, damit der Aufruf klappt?