Halli Hallo,
Zitat von
davar:
Nun kam ich auf die Idee des
MDI, aber alles, was ich bisher als
MDI gesehen habe, waren Textverarbeitung o.ä. Sachen, also alle Fenster mit gleichem Inhalt.
MDI ist (wie so viele "Modeerscheinungen" bei Software) heutztage eigentlich "nicht mehr üblich".
Zitat von
davar:
...immer da ist und immer der untere Teil des Formulars sich verändert, wenn ich eine bestimmte Funktion aufrufe, quasi wie Frames bei
HTML.
Delphi bietet dazu (Stichwort "quasi wie Frames bei
HTML") eine sehr gute Möglichkeit an, die sich auch noch genau so nennt: ein Frame!
Mit Frames (besser: TFrame-Komponenten) kann man hervorragend Benutzerschnittstellen im Stile von z.B. Outlook bauen bei denen irgendwo im Fenster Kontrollelemente (Toolbars, Navigationsleisten) fest vorhanden sind und in einem zentralen Bereich jeweils der aktuelle Inhalt eingeblendet wird.
Dazu erstellt man die Frames ganz normal mit Delphi und füllt sie mit Leben, sprich Code. Dann fügt man die Frames aber nicht visuell in das Hauptformular ein, sondern erzeugt sie dynamisch und setzt sie per Code beispielsweise in ein zentral im Haupformular vorhandenes Panle ein.
Also in etwa so:
Delphi-Quellcode:
MeinBearbeitungsFrame := TMeinBearbeitungsFrame.Create(Self);
MeinBearbeitungsFrame.Align := alClient
MeinBearbeitungsFrame.Parent := ZentralesPanel;
MeinBearbeitungsFrame.Visible := true;
MeinBearbeitungsFrame.InitialisiereDasFrame;
Für das Schliessen der Frames kann man in der Frame-Klasse Events implementieren die das Haptformular davon unterichten, daß das Frame doch jetzt bitte entfernt werden soll. Ebenso kann die Frameklasse Methoden enthalten mit denen das Hauptformular abfragen kann ob noch ungespeicherte Daten da sind (so etwas wie "function CanClose: boolean").
Ich hoffe, diese Idee hilt ein wenig weiter,
Ralf