Destruir uma tabsheet que foi criada em tempo de execução

Delphi

30/04/2008

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.


Achilles

Achilles

Curtidas 0

Respostas

Rodc

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;


GOSTEI 0
Achilles

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?


GOSTEI 0
Rodc

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.


GOSTEI 0
Achilles

Achilles

30/04/2008

Fiz amigo mais ainda estar dando o famoso erro de access Violation.


GOSTEI 0
POSTAR