Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   FireMonkey (https://www.clubdelphi.com/foros/forumdisplay.php?f=50)
-   -   Llamar Forma por Nombre Migrar de VCL a FMX (https://www.clubdelphi.com/foros/showthread.php?t=95485)

ASAPLTDA 09-12-2021 17:20:38

Llamar Forma por Nombre Migrar de VCL a FMX
 
buenos dias Foristas,

He utilidado el siguiente procedure para llamar una forma por su nombre, al tratar de migrar el codigo genera error de compilacion , alguna persona conoce el metodo de hacerlo usando delphi firemonkey y ejecutar en android ? gracias por su aporte

Código Delphi [-]
procedure CreateFormFromName( const FormName : string);
var 
  fc : TFormClass; 
  f  : TForm;
begin 
  fc := TFormClass(FindClass(FormName)); 
  f  := fc.Create(Application); f.Show;
end;

cloayza 09-12-2021 21:18:34

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.


La franja horaria es GMT +2. Ahora son las 07:01:22.

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