| Autor |
Beitrag |
FinalFantasy
      
Beiträge: 127
Windows XP
Delphi 5 Professional, Visual Studio 7 .NET (C#)
|
Verfasst: 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
      
Beiträge: 56
Win98, Win2000, WinXP
D6 Prof, D7 Prof
|
Verfasst: Mi 07.09.05 09:15
Hi!
Da muss man ein bisschen mit dem FormStyle tricksen. Versuch's mal hiermit:
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 raziel: Delphi-Tags hinzugefügt.
_________________ Erstaunlich sind nicht die Dinge, die wir nicht kennen, sondern die wir kennen und die nicht so sind.
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: 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. 
|
|
WASEO
      
Beiträge: 56
Win98, Win2000, WinXP
D6 Prof, D7 Prof
|
Verfasst: 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:
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 raziel: Code- durch Delphi-Tags ersetzt.
_________________ Erstaunlich sind nicht die Dinge, die wir nicht kennen, sondern die wir kennen und die nicht so sind.
|
|
jasocul
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Mi 07.09.05 09:50
Ich wollte deine Code nicht schlecht machen. Es kann nur nicht funktionieren:
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 MDIChild.FormStyle := fsNormal; MDIChild.Visible := False; MDIChild:=TMDIChild.Create(Application); MDIChild.ShowModal; end else begin MDIChild.FormStyle := fsMDICHild; MDIChild.Show; end; end; |
|
|
Amiga-Fan
      
Beiträge: 534
|
Verfasst: 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
      
Beiträge: 56
Win98, Win2000, WinXP
D6 Prof, D7 Prof
|
Verfasst: 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
      
Beiträge: 6395
Erhaltene Danke: 149
Windows 7 + Windows 10
Sydney Prof + CE
|
Verfasst: Mi 07.09.05 11:18
WASEO 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 
      
Beiträge: 127
Windows XP
Delphi 5 Professional, Visual Studio 7 .NET (C#)
|
Verfasst: 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.
|
|