Ver Mensaje Individual
  #3  
Antiguo 14-10-2007
[birmain] birmain is offline
Miembro Premium
 
Registrado: feb 2005
Ubicación: Albacete - España
Posts: 49
Reputación: 0
birmain Va por buen camino
Problema solucionado

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);

 // esto impide una segunda instancia
  if nv = 0 then   
  begin     
    Tablas := TFormTablas.Create(Application);     
    with Tablas do       
    begin
        // Frame11 es el frame que va a ser el área cliente
        // y que está en el MainForm
        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

Última edición por birmain fecha: 14-10-2007 a las 09:29:42. Razón: corregir algún error
Responder Con Cita