Hi,

[Sorry for the cross-posting, I've only just found this group].

I'm having difficulty passing an object to an event handler in Perl.

I have two events which populate a screen with patient details
Either by pressing search and returning a value:

     Wx::Event::EVT_BUTTON(
        $self, 
        $self->{Ctl_Patient_Search_Btn}->GetId, 
            \&call_lookup_patient);

or by exiting a field:

    Wx::Event::EVT_KILL_FOCUS(
        $self->{Ctl_Patient_Ref_0_Txt}, 
            \&call_lookup_patient_id);

*       call_lookup_patient_id  and
*       call_lookup_patient

are nearly identical.  Both of them look up a patient's details 
and populate a form ($self).  The issue is that 

EVT_BUTTON passes $self to "call_lookup_patient" and so is 
successful in building the form while

EVT_KILL_FOCUS only passes $self->{Ctl_Patient_Ref_0_Txt} 
without the rest of the form and so it can't be populated.

My question is how to access $self when it is not passed?

Can I create an anonymous subroutine to pass a global variable like this
($gl_self is a global version of $self):

Wx::Event::EVT_KILL_FOCUS($self->{Ctl_Patient_Ref_0_Txt},
                                                                \&{$gl_self
= $self;
                                                   call_lookup_patient_id;
                                                   $gl_self = $self;}

Thanks for your help. 

Regards

Steve


Reply via email to