ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Criar componentes

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
JsJhony
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 5 de Agosto de 2009
Mensagens: 101

MensagemEnviada: Seg Set 10, 2012 9:33 pm    Assunto: Criar componentes Responder com Citação

Eu coloquei num form um tbuton e quando eu clico nele crio um determinado numero de tbitbuton, ate aqui ta tudo bem, porem se seu clicar no tbuton novamente da erro, claro , os botões ( tbitbuton ) ja existe. Como eu posso, testa se um tbitbuton ja existe antes de criar ele, e de que forma eu posso apagar esse componente para criar outro?
Grato.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
marcosbaixista
Profissional
Profissional


Registrado: Quinta-Feira, 18 de Março de 2010
Mensagens: 594
Localização: Maringá/PR

MensagemEnviada: Seg Set 10, 2012 9:55 pm    Assunto: Responder com Citação

Olá.

Você precisa criar um componente e atribuir um nome a ele, assim você consegue verificar se ele ja existe antes de criar outro.
Para remover o componente seria verificar se existem botoes desta classe e se existir mandar excluir todos.

Bom, basicamente é isso.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
JsJhony
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 5 de Agosto de 2009
Mensagens: 101

MensagemEnviada: Seg Set 10, 2012 10:38 pm    Assunto: Responder com Citação

isso eu já sei, só não sabia como fazer. Mas obrigado pela força.

marcosbaixista escreveu:
Olá.

Você precisa criar um componente e atribuir um nome a ele, assim você consegue verificar se ele ja existe antes de criar outro.
Para remover o componente seria verificar se existem botoes desta classe e se existir mandar excluir todos.

Bom, basicamente é isso.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
JsJhony
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 5 de Agosto de 2009
Mensagens: 101

MensagemEnviada: Seg Set 10, 2012 10:59 pm    Assunto: Re: Criar componentes Responder com Citação

eu já consigo testar a existencia dos objetos, agora eu preciso destrui-los para recria-los em seguida? ja usei o "objeto.FREE" e "objeto.DESTROY" mas nao deu certo. segue trecho do código:


IF TestaComponente( 'BB_DEZ_'+inttostr(iCon) ) then
Begin
aButtons[iCon].Free;
aButtons[iCon].Destroy;
End;
aButtons[iCon]:=TBitBtn.Create(Application);
aButtons[iCon].Parent:=P_DEZENAS;
aButtons[iCon].name:='BB_DEZ_'+inttostr(iCon);
aButtons[iCon].Hint:=aButtons[iCon].name;
aButtons[iCon].ShowHint:=True;
aButtons[iCon].Height:=64;
aButtons[iCon].Width:=75;
aButtons[iCon].Font.Style:=[fsBold];
aButtons[iCon].Font.Size:=14;
aButtons[iCon].Left:= iLeft;
aButtons[iCon].Top:= iTop;
aButtons[iCon].Caption:=inttostr(iCon);






JsJhony escreveu:
Eu coloquei num form um tbuton e quando eu clico nele crio um determinado numero de tbitbuton, ate aqui ta tudo bem, porem se seu clicar no tbuton novamente da erro, claro , os botões ( tbitbuton ) ja existe. Como eu posso, testa se um tbitbuton ja existe antes de criar ele, e de que forma eu posso apagar esse componente para criar outro?
Grato.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
vaninho
Membro Junior
Membro Junior


Registrado: Segunda-Feira, 16 de Outubro de 2006
Mensagens: 352

MensagemEnviada: Ter Set 11, 2012 12:50 am    Assunto: Responder com Citação

Amigo
Ao invés de usar o Free() ou Destroy() que tal FreeAndNil()?

Código:
FreeAndNil(objProduto);
If Assigned(objProduto) then
  Showmessage('Objeto não destruido!')
Else
Showmessage('Objeto destruido!');



Código:
Public

Constructor Create();
Destructor Destroy(); override;




Uma diferença importante entre o Destroy, o Free e o FreeAndNil, é que se o destrutor de uma classe possuir uma implementação diferente do padrão, e não for utilizada a diretiva “override” na declaração do destructor, ao utilizar o Free ou o FreeAndNil a implementação do destructor não será executada, e se utilizar o Destroy a implementação do destructor será executada.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
marcieldeg
Colaborador
Colaborador


Registrado: Terça-Feira, 5 de Abril de 2011
Mensagens: 1054
Localização: Vitória - ES

MensagemEnviada: Ter Set 11, 2012 10:16 am    Assunto: Responder com Citação

vaninho escreveu:

Uma diferença importante entre o Destroy, o Free e o FreeAndNil, é que se o destrutor de uma classe possuir uma implementação diferente do padrão, e não for utilizada a diretiva “override” na declaração do destructor, ao utilizar o Free ou o FreeAndNil a implementação do destructor não será executada, e se utilizar o Destroy a implementação do destructor será executada.


Você está enganado. O método Free chama o método Destroy.

Código:
procedure TObject.Free;
begin
  if Self <> nil then
    Destroy;
end;


Ou seja, chamar Free na sua classe irá chamar o Destroy que você deu override.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB