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
Curtir tópico
+ 0
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.
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
Clique aqui para fazer login e interagir na Comunidade :)