Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Traer al frente un fromHijo (https://www.clubdelphi.com/foros/showthread.php?t=53996)

Zakio14 06-03-2008 02:03:44

Traer al frente un fromHijo
 
Pura vida Foro!!

Mi consulta es la siguiente.

Tengo un From Madre y tengo un Botón que llama a una Ventana Hija.

Cada vez que clicko en este botón me crea una ventana nueva y eso me irrita de cierto modo, lo que quiero es crear una función que me cree el fromHijo si no esta creada, pero si ya esta creada que me la llame al frente de las demás pero sin volver a crearla.

Mi consulta es: Que Algoritmo uso para llamar esto, les agradezco toda ayuda que me puedan brindar.. Mil Gracias :confused:

Caral 06-03-2008 02:07:30

Hola
Codigo?
Con que codigo llamas al from?
Recuerda si nos das detalles podremos hacer algo mas.
Saludos

eduarcol 06-03-2008 02:43:51

utiliza la variable global que se genera en la unit del formulario.

Código Delphi [-]
Form2: TForm2;

En las propiedades del proyecto quitalo de los autocreate y pasalo a los avalaible, agrega este codigo al boton.

Código Delphi [-]
if not Assigned(Form2) then
      Form2 := TForm2.Create(Application);

   Form2.Show;

jachguate 06-03-2008 04:15:37

Bueno, yo lo hago mas o menos como dice Eduarcol, con formularios padres/hijos. Supongo que las mismas reglas aplican para formularios Madres/hijas... :D:D

Digamos que para completar el algoritmo, aporto lo siguiente:

Código Delphi [-]
  if not Assigned(Form2) then
    Form2 := TForm2.Create(Application)
  else if Form2.WindowSate = wsMinimized then
    Form2.WindowSate = wsNormal;
  Form2.BringToFront;

Obviamente, hay que tener cuidado de que la variable Form2 se asigne a nil al momento de destruir el formulario para que esto funcione adecuadamente.

Hasta luego.

;)

Zakio14 08-03-2008 03:19:00

Pura Vida!

Gracias por su ayuda eso me funciono bien!! Mil Millones de Gracias

Gracias porque siempren me sacan mis dudas!!

Zakio14 08-03-2008 17:26:28

Pura Vida Foro!

Bueno Este codigo lo encontre y me funciona a la perfeccion!!!

Lo Pongo aqui por si alguien lo llega a necesitar...
Código Delphi [-]
 
//Esta funcion se crea en Public
 
function ExisteForm(Formulario : string) : boolean;

// Esta funcion ya definida en el Public
function TPrincipal.ExisteForm(Formulario : string) : boolean;
var
   ChildIndex : integer; 
begin
  ChildIndex := 0;
  result := false;
  while (ChildIndex < MDIChildCount) and (not result) do
    begin
      if MDIChildren[ChildIndex].Name = Formulario then
         result := true
      else 
          inc(ChildIndex);
    end;
  if result then
     MDIChildren[ChildIndex].BringToFront;
end;
 
 
// Esto se coloca en el llamado del formulario hijo MDI
 if not ExisteForm('FMatricBach') then  //Primero se llama esta función para asegurarnos de que no existe el formulario
     begin                                          // ExisteForm es la funcion creada aqui la llamamos
       FMatricBach := TFMatricBach.Create(Application);
       FMatricBach.show; //no uso showModal
     end;

//Esta función es llamada cada vez que se abre un Formulario desde Menú
//para asegurarnos de que no se encuentra ya abierto el mismo 
//Buscamos entre los formularios hijos abiertos, si no esta cargado se carga
//De lo contrario se trae al frente de los demás.
Hasta la proxima foristas...

jachguate 11-03-2008 04:53:36

Hola. Por favor, utilizá la etiqueta delphi para publicar trozos de código. He editado tu mensaje para añadirla, y espero que coincidas conmigo en que la presentación del mensaje está mucho mejor ahora.

Hasta luego.

;)


La franja horaria es GMT +2. Ahora son las 16:23:30.

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