Destruir um Panel
22/02/2016
0
Ola Pessoal... tenho um form e com um Botão crio um panel e dentro desse panel eu crio button, DBGrid, DBEdit, etc...até ai tudo ok.
O problema esta quando quero voltar FORM na forma original ou seja "destruir" o panel . obs. criei um BitBtn dentro do panel e no evento onclick do BitBtn ja coloquei :panel.free; ou panel.destroy o problema é que dá um erro... mais o panel some
procedure TFormTransbordo.SAIR(sender:TObject);
begin
Panel_Transbordo.FREE;
end;
PROCEDURE TFormTransbordo.transbordo1Clic (sender:TObject);
begin
Panel_Transbordo:=TPanel.Create(Application);
try
Panel_Transbordo.Parent:=FormTransbordo;
Panel_Transbordo.Top:=0;
Panel_Transbordo.Left:=0;
Panel_Transbordo.Height:=649;
Panel_Transbordo.Width:=700;
BT_SAIR:=TBitBtn.Create(Panel_Transbordo);
with BT_SAIR do
begin
Parent:=Panel_Transbordo;
Top:=85;
Left:=950;
Height:=520;
Width:=100;
OnClick:=SAIR
end;
FINALLY
end; end;
Então pessoal alguém sabe o que eu estou fazendo de Errado...
O problema esta quando quero voltar FORM na forma original ou seja "destruir" o panel . obs. criei um BitBtn dentro do panel e no evento onclick do BitBtn ja coloquei :panel.free; ou panel.destroy o problema é que dá um erro... mais o panel some
procedure TFormTransbordo.SAIR(sender:TObject);
begin
Panel_Transbordo.FREE;
end;
PROCEDURE TFormTransbordo.transbordo1Clic (sender:TObject);
begin
Panel_Transbordo:=TPanel.Create(Application);
try
Panel_Transbordo.Parent:=FormTransbordo;
Panel_Transbordo.Top:=0;
Panel_Transbordo.Left:=0;
Panel_Transbordo.Height:=649;
Panel_Transbordo.Width:=700;
BT_SAIR:=TBitBtn.Create(Panel_Transbordo);
with BT_SAIR do
begin
Parent:=Panel_Transbordo;
Top:=85;
Left:=950;
Height:=520;
Width:=100;
OnClick:=SAIR
end;
FINALLY
end; end;
Então pessoal alguém sabe o que eu estou fazendo de Errado...
Anderson Honorato
Curtir tópico
+ 0
Responder
Posts
23/02/2016
Rafael Bosco
No momento da criação do panel você está jogando como Owner dele a Aplicação, sugiro alterar para NIL :
Posteriormente faça da seguinte forma:
Depois só jogar essa procedure dentro do evento do botão que você criou, ficando assim:
Panel_Transbordo:=TPanel.Create(nil);
Posteriormente faça da seguinte forma:
procedure DestroyPanel(const Form: TForm; const NamePanel: String); var Component: System.Classes.TComponent; begin for Component in Form do begin if (Component is TPanel) then begin if (TPanel(Component).Name = NamePanel) then begin TPanel(Component).Free; // Qualquer coisa, teste usando o Destroy e/ou FreeAndNil; System.Break; end; end; end; end;
Depois só jogar essa procedure dentro do evento do botão que você criou, ficando assim:
procedure TFormTransbordo.SAIR(Sender: TObject); begin DestroyPanel(Self, 'Panel_Transbordo'); end;
Responder
Clique aqui para fazer login e interagir na Comunidade :)