Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   lista de formularios (https://www.clubdelphi.com/foros/showthread.php?t=2208)

jpep 14-07-2003 13:04:52

lista de formularios
 
Buenaaas:

Pues eso, que lo que necesito es una lista de los formularios de la aplicación. He mirado en el objeto Application, ya que es el el que los construye para ver si tenia una lista, pero no he encontrado nada.

Podria recorrer la lista de componentes de application y ver si es un form, pero me parece un poco "cochino", sobre todo si tengo muchos controles.

No se como almacena delphi los forms, pero a mi me parece que lo mas logico es en un TList (lo que me vendria de categoria), pero ¿donde esta este?. ¿Hay alguna forma más "elegante" que la que digo en el segundo parrafo?

Gracias por vuestra ayuda.

UN SALUDO

andres1569 14-07-2003 13:22:14

Hola:

Mira las propiedades Forms y FormCount, así como CustomForms y CustomFormCount del objeto global Screen. Ahí está la lista que andas buscando.

Un saludo,

Investment 14-07-2003 13:36:15

En la pestaña Forms de la opcion Proyect/Options también tienes una lista con los formularios que usa tú aplicación.

jpep 20-07-2003 06:35:11

Muchas gracias por vuestras respuestas.

Andres: efectivamente es eso lo que estaba buscando. Sin embargo tengo una duda, ¿como es que esa lista está en el objeto screen? si está en este objeto tan global, ¿no contendrá todos los formularios creados, aunque no sean de mi aplicación?.

Un saludo

roman 20-07-2003 15:27:00

Cita:

Posteado originalmente por jpep
...¿no contendrá todos los formularios creados, aunque no sean de mi aplicación?.

No. Únicamente los de tu aplicación, visibles o no.

jpep 20-07-2003 20:59:18

O.K. Gracias

andres1569 20-07-2003 22:19:05

A mí también me extrañó en su día que esta lista de formularios fuera mantenida por un objeto como Screen, que más bien parece destinado a informar de ciertas variables de entorno referentes a la pantalla.

Vería más lógico que estuvieran estas listas en otro objeto global como es Application. Supongo que Borland tendrá sus razones. Como ya te aclaró Román, sólo mantiene una lista con los formularios de la aplicación.

jachguate 21-07-2003 13:32:22

Que tal.

Pues a simple vista parece que el objeto indicado es el Application, sin embargo, no en todos los contextos es aplicable y muchas veces Application no es el owner de las formas. No se si Screen será el idoneo, pero en lo personal me parece mas adecuado que application.

Parece tema de un buen debate, no?

Hasta luego.

;)

Ruben_Cu 22-07-2003 05:06:54

Hola muchachos, solo un señalamiento.
El uso del TScreen no tiene en cuenta las form disponibles a menos que esten creadas, solo cuenta las autocreadas.
¿Como podrían listarse todas las que contiene el proyecto? así como aparecen en un listbox cuando pinchas en el botón de form del menú de Delphi
Estuve revisando la ayuda y hasta ahora no he encontrado nada al respecto.
Seguimos buscando, buen tema.
Saludos

jachguate 23-07-2003 01:06:46

Que tal.

El objeto Screen tiene una lista de todas las formas creadas, ya sea autocreadas, o creadas mas adelánte por código.

Las formas disponibles... eso es otro asunto y no hay ningún lugar donde podas encontrarlas, salvo que vos crees tu propia lista y un mecanismo de registro de clases en tus formas.

Quizas te ayude a aclarar la idea este hilo

Hasta luego.

;)

andres1569 26-07-2003 12:48:11

Hola:

Jachguate escribió:
Cita:

Pues a simple vista parece que el objeto indicado es el Application, sin embargo, no en todos los contextos es aplicable y muchas veces Application no es el owner de las formas. No se si Screen será el idoneo, pero en lo personal me parece mas adecuado que application.

Parece tema de un buen debate, no?
Application no siempre será el Owner de todas las formas, pero mucho menos lo es Screen. El contexto en que ambas variables globales se encuentran es el mismo, de hecho ambas son inicializadas y detruidas en la misma unit Controls, de modo que basta con que nuestro programa lleve un control (o un solo formulario) para que empiecen a rodar. Si hablamos de un ejecutable sin Forms, entonces de nada nos interesa acceder a esa lista.

Creo que el ponerlo en la variable Screen es algo arbitrario, sencillamente en el constructor del TForm se hace un Screen.AddForm (Self), como se hubiera podido hacer Application.AddForm (Self).

Lo de tener una lista con los formularios disponibles, me uno a la solución propuesta, bastaría registrar la clase de cada formulario en una lista (en la sección Initialization de la unit del Form), y sería interesante disponer de una factoría de clases que creara el formulario apetecido suministrándole un nombre (el de la clase u otro más descriptivo).


La franja horaria es GMT +2. Ahora son las 19:29:57.

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