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

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

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

Aceitar