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:
Form2: (quando fecho o form)
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?
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)