Andrey_M
13 years agoContributor
User forms: how to get form reference from handler?
Hi guys.
Finally I started playing with user forms and found that I can not use relative parent form reference from handler procedure.
Why I need this? Sometimes the behaviour of form objects should depend on status of another object(s). To refer such dependent objects I have to refer to parent form using either direct form reference (UserForm.<formName>.objectName) or using global variable which contains reference to the form (<myForm>.objectName). Both methods are not good because they use hardcoded names.
Example:
I created form which contains memo field and two buttons Ok and Exit. I want to have Ok button disabled if memo field is empty.
Following piece of code:
function main()
{
myForm = UserForms.myDemo; // global variable
myForm.ShowModal();
}
// memo field handler: OnChange event
function myDemo_myText_OnChange( Sender )
{
UserForms.myDemo.btnOk.Enabled = /[^\n\r ]/.test( Sender.Lines.Text ); // enable Ok button if memo field contains readable symbol(s)
}
// OnChange handler can be rewritten using global form variable:
function myDemo_myText_OnChange( Sender )
{
myForm.btnOk.Enabled = /[^\n\r ]/.test( Sender.Lines.Text );
}
I want something like this (relative reference to parent form):
function myDemo_myText_OnChange( Sender )
{
Sender.parent.btnOk.Enabled = /[^\n\r ]/.test( Sender.Lines.Text );
}
Can I get similar functionality without having direct reference to parent form?
Regards,
Andrey