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 Ein TForm in eine Variable kopieren (https://www.delphipraxis.net/66473-ein-tform-eine-variable-kopieren.html)

Karstadt 30. Mär 2006 07:27


Ein TForm in eine Variable kopieren
 
Hallo. Ich habe ein Formular den ich aus einen bestimmten Grund im Programm an zwei stellen benutzen mus: So gehe ich vor:

Delphi-Quellcode:
  var neueform : TForm;
begin
  neueform := Tf_ag.create(Self);
  with neueform do
  begin
    FormStyle := fsNormal;
    Visible := False;
    Height := 560;
    Width := 750;
    Showmodal;
    Free;
  end;
end;
Das Problem ist, das ich in f_ag eine Funktion deklariert habe die ich in neueform aufrufen muss:

neueform.Suche;

Das geht aber nicht, undefenierter bezeichner. Warum?

TBx 30. Mär 2006 07:30

Re: Ein TForm in eine Variable kopieren
 
Hallo Karstadt!

Dein Problem liegt hier:

Delphi-Quellcode:
var neueform : TForm;
Du gibst hier als Typ TForm an. Richtig wäre es, den Typ Deiner Form anzugeben, dieser ist sicherlich von TForm abgeleitet.
Dann kannst DU auch alle Methoden der Form benutzen.

Gruß

onlinekater

Karstadt 30. Mär 2006 07:43

Re: Ein TForm in eine Variable kopieren
 
Delphi-Quellcode:
var neueform : Tf_ag;
begin
  neueform := neueform.create(Self);
  with neueform do
  begin
    FormStyle := fsNormal;
    Visible := False;
    Height := 560;
    Width := 750;
    Showmodal;
    Free;
  end;
Nun habe ich aber eine FMeldung:
Komponente mit dieser Bezeichnung existiert bereits

Angel4585 30. Mär 2006 07:45

Re: Ein TForm in eine Variable kopieren
 
Delphi-Quellcode:
 var neueform : Tf_ag;
begin
  neueform := Tf_ag.create(Self); //Hier war ein Fehler
  with neueform do
  begin
    FormStyle := fsNormal;
    Visible := False;
    Height := 560;
    Width := 750;
    Showmodal;
    Free;
  end;
oder hast du einfach ne zweite Variable deklariert, die "neueform" heisst?

Karstadt 30. Mär 2006 07:52

Re: Ein TForm in eine Variable kopieren
 
Das funktioniert. Nun habe ich eine weiter frage.

Beim Starten kommt ein Fenster was nach 1 Sekunde verschwindert und dann kommt das eigentliche Fenster. Was kann das sein?

Angel4585 30. Mär 2006 07:56

Re: Ein TForm in eine Variable kopieren
 
Geh mal auf "Ansicht -> Units" und öffne die Unit die so heisst wie das Projekt und schau dir die mal durch, such nach einem Formular, das vor dem eigentlichen Fenster erzeugt wird.

Karstadt 30. Mär 2006 08:12

Re: Ein TForm in eine Variable kopieren
 
Kann das sein das dieses Verhalten deswegen auftritt, weil das Fenster was ich in die Varialbe übergebe FormStyle : fsMDIChild hat

TBx 30. Mär 2006 08:44

Re: Ein TForm in eine Variable kopieren
 
Wenn das Form, auf dem Du neueform generierst ein MDIForm ist, ist das durchaus möglich.
Du kannst neueform ja mal auf nil oder über Application.CreateForm generieren.

Gruß

Thomas

Karstadt 30. Mär 2006 09:54

Re: Ein TForm in eine Variable kopieren
 
Delphi-Quellcode:
var neueform : Tf_ag;
begin
  neueform := Tf_ag.create(Self); //Hier war ein Fehler
  //Das Form f_ag ist ein MDI Form das soll ich nun als Modal aufrufen
  with neueform do
  begin
    FormStyle := fsNormal;
    Visible := False;
    Height := 560;
    Width := 750;
    Showmodal;
    Free;
  end;
Zitat:

Du kannst neueform ja mal auf nil oder über Application.CreateForm generieren.
Wie meinst du das?

Karstadt 30. Mär 2006 09:54

Re: Ein TForm in eine Variable kopieren
 
Zitat:

Geh mal auf "Ansicht -> Units" und öffne die Unit die so heisst wie das Projekt und schau dir die mal durch, such nach einem Formular, das vor dem eigentlichen Fenster erzeugt wird.
Was genau würde das bringen?

Angel4585 30. Mär 2006 09:57

Re: Ein TForm in eine Variable kopieren
 
du könntest die Reihenfolge verändern oder das was gezeigt wird nicht erzeugen lassen, was dazu führen würde das es nicht gezeigt wird.

Karstadt 30. Mär 2006 10:02

Re: Ein TForm in eine Variable kopieren
 
Zitat:

du könntest die Reihenfolge verändern oder das was gezeigt wird nicht erzeugen lassen, was dazu führen würde das es nicht gezeigt wird.
Das neue Fenster wird doch Created zur Laufzeit, und die Projekt Unit wird beim Starten angesprochen und nich mehr. Oder sehe ich das Falsch?

TBx 30. Mär 2006 10:21

Re: Ein TForm in eine Variable kopieren
 
Zitat:

Zitat:

Du kannst neueform ja mal auf nil oder über Application.CreateForm generieren.



Wie meinst du das?
Ich gehe davon aus, das sich das Self in folgendem Code auf Deine MainForm bezieht:

Delphi-Quellcode:
neueform := Tf_ag.create(Self);
Weiter gehe ich davon aus, dasß dieses hier durch Self angesprochenen Form ein MDI-Form ist.
Somit wird dann das neueform als MDI-Child des durch Self angesprochenen Forms generiert.

Dann änderst Du den Style des neueform in fsNormal, machst es unsichtbar und holst es dann durch showmodal wieder hervor.

Du kö nntest stattdessen folgendes versuchen:

Delphi-Quellcode:
with Tf_ag.create (nil) do
begin
  visible := False;
  FormStyle := fsNormal;
  Height := 560;
  Width := 750;
  ShowModal;
  Free;
end;
Hope it helps

Thomas

Karstadt 30. Mär 2006 11:25

Re: Ein TForm in eine Variable kopieren
 
Hallo. Das klappt auch nicht. Schade.

Wenn ich zuhause bin, erstelle ich ein Beispiel und lade das hoch, vielleicht wird die Sache dadurch verständlicher :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:21 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