Em Windows, os desenvolvedores 4D podem configurar suas aplicaçõesfusionadas para trabalhar como aplicações SDI (Single-Document Interface). Nas aplicações SDI, cada janela é independente de outras e pode ter sua própia barra de menus. As aplicações SDI se opõe às aplicações MDI (Multiple Documents Interface), onde todas as janelas estão contidas e dependem da janela principal.
Nota para macOS: o conceito SDI/MDI não existe em macOS. Esta funcionalidade só se refere às aplicações Windows e às opções relacionadas são ignoradas em macOS.
O modo SDI só está disponível nos ambientes de execução abaixo:
- Windows
- Aplicação 4D monoposto ou Aplicação cliente 4D
A ativação e o uso de modo SDI em sua aplicação exigem os seguintes passos:
- Marque a opção Usar modo SDI em Windows na página "Interface" de quadro de diálogo Configuração do banco de dados (ver Página Interface).
- Crie uma aplicação fusionada (aplicação independente ou cliente, ver Finalizar e distribuir aplicativos).
Depois, quando for executada em um contexto suportado (ver acima), a aplicação fusionada funcionará automaticamente em modo SDI.
A execução de uma aplicação 4D em modo SDI não exige nenhuma implementação específica: as barras de menu existentes são movidas automaticamente nas próprias janelas SDI. Entretanto, é necessário prestar atenção aos principios específicos que são enumerados abaixo.
No modo SDI, a barra de menus do processo são mostradas automaticamente em cada janela do tipo de documento aberta durante a vida do processo (isto exclui, por exemplo, as espátulas flutuantes). Quando a barra de menus do processo não estiver visível, os acessos diretos de elemento de menu permanecem ativos.
Os menús são adicionados acima das janelas sem modificar o tamanho de seu conteúdo:

Portanto, Windows pode ser utilizado nos modos MDI ou SDI sem ter que voltar a calcular a posição dos objetos.
Nota sobre a tela de boas vindas:
- Se selecionar a opção de interface Tela de boas vindas para o banco de dados (ver Página Interface), a janela de boas vindas conterá todo menu que tenha sido mostrado na janela MDI. Lembre também que fechar a janela de início resultará em sair da aplicação, da mesma forma que no modo MDI.
- Se não selecionou a opção Tela de boas vindas para o banco de dados, os menus são mostrados apenas em janelas abertas, segundo as opções do programador.
Quando executar em modo MDI, uma aplicação 4D simplesmente se fecha quando o usuário fechar a janela da aplicação (janela MDI). Entretanto, quando são executadas em modo SDI, as aplicações 4D não têm uma janela de aplicação e, por outro lado, fechar a última janela aberta não significa necessariamente que o usuário deseje que a aplicação se feche (por exemplo, podem executar processos), apesar de que isso poderia ser o desejado.
Para manejar este caso, as aplicações 4D executadas em modo SDI incluem um mecanismo para fechar automaticamente (chamando ao comando QUIT 4D) quando forem cumpridas as condições abaixo:
- O usuário já não pode interagir com a aplicação
- Não há processos usuário vivos
- Os processos 4D ou os processos worker estão esperando um evento
- O servidor Web não é iniciado.
Nota: quando for chamado a um menu com uma ação padrão sair associada, a aplicação se fecha e todas as janelas são fechadas, desde de onde quer que tenha sido chamado o menu.
Apesar de ser manejado de forma transparente por 4D, o modo SDI introduz pequenas variações na gestão da interface da aplicação. As especificidades na linguagem 4D são listadas abaixo.
Comando/funcionalidade | Especificidade no modo SDI em Windows |
Open form window | Opções para suportar janelas flutuantes em SDI (Controller form window) e eliminar a barra de menus (Form has no menu bar) |
| Toolbar form window Tipo de janela não suportado |
Menu bar height | Devolve a altura em píxels de uma única linha de barra de menu mesmo se a barra de menus esteja em duas ou mais línhas. Devolve 0 quando o comando for chamado desde um processo sem uma janela de formulário |
SHOW MENU BAR / HIDE MENU BAR | Aplicada só à janela de formulário atual (desde onde o código é executado) |
MAXIMIZE WINDOW | A janela se maximiza ao tamanho da tela |
CONVERT COORDINATES | XY Screen é o sistema de coordenadas global onde a tela principal é posicionada en (0,0). As telas do lado esquerdo ou na parte superior podem ter coordenadas negativas e toda tela do lado direito ou embaixo pode ter coordenadas maiores que os valores devolvidos por Screen height ou Screen width. |
GET MOUSE | As coordenadas globais são relativas à tela |
GET WINDOW RECT | Quando passar -1 no parâmetro window, o comando devolve 0;0;0;0 |
On Drop database method | Não compatível |