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 Modales MDIChild (https://www.delphipraxis.net/118317-modales-mdichild.html)

HHick123 5. Aug 2008 09:27


Modales MDIChild
 
Hallo, momentan wachsen mir gerade wieder einmal graue Haare...
Was mach' ich falsch?

ich erzeuge zur Laufzeit ein fsMDIChild

Delphi-Quellcode:
 Form3:=TForm3.Create(Self);
 Form3.ShowModal;
Bei ShowModal erhalte ich den Fehler:
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:
 Form3:=TForm3.Create(Self);
 Form3.Visible:=false;
 Form3.ShowModal;
Haha, der war gut, jetzt kommt:
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?

HHick123 5. Aug 2008 09:41

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?

DelphiKlaus 5. Aug 2008 10:49

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

HHick123 5. Aug 2008 15:44

Re: Modales MDIChild
 
Der Sinn sei mal dahingestellt. Ich soll nur das Userinterface mit Delphi so nachprogrammieren, wie es jetzt ist...

dfried 5. Aug 2008 16:06

Re: Modales MDIChild
 
Zitat:

Zitat von HHick123
Der Sinn sei mal dahingestellt. Ich soll nur das Userinterface mit Delphi so nachprogrammieren, wie es jetzt ist...

Dann ist es aber sicher kein modales MDIChild sondern einfach ein ganz normales Modales Fenster, oder? Und das geht ja problemlos.

sonicus83 7. Aug 2008 09:08

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:
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;
Und dann entsprechend vorher setModal aufrufen und entweder .show oder .showmodal
Das könnte man sicher noch eleganter lösen, aber so funktionierts bei mir.

HHick123 7. Aug 2008 10:13

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...

sonicus83 7. Aug 2008 11:45

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..

HHick123 7. Aug 2008 20:15

Re: Modales MDIChild
 
Zitat:

Bist du sicher, dass das ein modales MDI-Child
Ganz sicher bin ich nicht. Aus verschiedenen Gründen kann ich das "Vorlage" Programm gerade nicht ablaufen lassen.

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 08:05 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