Form Fecha e depois não abri mais (FireMonkey)

07/02/2022

0

Bom dia pessoal. Estou desenvolvendo um projeto em Delphi no Firemonkey.
Tenho um Form1 Principal e dentro desse Form1 eu coloquei :
1 ToolBar
1 Layout. O Layout eu renomeei para LayoutPrincipal.
1 Botao

Tenho outro formulario e nesse outro Form2 eu coloquei:
1 Layout e renomeei ele para Layout_Principal.
1 Botao (para fechar o Form2)

O que estou querendo fazer é o seguinte. Ao clicar no botao do Form1 ele pegar as informações contidas no Form2 (Layout_Principal) e jogar dentro do Form1 ( LayoutPrincipal). A principio o código esta fazendo o procedimento direito. O problema esta quando eu fecho o Form2, se eu quiser abir ele de novo o mesmo nao abri. Abaixo vou colocar os códigos que estou usando em cada form.

Form1:
unit uPrincipal;

interface

uses
  System.SysUtils, System.Types, System.UITypes, System.Classes,
  System.Variants,
  FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Menus,
  FMX.Layouts, FMX.Controls.Presentation, FMX.StdCtrls;

type
  Tfrm_Principal = class(TForm)
    ToolBar1: TToolBar;
    LayoutPrincipal: TLayout;
    Button1: TButton;
    procedure MenuDeslogarClick(Sender: TObject);
    procedure Button1Click(Sender: TObject);
  private

    FFormularioAtivo: TForm;
    procedure AbrirJanela(AClasseFormulario: TComponentClass);

    { Private declarations }
  public
    { Public declarations }
  end;

var
  frm_Principal: Tfrm_Principal;

implementation

{$R *.fmx}

uses uLF_Jogos;

procedure Tfrm_Principal.AbrirJanela(AClasseFormulario: TComponentClass);
var
  LayoutBase: TComponent;
begin
  if Assigned(FFormularioAtivo) then
  begin
    if FFormularioAtivo.ClassType = AClasseFormulario then
    begin
      Exit
    end
    else
    begin
      FFormularioAtivo.DisposeOf;
      FFormularioAtivo := nil;
    end;
  end;
  Application.CreateForm(AClasseFormulario, FFormularioAtivo);
  LayoutBase := FFormularioAtivo.FindComponent('Layout_Principal');
  if Assigned(LayoutBase) then
    LayoutPrincipal.AddObject(TLayout(LayoutBase));
end;

procedure Tfrm_Principal.Button1Click(Sender: TObject);
begin

  // FFormularioAtivo.DisposeOf;
  // FFormularioAtivo := nil;
  AbrirJanela(Tfrm_Resultados_LF);

end;

procedure Tfrm_Principal.MenuDeslogarClick(Sender: TObject);
begin
  Close;
end;

end.


Form2: (quando fecho o form)
procedure Tfrm_Resultados_LF.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin


  action := TCloseAction.caFree;
  frm_Resultados_LF := nil;

end;


Acima os códigos. Quando fecho o Form2, é como se ele não tirasse o Form2 da memoria. O que podemos fazer para o código funcionar?
Rubens Pena

Rubens Pena

Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar