Unter Windows können 4D Entwickler ihre 4D Anwendungen mit einkompilierter Engine als SDI (Single-Document Interface) Anwendungen einrichten. In SDI Anwendungen ist jedes Fenster von den anderen unabhängig und kann eine eigene Menüleiste haben. SDI Anwendungen sind das Gegenteil von MDI (Multiple Documents Interface) Anwendungen, wo alle enthaltenen Fenster vom Hauptfenster abhängen.
Hinweis für macOS: Das Konzept SDI/MDI gibt es nicht auf macOS. Dieses Feature gilt nur für Windows Anwendungen und auf macOS werden damit zusammenhängende Optionen ignoriert.
Der SDI Modus ist nur in folgender Ausführungsumgebung verfügbar:
- Windows
- Eiinzelplatz oder Client, 4D Anwendung mit einkompilierter Engine
Zum Aktivieren und Einsetzen des SDI Modus in Ihrer Anwendung sind folgende Schritte erforderlich:
- Markieren Sie auf der Seite Oberfläche des Dialogfensters Datenbank-Eigenschaften die Option Verwende SDI Modus für Windows (siehe Seite Oberfläche).
- Erstellen Sie eine doppelklickbare Anwendung (Einzelplatz und/oder Client Anwendung, siehe Eigenständige Anwendung erstellen und weitergeben).
Die doppelklickbare Anwendung läuft dann bei Ausführen im entsprechenden Kontext automatisch im SDI Modus.
Zum Ausführen einer 4D Anwendung im SDI Modus sind keine spezifischen Implementationen erforderlich: Vorhandene Menüleisten werden automatisch in die eigenen SDI Fenster gelegt. Sie müssen jedoch ein paar Eigenheiten beachten, die nachfolgend aufgelistet werden.
Im SDI Modus erscheint die Menüleiste des Prozesses automatisch in jedem Dokument vom Typ Fenster, das während der Lebensdauer des Prozesses geöffnet wird (ausgeschlossen sind beispielsweise Palettenfenster). Ist die Menüleiste des Prozesses nicht sichtbar, bleiben die Tastenkürzel der Menübefehle weiterhin aktiv.
Menüs werden oben im Fenster hinzugefügt, die Größe des Inhalts wird dabei nicht verändert:

Fenster lassen sich also im MDI oder SDI Modus verwenden, es ist keine Neuberechnung die Position der Objekte notwendig.
Hinweis zum Hauptfenster:
- Ist für die Anwendung die Oberflächenoption Hauptfenster ausgewählt (siehe Seite Oberfläche), enthält das Hauptfenster alle Menüs, die auch im MDI Fenster erscheinen würden. Beachten Sie, dass Schließen des Hauptfensters - analog zum MDI Modus- auch das Verlassen der Anwendung bewirkt.
- Ist die Option Hauptfenster nicht für die Anwendung ausgewählt, erscheinen die Menüs nur in den geöffneten Fenstern, gemäß der Wahl des Programmierers.
Beim Ausführen im MDI Modus beendet die 4D Anwendung einfach, wenn der Benutzer das Anwendungsfenster (MDI Fenster) schließt. Dagegen haben 4D Anwendungen beim Ausführen im SDI Modus kein Anwendungsfenster und außerdem bedeutet Schließen des zuletzt geöffneten Fenstern nicht unbedingt, dass der Benutzer die Anwendung beenden möchte (beispielsweise können Prozesse ohne Oberfläche laufen) -- obwohl das auch der Fall sein könnte.
Für diesen Fall enthalten 4D Anwendungen, die im SDI Modus ausgeführt werden, einen Mechanismus zum automatischen Beenden (Aufrufen des Befehls QUIT 4D), wenn folgende Bedingungen zutreffen:
- Der Benutzer kann nicht mehr mit der Anwendung interagieren
- Es gibt keine laufenden Benutzerprozesse
- 4D Prozesse oder Worker Prozesse warten auf ein Ereignis
- Der Web Server ist nicht gestartet
Hinweis: Bei Aufrufen eines Menüs mit einer zugewiesenen Standardaktion Beenden wird die Anwendung beendet und alle Fenster werden geschlossen, egal von wo aus das Menü aufgerufen wird.
Auch wenn 4D den SDI Modus transparent verwaltet, gibt es hier bei der Oberflächenverwaltung der Anwendung ein paar kleinere Abweichungen:
Befehl/Feature | Abweichung im SDI Modus unter Windows |
Open form window | Enthält Optionen zur Unterstützung von Palettenfenstern in SDI (Controller form window) und zum Entfernen der Menüleiste (Form has no menu bar) |
| Der Fenstertyp Toolbar form window wird nicht unterstützt. |
Menu bar height | Gibt die Höhe einer Zeile der Menüleiste in Pixel zurück, auch wenn die Menüleiste aus mehreren Zeilen besteht. Gibt 0 zurück, wenn der Befehl von einem Prozess ohne Formularfenster aufgerufen wird. |
SHOW MENU BAR / HIDE MENU BAR | Gilt nur für das aktuelle Formularfenster, d.h. in dem der Code ausgeführt wird |
MAXIMIZE WINDOW | Das Fenster wird auf Bildschirmgröße maximiert |
CONVERT COORDINATES | XY Screen ist das globale Koordinatensystem, bei dem der Hauptbildschirm bei (0,0) liegt. Links davon oder oberhalb liegende Bildschime können negative Koordinaten haben, rechts davon oder unterhalb liegende Bildschirme können Koordinaten haben, die größer sind als die von Screen height oder Screen width zurückgegebenen Werte. |
GET MOUSE | Globale Koordinaten sind relativ zum Bildschirm |
GET WINDOW RECT | Wird im Parameter Fenster -1 übergeben, gibt der Befehl 0;0;0;0 zurück |
Datenbankmethode On Drop | Wird nicht unterstützt |