¡Buen día a todos!
Mauro:
Una manera de hacerlo es asegurándote de que cada clase de forma (
formulario, como tu le llamas) sea registrada al inicio de la aplicación. Así, podrás utilizar un objeto
TClassFinder para obtener una lista de todas las formas registradas, aún cuando no se tenga creada una instancia de alguna de ellas.
Supongiendo que tenemos dos formas en nuestra aplicación, TForm1 y TForm2, dónde la primera es autocreada como forma principal y la segunda no se instancía en ningún momento; con el código
Código Delphi
[-]
...
implementation
{$R *.dfm}
Initialization
RegisterClass (TForm2);
end.
al final de la unidad de la forma Form2, y el código
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
Procedure FormaRegistrada (Clase :TPersistentClass);
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
Procedure TForm1.FormaRegistrada (Clase :TPersistentClass);
Begin
If (Clase <> TForm) And Clase.InheritsFrom (TForm) Then
Memo1.Lines.Add (Clase.ClassName);
End;
procedure TForm1.Button1Click(Sender: TObject);
begin
Memo1.Clear;
With TClassFinder.Create Do
Try
GetClasses (FormaRegistrada);
Finally
Free;
End;
end;
Initialization
RegisterClass (TForm1);
end.
en la unidad de TForm1, al oprimir el usuario el botón Button1 se introducirán en el cuadro de texto Memo1 los nombres de las dos clases de formas (TForm1 y TForm2).
Así pues, para cada forma adicional del proyecto sólo hay que agregar su respectivo registro (
RegisterClass (TFormX);) en la sección Initialization de su unidad .pas.
Espero esto sea de utilidad, seguimos en contacto.
Al González.
Echale un vistazo a los nuevos Cursos Delphi