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

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

Aceitar