Autor Beitrag
FinalFantasy
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 127

Windows XP
Delphi 5 Professional, Visual Studio 7 .NET (C#)
BeitragVerfasst: Mi 07.09.05 08:53 
Hallo,

normalerweise wird die From eines MDI-Childs bereits beim Erzeugen mit Create angezeigt.
Wie kann ich ein MDI-Child modal öffnen??
WASEO
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 56

Win98, Win2000, WinXP
D6 Prof, D7 Prof
BeitragVerfasst: Mi 07.09.05 09:15 
Hi!

Da muss man ein bisschen mit dem FormStyle tricksen. Versuch's mal hiermit:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
procedure OpenForm(FForm: TForm; bShowModal: Boolean);
begin
  if bShowModal then 
  begin
    FForm.FormStyle := fsNormal;
    FForm.Visible := False;
    FForm.ShowModal;
  end
  else
   FForm.Show;
end;


Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt.

_________________
Erstaunlich sind nicht die Dinge, die wir nicht kennen, sondern die wir kennen und die nicht so sind.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 07.09.05 09:22 
Das dürfte nicht funktionieren, da die Zuweisungen erst gemacht werden können, wenn die Form schon erzeugt ist.
Die Eigenschaft FormStyle zur Laufzeit zu verändern, ist meines Wissens nicht möglich. Aber das muss ja nichts heißen. :wink:
WASEO
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 56

Win98, Win2000, WinXP
D6 Prof, D7 Prof
BeitragVerfasst: Mi 07.09.05 09:40 
An jasocul: Nun gut, Herr Kollege, dann verfeinern wir die Sache doch etwas :). Gehen wir in diesem Beispiel davon aus, daß das MDI-Form TMDIChild heisst, dann sieht die Sache so aus:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
procedure OpenForm(bShowModal: Boolean);
begin
  if bShowModal then
  begin
    MDIChild.FormStyle := fsNormal;
    MDIChild.Visible := False;
    MDIChild:=TMDIChild.Create(Application);
    MDIChild.ShowModal;
  end
  else
  begin
    MDIChild.FormStyle := fsMDICHild;
    MDIChild.Show;
  end;
end;


An FinalFantasy: Im Übrigen stammt das MDI-Geschleuder noch aus Windows 3.11-Zeiten und ist heute veraltet. Selbst Microsoft emuliert in den neueren MS Word-Versionen die MDIs nur noch. Wenn's auch anders geht, sollte man auf MDIs verzichten und normale Forms verwenden.

Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt.

_________________
Erstaunlich sind nicht die Dinge, die wir nicht kennen, sondern die wir kennen und die nicht so sind.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 07.09.05 09:50 
Ich wollte deine Code nicht schlecht machen. Es kann nur nicht funktionieren:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
procedure OpenForm(bShowModal: Boolean);
begin
  if bShowModal then
  begin
// Hier weist du Eigenschaften zu, obwohl die Form-Variable noch unbestimmt (nil) ist.
    MDIChild.FormStyle := fsNormal;
    MDIChild.Visible := False;
    MDIChild:=TMDIChild.Create(Application);
// Erst ab hier ginge das. Aber da ist es ja schon ein MDI-Child.
    MDIChild.ShowModal;
  end
  else
  begin
    MDIChild.FormStyle := fsMDICHild;
    MDIChild.Show;
  end;
end;
Amiga-Fan
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 534



BeitragVerfasst: Mi 07.09.05 10:07 
Zitat:
An FinalFantasy: Im Übrigen stammt das MDI-Geschleuder noch aus Windows 3.11-Zeiten und ist heute veraltet. Selbst Microsoft emuliert in den neueren MS Word-Versionen die MDIs nur noch. Wenn's auch anders geht, sollte man auf MDIs verzichten und normale Forms verwenden.


also ich finde das "MDI-Geschleuder" gut. Die Tabs von Firefox sind ja gewissermaßen auch nichts anderes...

_________________
- Leg dich nie mit einem Berufsprogrammierer an
- Wahre Profis akzeptieren keine einfachen Lösungen
WASEO
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 56

Win98, Win2000, WinXP
D6 Prof, D7 Prof
BeitragVerfasst: Mi 07.09.05 10:14 
jasocul: Habe eben mal einen anderen Delphi-Programmierer gefragt: Das Setzen von FormStyle zur Laufzeit IST MÖGLICH. Somit dürfte meine erste Prozedur funktionieren. Aber vielleicht kann FinalFantasy das einfach mal ausprobieren, schließlich hat er ja auch die Frage gestellt :).

Amiga-Fan: Woher willst Du denn wissen, ob die Tabs von FireFox nicht doch Tabsheets sind? Oder hast Du schon mit den Programmierern gesprochen?

_________________
Erstaunlich sind nicht die Dinge, die wir nicht kennen, sondern die wir kennen und die nicht so sind.
jasocul
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 6395
Erhaltene Danke: 149

Windows 7 + Windows 10
Sydney Prof + CE
BeitragVerfasst: Mi 07.09.05 11:18 
user profile iconWASEO hat folgendes geschrieben:
jasocul: Habe eben mal einen anderen Delphi-Programmierer gefragt: Das Setzen von FormStyle zur Laufzeit IST MÖGLICH. Somit dürfte meine erste Prozedur funktionieren. Aber vielleicht kann FinalFantasy das einfach mal ausprobieren, schließlich hat er ja auch die Frage gestellt :).

Amiga-Fan: Woher willst Du denn wissen, ob die Tabs von FireFox nicht doch Tabsheets sind? Oder hast Du schon mit den Programmierern gesprochen?

Komisch, dass ich dann eine Zugriffsverletzung bekomme! Vielleicht solltest du dem Programmierer noch mitteilen, dass die Form-Variable noch nil ist, wenn die Zuweisung gemacht werden soll.

zu MDI:
Ich mag es auch.
FinalFantasy Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 127

Windows XP
Delphi 5 Professional, Visual Studio 7 .NET (C#)
BeitragVerfasst: Do 08.09.05 13:20 
Wenn ich FormStyle ändere, dann erscheint das Fenster aber auch nichtmehr als MDI-Child und ist somit auch nichtmehr auf das Parent-Window beschränkt, oder?
Ich habs jetzt nicht ausprobiert....
Hab ne andere Lösung gefunden, bei der es nicht mehr nötig ist, den Frame modal anzuzeigen.