En Windows, los desarrolladores 4D pueden configurar sus aplicaciones con 4D fusionadas para trabajar como aplicaciones SDI (Single-Document Interface). En las aplicaciones SDI, cada ventana es independiente de otras y puede tener su propia barra de menús. Las aplicaciones SDI se oponen a las aplicaciones MDI (Multiple Documents Interface), donde todas las ventanas están contenidas y dependen de la ventana principal.
Nota para macOS: el concepto SDI/MDI no existe en macOS. Esta funcionalidad sólo se refiere a las aplicaciones Windows y las opciones relacionadas se ignoran en macOS.
El modo SDI sólo está disponible en el siguiente entorno de ejecución:
- Windows
- Aplicación 4D monopuesto o cliente fusionada
La activación y el uso del modo SDI en su aplicación requieren los siguientes pasos:
- Marque la opción Usar modo SDI en Windows en la página "Interfaz" del cuadro de diálogo Configuración de la base (ver Página Interfaz).
- Cree una aplicación fusionada (aplicación independiente y/o cliente, ver Terminar y desplegar aplicaciones finales).
Luego, cuando se ejecuta en un contexto soportado (ver arriba), la aplicación fusionada funcionará automáticamente en modo SDI.
La ejecución de una aplicación 4D en modo SDI no requiere ninguna implementación específica: las barras de menú existentes se mueven automáticamente en las propias ventanas SDI. Sin embargo, es necesario prestar atención a los principios específicos que se enumeran a continuación.
En el modo SDI, la barra de menús del proceso se muestra automáticamente en cada ventana del tipo de documento abierta durante la vida del proceso (esto excluye, por ejemplo, las paletas flotantes). Cuando la barra de menús del proceso no está visible, los accesos directos del elemento de menú permanecen activos.
Los menús se añaden arriba de las ventanas sin modificar el tamaño de su contenido:

Por lo tanto, Windows puede utilizarse en los modos MDI o SDI sin tener que volver a calcular la posición de los objetos.
Nota sobre la pantalla de bienvenida:
- Si se seleccionó la opción de interfaz Pantalla de bienvenida para la base (ver Página Interfaz), la ventana de bienvenida contendrá todo menú que se hubiera mostrado en la ventana MDI. Tenga en cuenta también que cerrar la ventana de inicio resultará en salir de la aplicación, al igual que en el modo MDI.
- Si no seleccionó la opción Pantalla de bienvenida para la base, los menús se mostrarán sólo en ventanas abiertas, según las opciones del programador.
Cuando se ejecuta en modo MDI, una aplicación 4D simplemente se cierra cuando el usuario cierra la ventana de la aplicación (ventana MDI). Sin embargo, cuando se ejecutan en modo SDI, las aplicaciones 4D no tienen una ventana de aplicación y, por otro lado, cerrar la última ventana abierta no significa necesariamente que el usuario desee que la aplicación se cierre (por ejemplo, se pueden ejecutar procesos), aunque podría ser lo que quiere.
Para manejar este caso, las aplicaciones 4D ejecutadas en modo SDI incluyen un mecanismo para cerrar automáticamente (llamando al comando QUIT 4D) cuando se cumplen las siguientes condiciones:
- El usuario ya no puede interactuar con la aplicación
- No hay procesos usuario vivos
- Los procesos 4D o los procesos worker están esperando un evento
- El servidor Web no se inicia.
Nota: cuando se llama a un menú con una acción estándar salir asociada, la aplicación se cierra y todas las ventanas se cierran, desde dondequiera que se haya llamado el menú.
Aunque es manejado de forma transparente por 4D, el modo SDI introduce pequeñas variaciones en la gestión de la interfaz de la aplicación. Las especificidades en el lenguaje 4D se listan a continuación.
Comando/funcionalidad | Especificidad en el modo SDI en Windows |
Open form window | Opciones para soportar ventanas flotantes en SDI (Controller form window) y eliminar la barra de menús (Form has no menu bar) |
| Toolbar form window tipo de ventana no soportado |
Menu bar height | Devuelve la altura en píxeles de una sola línea de barra de menú incluso si la barra de menús está en dos o más líneas. Devuelve 0 cuando el comando se llama desde un proceso sin una ventana de formulario |
SHOW MENU BAR / HIDE MENU BAR | Aplicada solo a la ventana de formulario actual (desde donde se ejecuta el código) |
MAXIMIZE WINDOW | La ventana se maximiza al tamaño de la pantalla |
CONVERT COORDINATES | XY Screen ies el sistema de coordenadas global donde la pantalla principal es posicionada en (0,0). Las pantallas al lado izquierdo o en la parte superior pueden tener coordenadas negativas y toda pantalla al lado derecho o debajo puede tener coordenadas mayores que los valores devueltos por Screen height o Screen width. |
GET MOUSE | Las coordenadas globales son relativas a la pantalla |
GET WINDOW RECT | Cuando se pasa -1 en el parámetro window, el comando devuelve 0;0;0;0 |
Método base On Drop | No soportado |