Problema ao fechar abas(TDI)

Delphi

CRUD - Delphi

ACBr

14/12/2023

Fala pessoal beleza? Pessoal eu estou com problema que quando eu vou fechar
uma aba de uma Form(TTDI) ele fecha tudo de uma vez quando eu vou fechar só uma!

unit View.Principal;

interface

uses
Winapi.Windows,
Winapi.Messages,
System.SysUtils,
System.Variants,
System.Classes,
Vcl.Graphics,
Vcl.Controls,
Vcl.Forms,
Vcl.Dialogs,
Vcl.ExtCtrls,
Vcl.StdCtrls,
TDI,
View.Base,
View.tdi.base,
View.tdi.filial,
View.tdi.home,
View.tdi.Venda,
Vcl.Imaging.pngimage;

type
TViewPrincipal = class(TViewBase)
PnlTopo: TPanel;
PnlMenu: TPanel;
PnlBackGround: TPanel;
BtnTeste: TButton;
PnlTdi: TPanel;
Button1: TButton;
Button2: TButton;
PnlLogoSistema: TPanel;
PnlImgLogoSistema: TPanel;
ImgLogoSistemaBranca: TImage;
PnlNomeEmpresa: TPanel;
ImgLogoSistemaAzul: TImage;
Label1: TLabel;
Label2: TLabel;
PnlMaisUsados: TPanel;
PnlUsuario: TPanel;
PnlImgUser: TPanel;
ImgUserBranca: TImage;
ImgUserAzul: TImage;
PnlDadosUser: TPanel;
LblNome: TLabel;
LblTipoUser: TLabel;
procedure FormShow(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure ImgLogoSistemaBrancaMouseEnter(Sender: TObject);
procedure ImgUserBrancaMouseEnter(Sender: TObject);
procedure ImgUserAzulMouseLeave(Sender: TObject);
procedure ImgLogoSistemaAzulMouseLeave(Sender: TObject);
procedure ImgLogoSistemaAzulClick(Sender: TObject);
procedure BtnTesteClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
var
FTDI : TTDI;

end;

var
ViewPrincipal: TViewPrincipal;

implementation

{$R *.dfm}

procedure TViewPrincipal.FormShow(Sender: TObject);
begin
inherited;
FTDI := TTDI.Create(pnlTDI, TViewHomeTDI);
FTDI.MostrarMenuPopup := False;

end;

procedure TViewPrincipal.BtnTesteClick(Sender: TObject);
begin //Vendas
inherited;
FTDI.MostrarFormulario(TViewVendasTDI, true);
end;

procedure TViewPrincipal.Button2Click(Sender: TObject);
begin //Filial
inherited;
FTDI.MostrarFormulario(TViewFilialTdi, true);
end;


procedure TViewPrincipal.Button1Click(Sender: TObject);
begin
inherited;
Close;
end;

end.
Emanoel Carvalho

Emanoel Carvalho

Curtidas 0

Melhor post

Arthur Heinrich

Arthur Heinrich

14/12/2023

Você está fechando o form TDI clicando no [X] (no título da janela TDI), ou está clicando no Button1, que executa o Close?

Aparentemente, no Button1, o Close é do componente TViewPrincipal e não das janelas TDI (TViewHomeTDI, TViewVendasTDI, etc.).

Imagino que você precisaria identificar o form ativo e executar o Close dele.
GOSTEI 1

Mais Respostas

Emanoel Carvalho

Emanoel Carvalho

14/12/2023

Você está fechando o form TDI clicando no [X] (no título da janela TDI), ou está clicando no Button1, que executa o Close?

Aparentemente, no Button1, o Close é do componente TViewPrincipal e não das janelas TDI (TViewHomeTDI, TViewVendasTDI, etc.).

Imagino que você precisaria identificar o form ativo e executar o Close dele.


Esse "Close" e pra fechar o meu sistema, ele não tem nada ligado ai TDI. Eu estou fechando a minha aba TDI no [X] mesmo!
GOSTEI 0
Arthur Heinrich

Arthur Heinrich

14/12/2023

Neste caso, ao clicar no X, deveria chamar o evento OnCloseQuery, ou algo do tipo.

Basta executar:

Action:=caFree;

Ao sair do evento, o form se fecha e libera a memória.

Se está fechando os demais, é sinal de que tem algum outro evento sendo tratado e está fechando os demais forms.
GOSTEI 0
Emanoel Carvalho

Emanoel Carvalho

14/12/2023

Neste caso, ao clicar no X, deveria chamar o evento OnCloseQuery, ou algo do tipo.

Basta executar:

Action:=caFree;

Ao sair do evento, o form se fecha e libera a memória.

Se está fechando os demais, é sinal de que tem algum outro evento sendo tratado e está fechando os demais forms.




Cara eu fui ver e percebi que isso só acontece na versão do delphi11, porem o motivo eu não sei !
GOSTEI 0
POSTAR