Ir al contenido


Foto

Cargando la lista de formularios de una aplicación en un TreeView


  • Por favor identifícate para responder
4 respuestas en este tema

#1 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 01 julio 2012 - 03:29

Pues eso, quiero listar todos los formularios de la aplicación en un Treeview, tengo lo siguiente:



delphi
  1. var c: Integer;
  2.     Nodo: TTreeNode;
  3. begin
  4.   for c := 0 to Application.ComponentCount - 1 do
  5.     begin
  6.       trModulos.Items.Clear;
  7.       Nodo := trModulos.Items[0];
  8.       if Components[c] is TForm then
  9.         begin
  10.           trModulos.Items.AddChild(Nodo,TForm(Components[c]).Name);
  11.         end;
  12.     end;
  13. end;



Pero me indica un error de Invalid Index, el TreeView ya tiene un Nodo y quiero agregarlo como hijos, no sé qué sucede pues.

Saludos.
  • 0

#2 enecumene

enecumene

    Webmaster

  • Administrador
  • 7.419 mensajes
  • LocationRepública Dominicana

Escrito 01 julio 2012 - 04:13

Bueno hice el siguiente arreglo:



delphi
  1. var c: Integer;
  2. begin
  3.   trModulos.Items.Clear;
  4.   for c := 0 to Application.ComponentCount -1 do
  5.     begin
  6.       if Application.Components[c] is TForm then
  7.         begin
  8.           trModulos.Items.Add(nil,Application.Components[c].Name);
  9.         end;
  10.     end;
  11. end;



Pero sólo me muestra el formulario principal, hasta ahora la aplicación tiene 5 formularios, ¿Qué debo hacer para mostrar todos los formularios de la aplicación aún cuando no está creada?.

Saludos.
  • 0

#3 Delphius

Delphius

    Advanced Member

  • Administrador
  • 6.301 mensajes
  • LocationArgentina

Escrito 01 julio 2012 - 06:47

Prueba con Screen.Forms[] y Screen.FormCount, aunque esto solo cuenta los descendientes de TForm que están en la aplicación, para algo genérico (y que no descienden de TForm) se debe emplear .CustomForms y .CustomFormCount.

Saludos,
  • 0

#4 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 02 julio 2012 - 01:22

Buenas,

Creo que lo que te comenta Delphius sólo sirve para formularios creados. Si lo que quieres es una lista de los posibles formularios que puedes crear desde tu formularios principal, yo iría más por el lado de las clases y ver qué clases hay registradas en ese formulario. Dado que no puedes acceder a la lista de las clases registradas mediante una función como RegisterClass y demás, he buscado en Google y he visto esta página que quizás pueda orientarte

http://www.swissdelp...ode.php?id=1218

Espero te sirva

Nos leemos

  • 0

#5 escafandra

escafandra

    Advanced Member

  • Administrador
  • 4.111 mensajes
  • LocationMadrid - España

Escrito 02 julio 2012 - 06:40

Si quieres listar todos los formularios de tu aplicación antes de que se creen, hazlo en tiempo de diseño.
Si quieres listarlos en tiempo de ejecución tendrás que esperar a que existan. Una sulución puede ser que cada uno se automuestre al ser creado, en su método Create.

En definitiva si el TreeView va a actuar de menú puedes tratarlo en tiempo de diseño. Si es dínámico los formularios deben existir.



Saludos.
  • 0




IP.Board spam blocked by CleanTalk.