Subject |
Re: LOGICAL ERROR |
From |
Mervyn Bick <invalid@invalid.invalid> |
Date |
Sun, 11 Mar 2018 20:18:24 +0200 |
Newsgroups |
dbase.getting-started |
On 2018-03-11 3:52 PM, Mustansir Ghor wrote:
> Dear
>
> I seem to get confused many times use of 'this' object. When following PBRCANCEL_onclick() is executed, there is change in value of form.eamount. Therefore function Eamount-Onchange() will execute. On its execution what will 'this' refer to ?
>
> Best Regards
> Mustansir
>
> function PBRCANCEL_onClick()
> form.eamount.value=0
> form.cbregname.setfocus()
> return
>
> function EAMOUNT_onChange()
> if this.value>0
> form.pbrcancel.enabled=true
> form.pbrsave.enabled=true
> else
> form.pbrcancel.enabled=false
> form.pbrsave.enabled=false
> endif
>
> return
>
'This' is form.eamont in this case. The event handler is executed by
form.eamont when the value changed. As you use PBRCANCEL to save 0 to
form.eamont the event handler will immediately disable PBRCANCEL and
PBRSAVE. These pushbuttons are disabled until, say, the edit pushbutton
is pressed which would execute code to enable them again.
If you had executed the event handler from, say, the form's onOpen event
handler 'this' would be the form. The form doesn't have a value
property so if it doesn't have a user-defined value property there would
be an error.
'This' in a function is always the object which executes the function.
If, for instance, instead of assigning different onChange event handlers
to several entryfields you assign the same event handler to each
entryfield you can use this.name to decide what to do depending on which
entryfield changed.
function entryfield_onChange()
if this.name = 'ENTRYFIELD1'
do something
elseif this.name = 'ENTRYFIELD2'
do something else
elseif this.name = 'ENTRYFIELD3'
do something different
endif
return
Mervyn.
|
|