Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi [MDI] Anderes Fenster gleich beim Start öffnen (https://www.delphipraxis.net/85342-%5Bmdi%5D-anderes-fenster-gleich-beim-start-oeffnen.html)

MarvinM 29. Jan 2007 15:44


[MDI] Anderes Fenster gleich beim Start öffnen
 
Hallo zusammen!

Ich habe ein MDI Form in diesem will ich direkt beim Start eine MDIChild aufrufen.

Delphi-Quellcode:
procedure TMDIFrame.FormCreate(Sender: TObject);
begin
  Neutral := TNeutral.Create(self);
end;
MDIFrame ist fsMDIForm und Neutral ist fsMDIChild

Wenn ich nun das Programm starte kommt eine Fehlermeldung, die besagt, dass das Formular nicht erstellt werden konnte, weil zur Zeit keine MDI-Formulare aktiv sind.

Wenn ich das ganze Procedure in ein Button.OnClick verlagere geht es.

Das in .Loaded zu verschieben bringt auch nichts :-(

Danke schonmal für eure Antworten!

Sidorion 29. Jan 2007 16:04

Re: [MDI] Anderes Fenster gleich beim Start öffnen
 
Benutze einen kleinen Trick:
Du führst einen Member FFirstShow ein, den Du im Constructor auf true setzt. Im FormShow prüfst Du, ob der Member gesetzt ist und wenn ja, erstellst Du das Childfenster und setzt den Member auf false.

MarvinM 29. Jan 2007 16:05

Re: [MDI] Anderes Fenster gleich beim Start öffnen
 
Danke für deine Antwort!

Aber was ist ein Member und wie deklariere ich das?

//EDIT: Ja alles klar, aber wenn das nicht true sein sollte, dann wird doch mein Fenster nicht aufgerufen, oder?

MarvinM 1. Feb 2007 14:09

Re: [MDI] Anderes Fenster gleich beim Start öffnen
 
Hat denn keiner eine Idee?

Soll ich noch Code posten? Ist kein Problem!

SirThornberry 1. Feb 2007 15:29

Re: [MDI] Anderes Fenster gleich beim Start öffnen
 
im OnCreate existiert das ganze einfach noch nicht. Und mit Member ist eine Variable gemeint die zu einer Klasse gehört (im private, public, protected etc. definiert). Es ging bei der Idee also darum beim ersten OnShow das MDI-Child zu erstellen.
Letztendlich musst du einfach nur sicherstellen dass, das Create des ersten Forms abgeschlossen ist.

MarvinM 1. Feb 2007 15:41

Re: [MDI] Anderes Fenster gleich beim Start öffnen
 
Hallo,

Wie kann ich denn sicherstellen, dass das Create des Forms abgeschlossen ist?
Den Code in OnShow zu kopieren bringt nichts.

Ich kann auch nicht eine Abfrage einbauen, die das Öffnen des Unterformulars verhindert, da ich das Unterformular brauche.

Sidorion 1. Feb 2007 15:50

Re: [MDI] Anderes Fenster gleich beim Start öffnen
 
Delphi-Quellcode:
TMyForm=Class(TForm)
 private
  ...
  FFirstShow: Boolean;
 protected
  ...
  Procedure DoShow; Override;
 public
  ...
  Constructor Create(AOwner: TComponent); Override;
 end;

...
Implementation
...
Constructor TMyForm.Create(AOwner: TComponent);
Begin
  Inherited;
  FFirstShow:=True;
End;
...
Procedure TmyForm.DoShow;
Begin
  Inherited;
  If FFirstShow
  Then begin
    Neutral:=TNeutral.Create(Self);
    Neutral.Show;
    FFirstShow:=False;
  End;
End;
...
Ich hoffe, das war jetzt deutlich.

MarvinM 1. Feb 2007 16:01

Re: [MDI] Anderes Fenster gleich beim Start öffnen
 
Danke für deine Antwort.

Ja war es, aber diese Methode bringt auch nicht den gewünschten Effekt, es kommt immernoch die Fehlermeldung, dass zur Zeit kein MDI-Formular aktiv seie.

MarvinM 2. Feb 2007 16:35

Re: [MDI] Anderes Fenster gleich beim Start öffnen
 
Muss ich den Code vielleicht in ein anderes Ereignis schreiben (OnShow etc.) ?

Oder muss ich doch einen Timer machen, der den Code nach 5 sekunden ausführt? Das würde ich ungerne machen, weil es is ja nicht so praktisch...

Gibt es da einen Weg oder bin ich auf verlorenem Posten?

Andreas H. 2. Feb 2007 16:58

Re: [MDI] Anderes Fenster gleich beim Start öffnen
 
Hm,

warum stellst Du in den Projektoptionen nicht ein, dass das Formular automatisch erzeugt werden soll? :gruebel:

Gruß Andreas


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:55 Uhr.
Seite 1 von 2  1 2      

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