[Lazarus-es] Listado de todos los formularios de la aplicación

Antonio Évora aevorar en gmail.com
Jue Jul 12 13:02:25 CEST 2012


El 11/07/12 15:52, Maxi escribió:
>
>
> El 9 de julio de 2012 14:12, Antonio Evora <aevorar en gmail.com 
> <mailto:aevorar en gmail.com>> escribió:
>
>     Hola Christian,
>     El problema es que no lista todos los formularios de la
>     aplicación. Me explico:
>     Tengo un proyecto con dos formularios (form1 y form2)y un modulo
>     de datos (dmDatos). Inicialmente cargo dmDatos y form1 (quedando
>     form2 sin cargar pues se hara dinámicamente)
>     En este ejemplo, justamente después de ejecutar, en el objeto
>     Application.Components estaria form1 y dmDatos y en Screen.Forms
>     estaria solamente form1, pero form2 no aparece por ninguna parte.
>     Lo que busco es alguna rutina capaz de devolver justamente
>     después de ejecutar form1, form2 y dmDatos.
>
>     Un cordial saludo y gracias de antemano.
>
>     Enviado desde mi iPad
>
>     El 09/07/2012, a las 14:49, Christian <xortix en gmail.com
>     <mailto:xortix en gmail.com>> escribió:
>
>     > Que tal si agregas
>     >
>     > if application.component[n] is tform then
>     >
>     > Enviado desde Samsung tablet
>     >
>     > Antonio Ã0/00vora <aevorar en gmail.com <mailto:aevorar en gmail.com>>
>     escribió:
>     >
>     >> Hola a tod en s,
>     >> Necesito listar todos los formularios de una aplicación
>     (creados y sin
>     >> crear).
>     >>
>     >> He probado con este código:
>     >>
>     >> procedure MuestraForms();
>     >> var
>     >> Â n: integer;
>     >> Â Salida1,
>     >> Â Salida2: string;
>     >> begin
>     >> Â Salida1:='';
>     >> Â Salida2:='';
>     >> Â for n:=0 to Application.ComponentCount-1 do
>     >> Â begin
>     >> Â Â Salida1:=Salida1+Application.Components[n].Name+LineEnding;
>     >> Â end;
>     >> Â for n:=0 to Screen.FormCount-1 do
>     >> Â begin
>     >> Â Â Salida2:=Salida2+Screen.Forms[n].Name+LineEnding;
>     >> Â end;
>     >>
>     >>
>     Application.MessageBox(Salida1+LineEnding+LineEnding+Salida2,'',64);
>     >> end;
>     >>
>     >> Segun la documentación que he leido (de Delphi) con
>     >> Application.Components deberia de listarme todos los
>     formularios de la
>     >> aplicacion, pero esto no es asi. La diferencia entre utilizar
>     el objeto
>     >> Application y Screen, es que el primero (Application) también me
>     >> devuelve el modulo de datos, mientras que Screen me devuelve
>     solamente
>     >> los formularios, y en los dos casos solamente los que están
>     cargados en
>     >> memoria.
>     >>
>     >> También he leído que esto se puede hacer en Delphi 2010
>     usando RTTI,
>     >> pero utiliza unidades no existentes en Lazarus.
>     >>
>     >> ¿Tiene esto solución? ¿Es un bug de Lazarus/FPC?
>     >>
>     >> Un cordial saludo y gracias de antemano.
>     >>
>     >> _______________________________________________
>     >> Lazarus-es mailing list
>     >> Lazarus-es en lists.lazarus.freepascal.org
>     <mailto:Lazarus-es en lists.lazarus.freepascal.org>
>     >> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>     > _______________________________________________
>     > Lazarus-es mailing list
>     > Lazarus-es en lists.lazarus.freepascal.org
>     <mailto:Lazarus-es en lists.lazarus.freepascal.org>
>     > http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
>     _______________________________________________
>     Lazarus-es mailing list
>     Lazarus-es en lists.lazarus.freepascal.org
>     <mailto:Lazarus-es en lists.lazarus.freepascal.org>
>     http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
>
> Si no está creado form2 nunca te va a aparecer, ademas debes tener en 
> cuenta si al momento de crearlo que parent le diste.
> Si haces Tform2.Create(nil) no tiene pariente y no va a aparecer. 
> deberias crealo con pariente Application.
>
> -- 
> El que pregunta aprende, y el que contesta aprende a responder.
>
> No a la obsolecencia programada: 
> http://dimensionargentina.blogspot.com/2011/01/todo-esta-disenado-para-romperse.html
>
> Linux User #495070
> http://domonetic.com/blog
>
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
Hola Maxi, gracias por contestar.
Entonces no es posible como yo pretendía/creía. ¿Y mediante RTTI? Ya que 
los formularios forman parte de la aplicación y en "algún sitio" están 
guardados.

¿Alguna idea?
Un saludo.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20120712/20fdf8c1/attachment-0002.html>


More information about the Lazarus-es mailing list