Problema ao fechar abas(TDI)
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.
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
Curtidas 0
Melhor post
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.
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
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.
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
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.
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
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.
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