Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Stack call de formularios (https://www.clubdelphi.com/foros/showthread.php?t=76627)

NicoDominguez 14-11-2011 14:56:18

Stack call de formularios
 
Hola gente,
Eh estado buscando bastante, pero no encontre la forma de resolver mi problema.
Lo que quiero hacer, es en determinado momentos conocer el orden de invocacion de los formularios, el stack call.
Ej:
FormularioMAIN llama a form1.
Form1 llama a Form2.
Form2 llama a form3.
En este momento, en form3 necesito conocer el orden de invocacion, es decir, algo que me diga el orden en que fueron invocados los formularios.

Saludos y Gracias

Caro 14-11-2011 15:34:19

Hola NicoDominguez, con Screen.Forms puedes recorrer los formularios que están abiertos, en el orden que han sido creados.

Código Delphi [-]
  for i:=0 to screen.FormCount-1 do 
    showmessage(screen.Forms[i].Name); //en screen.Forms[0] esta el ultimo creado

Saluditos

NicoDominguez 14-11-2011 15:55:42

Cita:

Empezado por Caro (Mensaje 418434)
Hola NicoDominguez, con Screen.Forms puedes recorrer los formularios que están abiertos, en el orden que han sido creados.

Código Delphi [-] for i:=0 to screen.FormCount-1 do showmessage(screen.Forms[i].Name); //en screen.Forms[0] esta el ultimo creado


Saluditos

Muchas Gracias !!

NicoDominguez 14-11-2011 16:22:39

mmm hay un problema, eso me tira como 30 formularios, por mas que no esten abiertos.

yo necesito saber la cadena de invocacion solamente del form actual, es para registrar los llamados en un archivo de log.

Caro 14-11-2011 17:35:15

Cita:

Empezado por NicoDominguez (Mensaje 418441)
mmm hay un problema, eso me tira como 30 formularios, por mas que no esten abiertos.

Hola de nuevo, es porque todos tus formularios estan en autocreate (se estan creando automaticamente todos tus formularios aunque no los tengas abiertos (Project->Options)), yo te aconsejo que los quites de ahí y los crees manualmente, de esta forma solo estarán creados los que sean necesarios y no todos.

Código Delphi [-]
   Form2 := TForm2.Create(Self);
   ........................

Otra forma es que armes tu la cadena, creando tu formulario de la forma de arriba, puedes utilizar el Owner (propietario).

Código Delphi [-]
  Form2.CadenaInv := Self.Owner.Name;

Saluditos

newtron 14-11-2011 17:37:58

Hola.

Independientemente de lo que te comenta Caro puedes saber si el formulario está visible o no con la propiedad showing con lo cual puedes chequear en la lista de formularios disponibles los que están abiertos.

Saludos

NicoDominguez 14-11-2011 18:48:09

Muchas Gracias!!
Saludos


La franja horaria es GMT +2. Ahora son las 04:22:37.

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