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

Maxi maximiliano.duarte en gmail.com
Mie Jul 11 15:52:05 CEST 2012


El 9 de julio de 2012 14:12, Antonio Evora <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> escribió:
>
> > Que tal si agregas
> >
> > if application.component[n] is tform then
> >
> > Enviado desde Samsung tablet
> >
> > Antonio Évora <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
> >> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
> > _______________________________________________
> > Lazarus-es mailing list
> > 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
> 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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20120711/738ab775/attachment-0002.html>


More information about the Lazarus-es mailing list