Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-10-2007
[birmain] birmain is offline
Miembro Premium
 
Registrado: feb 2005
Ubicación: Albacete - España
Posts: 49
Poder: 0
birmain Va por buen camino
Ventana hija en un marco (Frame o Panel) de la ventana padre

Un saludo a todos los participantes.

Aunque he realizado unas cuantas aplicaciones en Delphi, jamás he usado la técnica MDI. Mi necesidad estriba en crear las ventanas hijas dentro del formulario principal en un marco, para utilizar la parte izquierda para otro tipo de controles. En principio me pareció un asunto que resolvería en unos minutos, pero llevo toda la tarde perdiendo el tiempo con ello, que aparentemente es sencillo.

Tras buscar en los foros no he encontrado nada, por lo que solicito vuestra amable ayuda.

Un saludo, y agradecido por anticipado.
Responder Con Cita
  #2  
Antiguo 13-10-2007
Avatar de xEsk
[xEsk] xEsk is offline
Miembro Premium
 
Registrado: feb 2006
Posts: 454
Poder: 19
xEsk Va por buen camino
Hola, aqui explican como empezar con el Delphi + MDI.

Si quieres mas información en Google busca por: "Delphi + MDI"

Saludos.
Responder Con Cita
  #3  
Antiguo 14-10-2007
[birmain] birmain is offline
Miembro Premium
 
Registrado: feb 2005
Ubicación: Albacete - España
Posts: 49
Poder: 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
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como quitar la barra de título a una ventana hija de una aplicación MDI abracadabra OOP 1 15-12-2005 00:59:29
Como evitar 2 instancias de una misma ventana hija edgusano .NET 5 12-12-2005 16:40:40
En mi aplicacion MDI quiero crear una ventana hija desde otra ventana hija Durbed Varios 8 05-07-2005 11:51:54
bloquear ventana padre cuando creo la hija delphinario Varios 6 01-10-2004 20:19:19
tamaño de una ventana hija Alejo Varios 2 09-07-2003 05:34:18


La franja horaria es GMT +2. Ahora son las 16:29:04.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi