![]() |
[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:
MDIFrame ist fsMDIForm und Neutral ist fsMDIChild
procedure TMDIFrame.FormCreate(Sender: TObject);
begin Neutral := TNeutral.Create(self); end; 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! |
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. |
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? |
Re: [MDI] Anderes Fenster gleich beim Start öffnen
Hat denn keiner eine Idee?
Soll ich noch Code posten? Ist kein Problem! |
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. |
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. |
Re: [MDI] Anderes Fenster gleich beim Start öffnen
Delphi-Quellcode:
Ich hoffe, das war jetzt deutlich.
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; ... |
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. |
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? |
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 18:40 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-2025 by Thomas Breitkreuz