Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-02-2005
pablo pablo is offline
Miembro
 
Registrado: oct 2003
Ubicación: Argentina . Junin
Posts: 78
Poder: 21
pablo Va por buen camino
otra de MDI

hola, estoy experimentando con este tipo de aplicaciones y tengo un par de dudas:
1) como puedo hacer para que si llamo a un form child, mientras este se visualiza, si vuelvo a la opcion de menu a llamarlo no me aparezca otro, sino que se de cuenta de q uno ya se esta ejecutando y le de el foco a ese...

2) otra es como puedo hacer para que si algunos forms child se estan ejecutando, otros no se puedan ejecutar, algo asi como exclusion mutua

un saludo
pablo
__________________
Pablo Tello
Responder Con Cita
  #2  
Antiguo 26-02-2005
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
  1. Usa una variable que apunte al formulario creado. Al momento de llamarlo te fijas en el valor de esa variable. Si es nil es que no ha sido creado. Lo creas y lo muestras. Si es distinto de nil es que ya estácreado así que sólo lo muestras.

    Al momento de cerrar el formulario, te aseguras de que la variable vuelva a ser nil para la próxima vez que se requiera abrirlo.

  2. Usando lo anterior, al momento de abrir un formulario te fijas si la variable que referencie al del otro tipo es nil o no y procedes según el caso.

// Saludos
Responder Con Cita
  #3  
Antiguo 26-02-2005
samantha jones samantha jones is offline
Miembro
 
Registrado: ago 2004
Posts: 46
Poder: 0
samantha jones Va por buen camino
Siendo practicos

if not assigned(form_child) then
form_child:=tform_child.Create(Self);
form_child.show;

y en el evento onDestroy de la forma hija

inherithed;
form_child:=nil;
Responder Con Cita
  #4  
Antiguo 26-02-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Colega, Puedes usar esto:

Código Delphi [-]
procedure Tform1.Button1Click(Sender: TObject);
var
  I:integer;
begin
    for I:=0 to MDIChildCount-1 do
      if MDIChildren[i] is Tform2child then begin
        MDIChildren[i].Show;
        Exit;
      end;
      form2child:=Tform2child.Create(Application);
end;

Siendo form1=MDIFORM con un boton el cual llamara Form2child=MDICHILD
Responder Con Cita
  #5  
Antiguo 26-02-2005
Avatar de @-Soft
@-Soft @-Soft is offline
Miembro
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 200
Poder: 22
@-Soft Va por buen camino
Thumbs up

hola

Cita:
1) como puedo hacer para que si llamo a un form child, mientras este se visualiza, si vuelvo a la opcion de menu a llamarlo no me aparezca otro, sino que se de cuenta de q uno ya se esta ejecutando y le de el foco a ese...
bueno este punto yo lo he realizado asi, en el evento OnClose del Form coloco el codigo

Código Delphi [-]
frmMiForm := Nil;

y al ejecutarlo

Código Delphi [-]

if frmMiForm = Nil then
begin
   Application.CreateForm(TfrmMiForm, frmMiForm);
   frmMiForm.Show;
end;

y esto evitara que se pueda volver a abrir el formulario. Esto fue lo que roman te explico, pero yo te lo traduje a codigo.

Salu2
__________________
Ivan Lora

http://www.arrobasoft.da.ru

Valientes son aquellas personas que triunfan donde otros fracasan.
Bienaventurado los que nada esperan porque jamas seran defraudados.

Última edición por @-Soft fecha: 26-02-2005 a las 13:09:44.
Responder Con Cita
  #6  
Antiguo 26-02-2005
pablo pablo is offline
Miembro
 
Registrado: oct 2003
Ubicación: Argentina . Junin
Posts: 78
Poder: 21
pablo Va por buen camino
respecto a MDI

Muchas gracias chicos!!
ahora mi oregunta es: Quiero hacer una aplicacion MDI, de unos 15 formas mas o menos, son todos abms sencillos, pero es para una maquina Pentium de 32mb de ram (medio viejarda), es ineficiente que cada vez q quiera abrir un form lo tenga q crear.... no hay alguna maneja de dejar los forms mdi que mas se usan ya creados y q se muestren cuando yo quiero?

un saludo y gracias
pablo
__________________
Pablo Tello
Responder Con Cita
  #7  
Antiguo 28-02-2005
Avatar de @-Soft
@-Soft @-Soft is offline
Miembro
 
Registrado: may 2003
Ubicación: Santo Domingo, Rep. Dom.
Posts: 200
Poder: 22
@-Soft Va por buen camino
Red face

hola

como te respondieron en otro hilo, al tener todos los formularios en memoria, mantienes todos los recursos tambien ocupando memoria y es obvio que la aplicacion funcionara mucho mas lenta, no en principio, pero cuando tenga unos cuantos meses o años y uno cientos o miles de registros y ahi de ti si no has normalizado tus tablas o base de datos. sera desastros y peor aun si lo vas a usar en una red.

Salu2
__________________
Ivan Lora

http://www.arrobasoft.da.ru

Valientes son aquellas personas que triunfan donde otros fracasan.
Bienaventurado los que nada esperan porque jamas seran defraudados.
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


La franja horaria es GMT +2. Ahora son las 18:41:56.


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