Array
(
)

Problema com TAction(sender)

Claudio
   - 30 out 2009

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!!!!

Pjrm1470
   - 03 nov 2009

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.