Ver Mensaje Individual
  #2  
Antiguo 09-12-2021
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 913
Reputación: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
Estimado Colega, espero esto sea lo que requiere. Este le serviria para abrir cualquier form utilizando su clase...

Código Delphi [-]
unit Unit1;
interface
uses
  System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs,
  FMX.Controls.Presentation, FMX.StdCtrls;

type
 TFormClass = class of TForm;

  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    procedure CreateFormFromName(const FormName: string);
    procedure ShowForm(FormClass: TFormClass);
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
uses Unit2; {Contiene el TForm2}

{$R *.fmx}

procedure TForm1.ShowForm(FormClass: TFormClass);
begin
     With FormClass.Create(NIL) do
     Try
          Showmodal;
     Finally
          Free;
     End;
end;

procedure TForm1.CreateFormFromName( const FormName : string);
var
  fc : TFormClass;
begin
     try
      //Busca la clase, de existir procede a mostrar el form
       if FindClass(FormName)=nil then
          exit;

       fc:=TFormClass(FindClass(FormName));

       ShowForm(Fc);
     except
           ShowMessage(Format('Clase %s no encontrada',[FormName]));
     end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
       {Opción 1: Busca el form por su nombre de clase}
       CreateFormFromName('TForm2');

      {Opción 2:  Esto muestra el TForm2 sin realizar la busqueda de la clase}
       //ShowForm(TForm2);
end;

initialization
   {Las clases deben estar registradas, de lo contrario no las encontrará}
   RegisterClass(TForm2);
end.
Responder Con Cita