Destruir uma tabsheet que foi criada em tempo de execução
Bom dia.
Criei uma rotina para que meus forms sejam abertos em ‘Tabsheet ‘ em tempo de execução.
A rotina pra criação é essa ela eu vi em uma aula de Guinther pauli.
https://www.devmedia.com.br/articles/viewcomp.asp?comp=4520&hl=*tabsheet*
private
procedure addtab(aform:TForm);
{ Private declarations }
Logo após a declaro
procedure Tfrm_menu.addtab(aform: TForm);
var
t: TTabSheet;
begin
t:= TTabSheet.Create(PageControl1);
t.PageControl := PageControl1;
t.Caption:= aform.Caption;
aform.BorderStyle:= bsNone;
aform.Align:= alClient;
aform.Parent := t;
aform.Show;
Após isso é só colocar em um button o form que você que abrir
addtab(frm_clientes);
Pronto vai ser criado tabsheet e dentro dela seu form.
Minha duvida é como destruir o Tabsheet criado?
Tentei isso,
var Tab: TTabSheet;
begin
Tab := PageControl1.ActivePage;
if Assigned(Tab) then
begin
Tab.Parent := nil;
Tab.PageControl := nil;
FreeAndNil(Tab);
end;
end;
Destrói mais da um erro ao tenta abrir o form outra vez.
Criei uma rotina para que meus forms sejam abertos em ‘Tabsheet ‘ em tempo de execução.
A rotina pra criação é essa ela eu vi em uma aula de Guinther pauli.
https://www.devmedia.com.br/articles/viewcomp.asp?comp=4520&hl=*tabsheet*
private
procedure addtab(aform:TForm);
{ Private declarations }
Logo após a declaro
procedure Tfrm_menu.addtab(aform: TForm);
var
t: TTabSheet;
begin
t:= TTabSheet.Create(PageControl1);
t.PageControl := PageControl1;
t.Caption:= aform.Caption;
aform.BorderStyle:= bsNone;
aform.Align:= alClient;
aform.Parent := t;
aform.Show;
Após isso é só colocar em um button o form que você que abrir
addtab(frm_clientes);
Pronto vai ser criado tabsheet e dentro dela seu form.
Minha duvida é como destruir o Tabsheet criado?
Tentei isso,
var Tab: TTabSheet;
begin
Tab := PageControl1.ActivePage;
if Assigned(Tab) then
begin
Tab.Parent := nil;
Tab.PageControl := nil;
FreeAndNil(Tab);
end;
end;
Destrói mais da um erro ao tenta abrir o form outra vez.
Achilles
Curtidas 0
Respostas
Rodc
30/04/2008
Você destruiu o TAb e não avisou o form que o Tab não existe mais. Você precisa fazer o contrário do que foi feito na função que mostra o form no tab:
frm_clientes.BorderStyle:= bsNone;
frm_clientes.Align:= alNone;
frm_clientes.Parent := nil;
frm_clientes.BorderStyle:= bsNone;
frm_clientes.Align:= alNone;
frm_clientes.Parent := nil;
GOSTEI 0
Achilles
30/04/2008
Amigo muito obrigado vc ta certo.
deu certo agora criar outro quando destruo, só que as tabsheet ficam maximizadas não é isso que eu queria não queria que elas ficassem como
o internet explorer 7 como os itens acima para que o susario possa chamar uma tabsheet e ter acesso a varios forms ao mesmo tempo.
vc tem alguma dica sobre isso?
deu certo agora criar outro quando destruo, só que as tabsheet ficam maximizadas não é isso que eu queria não queria que elas ficassem como
o internet explorer 7 como os itens acima para que o susario possa chamar uma tabsheet e ter acesso a varios forms ao mesmo tempo.
vc tem alguma dica sobre isso?
GOSTEI 0
Rodc
30/04/2008
Você precisa fechar o formulário antes de dizer que ele não tem Parent.
frm_clientes.Close;
Sugiro também utilizar Frames (TFrame) ao invés de Formulário (TForm). Pois se nenhuma das telas serão exibidas sem estar dentro do PageControl, não precisa de todas as funcionalidades de um Formulário.
frm_clientes.Close;
Sugiro também utilizar Frames (TFrame) ao invés de Formulário (TForm). Pois se nenhuma das telas serão exibidas sem estar dentro do PageControl, não precisa de todas as funcionalidades de um Formulário.
GOSTEI 0
Achilles
30/04/2008
Fiz amigo mais ainda estar dando o famoso erro de access Violation.
GOSTEI 0