Entwickler-Ecke

Grafische Benutzeroberflächen (VCL & FireMonkey) - Nur ein MDIChild-Fenster der selben sorte öffnen lassen!


Andi1982KA - Sa 12.10.02 13:53
Titel: Nur ein MDIChild-Fenster der selben sorte öffnen lassen!
Hallo,
bin mal wieder dabei mich mit Delphi rumzuschlagen! Ich habe ein Form1 als fsMDI-Form. Über ein Menü hab ich gemacht dass man ein fsMDI-Child öffnen kann:


Quelltext
1:
2:
3:
4:
5:
6:
procedure TForm1.erfassenClick(Sender: TObject);
begin
  TForm2.Create(Self);
end;

end.


In diesem Fenster will ich dass man einstellungen vornehmen kann. Aber wenn ich im Menü nochmal auf einstellungen geh wird das selbe Fenster erneut geöffnet!

Kann man dies irgendwie verhindern dass das selbe Fenster öfter geöffnet werden kann??

Vielen Dank schonmal für eure Hilfe!!

Gruss Andi!


Tino - Sa 12.10.02 14:16
Titel: Re: Nur ein MDIChild-Fenster der selben sorte öffnen lassen!
Andi1982KA hat folgendes geschrieben:
In diesem Fenster will ich dass man einstellungen vornehmen kann

Ich würde mir vielleicht überlegen nicht die Einstellungen in einem MDI-Child-Fenster zu zeigen sondern in einem "normalen" modal geöffneten Fenster.

Gruß
TINO


Andi1982KA - Sa 12.10.02 14:42
Titel: Danke
Danke,
das mit dem "normal" ist eine gute Idee. Aber es ist dann trotzdem noch möglich ins Hauptfenster zu gehen und nochmal das selbe fenster zu öffnen.

Was verstehst du unter modal öffnen? Tschuldingung wenn ich so blöd frag :roll: Kann man das irgendwo einstellen?

Gruss Andi


Klabautermann - Sa 12.10.02 22:35

Hallo,

wenn du ein Fenster "modal" Öffnest, werden alle anderen Fenster deiner Anwendung Blockiert.
Designe hierzu das ensprechende Fenster nicht als MDI-Child sonder als Normales fenster, setze aber Visible auf FALSE. Im Code machst du das dann so:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.erfassenClick(Sender: TObject);
  VAR
     Options : tForm;
begin
 Options := TForm2.Create(Self);
  TRY 
    IF (Options.ShowModal = mrOK) THEN
       // Hier Optionen Speichern
  FINALLY
    Options.Free;
  END: // TRY Finally
end;


Das OK Ereignis deines Form2 muss dann folgende Zeile ais letzte enthalten:

Quelltext
1:
  ModalResult := mrOk;                    

Damit wird 1. Das Fenster unsichtbar gemacht, 2. die Sperrung deines Programmes aufgehoben und 3. das ergebnis mrOk zurückgeliefert.
Mit

Quelltext
1:
  ModalResult := mrCancel;                    

Kannst du den Abrechen Knopf realisieren.

Gruß
Klabautermann


Andi1982KA - So 13.10.02 13:29
Titel: Vielen Dank
Vielen Dank,
hast mir wirklich sehr geholfen!!!

Also bis zu meinem nächsten problem :D

Gruss Andi