Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Listar todos los nombres de los Formularios de mi aplicacion (https://www.clubdelphi.com/foros/showthread.php?t=64578)

gabriel_exe 08-04-2009 05:11:01

Listar todos los nombres de los Formularios de mi aplicacion
 
Hola a todos! estoy trabajando con DELPHI 2007 queria preguntarles: si saben como mostrar todos los nombre de los formularios de mi aplicacion en un listbox?¿?¿??¿¿?¿?¿?,para despues seleccionar uno de esa lista.Les voy agradecer un monton, por q la verdad no tengo ni idea:confused: jeje:D

Neftali [Germán.Estévez] 08-04-2009 09:32:06

Puedes acceder a los forms creados utilizando TScreen.Forms[i] y FormCount

Código Delphi [-]
  for i := 0 to Screen.FormCount do begin
    fName := Screen.Forms[i].Name;
    ...
  end;

dec 08-04-2009 09:36:34

Hola,

Falta el "menos uno" Neftalí, so pena de enfrentarnos a un "Index out of bounds".

Código Delphi [-]
var
  i, len: integer;
begin
  len := Screen.FormCount-1;
  for i := 0 to len do begin
    ShowMessage(Screen.Forms[i].Name);
  end;
end;

Nótese que prefiero además almacenar la "longitud" del bucle en una variable, será por leer a Francisco Charte. ;)

Neftali [Germán.Estévez] 08-04-2009 10:14:51

Cita:

Empezado por dec (Mensaje 344320)
Falta el "menos uno" Neftalí, so pena de enfrentarnos a un "Index out of bounds".

Hazle caso a Dec, que sabe de lo que habla... ;);)

Casimiro Notevi 08-04-2009 11:32:26

Cita:

Empezado por dec (Mensaje 344320)
Hola,
Falta el "menos uno" Neftalí, so pena de enfrentarnos a un "Index out of bounds".Código Delphi [-]var i, len: integer; begin len := Screen.FormCount-1; for i := 0 to len do begin ShowMessage(Screen.Forms[i].Name); end; end;


Nótese que prefiero además almacenar la "longitud" del bucle en una variable, será por leer a Francisco Charte. ;)

[off topic]
Tengo la costumbre de hacer eso, aunque a veces me resisto porque no me parece realmente necesario y acabo haciéndolo sin usar una variable, ¿qué dice F. Charte al respecto?, es que me ha llamado la atención ese comentario tuyo
[/off topic]

dec 08-04-2009 11:39:51

Hola,

No puedo enlazarte el artículo en cuestión Casimiro (no lo encuentro). Pero, en todo caso, es una cuestión de ahorro de recursos. Si no es extrictamente necesario, en lugar de usar un método o función que mida (a cada paso del bucle) la longitud que nos interesa, podemos almacenar esa longitud en una variable, que será lo que usemos a cada paso del bucle.

PD. Definitivamente Charte lo explica mejor que yo. :D :D

Casimiro Notevi 08-04-2009 16:10:56

Cita:

Empezado por dec (Mensaje 344335)
[..]PD. Definitivamente Charte lo explica mejor que yo. :D :D

¿Se puede explicar mejor?, lo dudo :)

roman 08-04-2009 16:53:21

Cita:

Empezado por dec (Mensaje 344320)
Nótese que prefiero además almacenar la "longitud" del bucle en una variable, será por leer a Francisco Charte. ;)

Supongo que Francisco Charte no se ha percatado de que el compilador de delphi evalúa el límite final sólo una vez al comienzo del ciclo for y no en cada vuelta ;)

Pruébenlo:

Código Delphi [-]
function Limit(): Integer;
begin
  ShowMessage('Estableciendo el límite');
  Result := 3;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;

begin
  for I := 1 to Limit() do
    ShowMessage(Format('Vuelta %d', [i]));
end;

// Saludos

Caro 08-04-2009 17:15:26

Cita:

Empezado por roman (Mensaje 344378)
Supongo que Francisco Charte no se ha percatado de que el compilador de delphi evalúa el límite final sólo una vez al comienzo del ciclo for y no en cada vuelta ;)

Pruébenlo:

Ya lo he probado amiguito y es como dices, solo evalúa la primera ves ;).

Saluditos

gabriel_exe 08-04-2009 18:05:04

Listar todos los nombres de los Formularios de mi aplicacion
 
Muchas gracias a todos por las respuestas, me van a servir de mucho por que la verdad no sabia por donde empesar jeje:D ahora a programar se ha dicho! jeje:)
Saludos

dec 08-04-2009 18:10:48

Hola,

Je je je,... se ve que no he tenido en cuenta lo que dice Román. Ciertamente, Francisco Charte hablaba de C (no recuerdo si de C++) en su artículo... no de Delphi... lo cierto es que a mí se me ha quedado como una costumbre (creo que buena) y que uso en el lenguaje que sea... pero no está mal saber que en Delphi las cosas son distintas. ;)

PD. Francisco Charte no ha errado, pues él hablaba de C o de C++, no recuerdo bien, y no de Delphi. He sido yo el metepatas. :D


La franja horaria es GMT +2. Ahora son las 10:53:18.

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