En primer lugar, gracias a
xEsk por su respuesta.
En realidad la solución es bastante simple. No se trata de hacer una aplicación MDI sino de simularla. Me explico:
1º En el formulario principal he puesto dos frames, uno alineado a la izquierda, un Splitter también alineado a la izquierda en vertical, y otro frame a la derecha, ocupando inicialmente la mayor parte del área del form.
Este frame será el cliente de todas las ventanas (Frame11)
Los formularios que se desé aparezcan no se deben autocrear, y los atributos de la propiedad FormStyle no pueden ser fsMDIChild. (No es una aplicación MDI, sino una simulación)
Código Delphi
[-]procedure TMainForm.CreaFormularioTablas;
var Tablas : TFormTablas;
i, nv : integer;
begin
nv := 0;
for i := 0 to Screen.FormCount-1 do
If Screen.Forms[i] is TFormTablas then Inc(nv);
if nv = 0 then
begin
Tablas := TFormTablas.Create(Application);
with Tablas do
begin
Parent := Frame11;
Show;
end;
end;
end;
Este procedimiento se crea en el evento OnClick de uno de los items del menú principal, así cuantos se quieran. Todos deben cerrarse en su evento OnClose de la siguiente forma:
Código Delphi
[-]procedure TFormTablas.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action := caFree;
end;
De esta forma se pueden crear tantos formularios como se quieran desde el menú principal