Problema com TAction(sender)

30/10/2009

0

Estou acompanhando a aula 10 da aplicação comercial em delphi 2007, mas estou com problemas com crio este codigo TAction(Sender).Enabled := ds.DataSet.State in [dsInactive,dsBrowse]; Ele me retorna um access violation, não entendo porque? Se pudere me ajudar fico agradecido!!!!
Claudio

Claudio

Responder

Posts

03/11/2009

Pjrm1470

Provavelmente o Sender pertence a procedure chamada.
Verifique se quem está chamando a procedure é o componente TAction.

Tem que tomar muito cuidado ao usar esse metodo
| TAction(Sender).Enable := Ds.DataSet.State in [dsInactive, dsBrowse];

Tem acesso mais rápido a memoria, porem se o Sender não for do tipo esperado, irá causar Access Violation. O mais correto seria fazer a verificação do tipo antes ficando assim:
| if (Sender is TAction) then
|   TAction(Sender).Enable := Ds.DataSet.State in [dsInactive, dsBrowse];

Pode ser que mais de um componente esteja chamando essa Procedure. O Sender é o objeto que chamou a procedure.

PS. "Não sou mto bom de didatica não, mas tenho bastante paciência. Se a duvida persistir, favor volte a perguntar, explicarei de outra forma."

Att,
Plínio.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar