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 25-11-2006
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Sobre aplicaciones MDI - Child

Necesito saber como puedo prevenir mas de una instancia de una ventana hija en una aplicacion MDI.
El objetivo es que si el usuario trata de abrir una ventana hija que ya esta abierta, que muestre o active esa misma instancia que ya está abierta y no que se abra otra.
Responder Con Cita
  #2  
Antiguo 25-11-2006
ebreton31 ebreton31 is offline
Miembro
 
Registrado: ago 2006
Ubicación: Sahagun, hidalgo , Mexico
Posts: 15
Poder: 0
ebreton31 Va por buen camino
ojala te sirva

if Assigned(Self.ActiveMDIChild) then
Self.ActiveMDIChild.Close;
__________________
SALUDOS
Responder Con Cita
  #3  
Antiguo 25-11-2006
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
El método completo:

Tenemos una ventana mdiChild que se llama form1 y su clase es Tform1.

En el OnClose de esa ventana ponemos:
Código Delphi [-]
 Action := cafree;
 form1 := nil;

Cuando queramos saber si hay una ventana abierta:
Código Delphi [-]
if Assigned(form1) then
  // abierta
else
  // no está creada la ventana.

Para crear la ventana Form1, hay varias formas, la que más me gusta es:
Código Delphi [-]
  Form1 := TForm1.Create(nil);
Fíjate en el parámetro "nil", eso quiere decir que nadie se va a encargar de liberar la ventana, porque al cerrarse, ya se lo hemos dicho (Action := cafree).

Si necesitas saber de qué tipo es la ventana abierta en un determinado momento, siempre puedes comparar así:
Código Delphi [-]
if mdiChildcount > 0 then
if ActiveMdiChild.Classname =  'TForm1' then
  // es el form1
else
  // no lo es

Saludos.
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #4  
Antiguo 26-11-2006
aledieb aledieb is offline
Miembro
 
Registrado: jun 2005
Ubicación: Buenos Aires, Argentina
Posts: 141
Poder: 19
aledieb Va por buen camino
Yo utilizo otra forma, en form que llama al mdichild

Código Delphi [-]
  if estacargada('frmResuVenta')=-1 then
  begin
    Application.CreateForm(TfrmResuVenta, frmResuVenta);
    frmResuVenta.Show;
  end
  else
  begin
    Screen.Forms[estacargada('frmResuVenta')].WindowState:=wsNormal;
    Screen.Forms[estacargada('frmResuVenta')].Show;
  end;

La función es:
Código Delphi [-]
function EstaCargada(NombreVent:string):integer;
var i:integer;
begin
  estacargada:=-1;
  i:=0;
  while ido
  begin
    if UpperCase(Screen.Forms[i].Name)=UpperCase(NombreVent) then
    begin
      estacargada:=i;
      break;
    end;
    Inc(i);
  end;
end;

Tal ves no sea lo optimo pero funciona de maravilla. Lo unico a tener en cuenta que que los mdichild deben liberarse al cerrarlos poniendo action:=caFree; en el metodo close.
__________________
Suerte
Alejandro
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
mdi form and child ale21alito Varios 9 07-02-2008 01:04:05
Cerrar MDI Child con ALT-F4 gluglu Varios 3 05-09-2006 11:38:16
MDI Child que no se cierran senpiterno Varios 5 25-11-2004 06:14:37
Paneles Child JoseQ Varios 1 21-07-2004 11:09:52
Opiniones sobre el Firebird 1.5RC3 para aplicaciones web victork_py Firebird e Interbase 2 04-07-2003 14:54:45


La franja horaria es GMT +2. Ahora son las 05:10:24.


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