MdiFrame
MdiFrame
MDI-Anwendungsfenster
Details
- Siehe: Liste , Eigenschaften , Ereignisse , Dialogerstellung , Ereignisabläufe MdiFrame , Datensatzpuffer (Blog)
Ein Applikationsfenster kann ein oder mehrere untergeordnete MdiFrame-Objekte aufnehmen und darstellen (siehe WinAdd () und WinAddByName ()). Zwar werden MdiFrame-Objekte im Designer unabhängig vom AppFrame -Objekt entworfen, brauchen jedoch zur Laufzeit immer ein AppFrame -Objekt.
Jedes Unterfenster kann innerhalb der Anwendung mehrfach mit unterschiedlichen oder auch identischen Daten erscheinen. Das MDI-Fenster kann den Arbeitsbereich des Applikationsfensters belegen und ist gleichzeitig durch dessen Größe begrenzt.
Wird die maximale Größe des Unterfensters gewählt, wird der gesamte Arbeitsbereich des Applikationsfensters genutzt. Als Name der Anwendung erscheint der Titel des Applikationsfensters und Titel des jeweiligen Unterfensters getrennt durch einen Bindestrich in der Titelzeile des Applikationsfensters.
MdiFrame-Objekte können alle Objekte der Objektpalette aufnehmen. Jedoch kann ihnen kein Menü zugewiesen werden. Lediglich das Applikationsfenster besitzt ein Menü. Das Menü muss ebenfalls die entsprechenden Steuerungselemente für das MDI-Fenster enthalten.
Zum Testen der MdiFrame-Objekte existiert wie gewohnt der Testmodus. Da die Objekte immer innerhalb eines Applikationsfensters laufen, wird für den Testmodus ein Standard-Applikationsfenster erzeugt.
Damit bestehende Frame -Objekte auch als MdiFrame-Objekte benutzt werden können, besteht die Möglichkeit ein Frame -Objekt in ein MdiFrame-Objekt zu konvertieren. Hierzu existiert der Menüeintrag Konvertieren zu MdiFrame im Kontextmenü des Frame-Objekts, sowie der Menüeintrag Bearbeiten / Konvertieren zu MdiFrame .
Wird der Menüeintrag ausgewählt, wird ein neues MdiFrame-Objekt erzeugt und die Objekte des Frame -Objekts übertragen. Hier bleibt zu beachten, dass ein evtl. vorhandenes Menü nicht mit übertragen werden kann, da MdiFrame-Objekte kein Menü besitzen können.
Der Titel des Anwendungsfensters kann mit der Eigenschaft Caption gesetzt werden.
Da in einer MDI-Anwendung ein Fenster mehrfach dargestellt werden kann (z. B. Dialog "Kunden" wurde mehrmals mit unterschiedlichen Daten geladen) muss für jeden Dialog ein eigener Datensatzpuffer angelegt werden. Über die Eigenschaft DbRecBuf kann einem MdiFrame ein Datensatzpuffer zugeordnet werden. Die Verwaltung des Puffers geschieht automatisch.
Wird ein MdiFrame-Objekt mehrfach geladen, kann es bei der Referenzierung auf Objekte innerhalb des Fensters über den Namen des Objekts zu Schwierigkeiten kommen, da der Name nicht mehr eindeutig ist. Die Namensauflösung funktioniert korrekt, solange innerhalb der Ereignisse des MDI-Fensters auf Objekte des gleichen Fensters referenziert wird. Sollen Objekte des anderen MDI-Fensters angesprochen werden, muss der Suchpfad entsprechend gesetzt werden (siehe WinSearchPath ()).
Die Auflösung von Objekt-Referenzen ($Name) in Prozeduren kann auf das aktive MDI-Fenster beschränkt werden. Dazu muss die Ausprägung _WinAppSearchMdiFrame der Flags-Eigenschaft des _App-Objektes gesetzt werden. Die Laufzeiten für die Referenzauflösung werden damit verkürzt, besonders bei Referenzen, die nicht aufgelöst werden können.
Wird die Eigenschaft StyleTheme auf _WinStyleThemeModern gesetzt, sollte dem AppFrame ein ToolbarMenu -Objekt hinzugefügt werden. Sonst werden die Minimieren- und Schließen-Schaltflächen der MDI-Fenster nicht angezeigt.