![]() |
Modales MDIChild
Hallo, momentan wachsen mir gerade wieder einmal graue Haare...
Was mach' ich falsch? ich erzeuge zur Laufzeit ein fsMDIChild
Delphi-Quellcode:
Bei ShowModal erhalte ich den Fehler:
Form3:=TForm3.Create(Self);
Form3.ShowModal; EInvalidOperation: "Cannot make a visible window modal" Hmm. Visible? Ich seh nix. Form3.Visible im Objektinspektor ist ausserdem eh' false... Na gut, dann setzt ich es halt vorher auf false:
Delphi-Quellcode:
Haha, der war gut, jetzt kommt:
Form3:=TForm3.Create(Self);
Form3.Visible:=false; Form3.ShowModal; EInvalidOperation: "Cannot hide an MDI child form" :gruebel: Also, das muss doch irgendwie gehen, oder? Mit Form3.Show funktioniert's... Hat ev. jemand eine Idee? |
Re: Modales MDIChild
Hmm, hab' gerade folgendes gemerkt: Sobald ich im Objektinspektor FormStyle=fsMDIChild setze, springt auch Visible auf true!
D.h., ein MDIChild ist anscheinend prinzipiell visible... Aber das muss doch irgendwie gehen, dass ich es modal anzeige, oder nicht? |
Re: Modales MDIChild
Hallo,
was macht es denn für einen Sinn, ein MDI-Child modal aufzuschalten? Die Funktionen wie kaskadieren oder Fenster anordnen lassen sich doch sowieso nicht mehr bedienen, wenn ein modales Formular geöffnet ist. MfG Klaus |
Re: Modales MDIChild
Der Sinn sei mal dahingestellt. Ich soll nur das Userinterface mit Delphi so nachprogrammieren, wie es jetzt ist...
|
Re: Modales MDIChild
Zitat:
|
Re: Modales MDIChild
In meinem Projekt habe ich auch die Notwendigkeit, ein MDI-Child unter Umständen mal modal anzuzeigen. Konkreter: Es ist ein Such-Fenster. Wenn ich normal suche ist es ein MDI-Child, wenn ich für einen Wert einen Datensatz suche ist es ein modales Fenster.
Lösung bei mir:
Delphi-Quellcode:
Und dann entsprechend vorher setModal aufrufen und entweder .show oder .showmodal
procedure TvSucheAngebot.setModal(modal: boolean);
begin inherited; if modal then begin formStyle := fsNormal; caption := 'Angebot zuweisen'; BorderIcons := BorderIcons - [biSystemMenu]; visible := false; end else begin formStyle := fsMDIChild; caption := 'Angebote suchen'; BorderIcons := BorderIcons + [biSystemMenu]; visible := true; end; end; Das könnte man sicher noch eleganter lösen, aber so funktionierts bei mir. |
Re: Modales MDIChild
Aber dann hast Du doch
entweder - ein modales, normales Fenster oder - ein nicht-modales, MDIChild-Fenster Aber ich hätte ja gerne ein modales MDIChild-Fenster... |
Re: Modales MDIChild
Nach allem, was ich rausgefunden hatte, geht es nicht.
Was sollte auch der Sinn sein? MDI-Fenster sollen es ja auch gerade erlauben, mehrere "Inhaltsfenster" parallel anzuzeigen, Modale sollen hingegen alle weiteren Fenster überdecken und eine Eingabe erzwingen. Bist du sicher, dass das ein modales MDI-Child ist, oder dass da nicht andere Tricks eingesetzt werden? Du kannst ja z.B. die MDI-Form dazu bewegen, dass sie ein wechsel des Formulars nicht zulässt.. |
Re: Modales MDIChild
Zitat:
Aber ich bin fast sicher, das es so war, denn was hätte das Hauptfenster denn sonst für einen Sinn, es besteht nur aus einem Menü, einem Statusbar, einer Leiste mit Icons oben und einem Grauen Bereich. Wenn das keine MDI-Childs wären, dann wäre es ja gleich besser das Hauptfenster so ähnlich wie bei Delphi6 (z.B.) zu machen, d.h. ohne "grauen Bereich, in dem sich MDI-Childs bewegen".... Vieleicht wäre das sowieso sinnvoller... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:32 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