Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #2  
Antiguo 07-06-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola jafera.

Cita:
Si desde este segundo child vuelvo a llamar al primero, se me abre una nueva copia del form, cosa que no quiero
Una aplicación MDI está compuesta por ventanas hijas, área de cliente o frame y la ventana de clientes. Esta última es la que administra a todas las ventanas MDIChild que de ella dependen.
Para que no te suceda lo que comentas, es necesario que una ventana hija llame a otra mediante la ventana padre.

Para ejemplificar supongamos que tenemos: frmMain (MDIForm) con un TMainMenu y dos TMenuItem, cada uno de los cuales llama a las ventanas frmChild1 y frmChild2 (MDIChilds). En cada ventana hija, además tenemos un TButton que llama a la otra ventana hija.

frmMain:
Código Delphi [-]
implementation

uses Unit2, Unit3;

procedure TfrmMain.frmChild1AbrirClick(Sender: TObject);
begin
  TfrmChild1.Mostrar;
end;

procedure TfrmMain.frmChild2AbrirClick(Sender: TObject);
begin
  TfrmChild2.Mostrar;
end;

frmChild1:
Código Delphi [-]
implementation

uses Unit1;

class procedure TfrmChild1.Mostrar;
begin
  if not Assigned(frmChild1) then
    frmChild1:= TfrmChild1.Create(nil)
  else
    frmChild1.BringToFront;
end;

procedure TfrmChild1.btnShowChild2Click(Sender: TObject);
begin
  frmMain.frmChild2AbrirClick(Self); // llamar a otro MDIChild
end;

procedure TfrmChild1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action:= caFree;
end;

procedure TfrmChild1.FormDestroy(Sender: TObject);
begin
  frmChild1:= nil;  // necesario por: if not Assigned...
end;

frmChild2:
Código Delphi [-]
uses Unit1;

class procedure TfrmChild2.Mostrar;
begin
  if not Assigned(frmChild2) then
    frmChild2:= TfrmChild2.Create(nil)
  else
    frmChild2.BringToFront;
end;

procedure TfrmChild2.btnShowChild1Click(Sender: TObject);
begin
  frmMain.frmChild1AbrirClick(Self); // llamar a otro MDIChild
end;

procedure TfrmChild2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action:= caFree;
end;

procedure TfrmChild2.FormDestroy(Sender: TObject);
begin
  frmChild2:= nil; // necesario por: if not Assigned...
end;
De este modo no te abrirá una nueva copia del form MDIChild.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 07-06-2011 a las 12:54:44.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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
Abrir formulario solo una vez morfeo21 Varios 6 12-06-2013 02:38:09
Abrir MDIChild desde otro totote Varios 9 24-09-2008 11:58:32
Abrir el programa solo una vez Paulao Varios 8 10-04-2008 11:15:30
Abrir un formulario hijo solo una vez Walterdf Varios 5 08-04-2008 17:15:01
Aplicacio abrir solo una vez Paulao Varios 1 03-04-2008 17:55:30


La franja horaria es GMT +2. Ahora son las 18:17:58.


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