SET TITLE

This, ThisForm, ThisFormSet

The documentation refers to these three as "object references" and we can't think of anything better. They're not commands nor functions; neither are they properties, events nor methods. And they're not exactly variables, either. What they are, in an informal sense, is handles. They let you grab onto objects without knowing the names of the objects.

Usage

This.Property | Method | MemberName ThisForm.Property | Method | MemberName ThisFormSet.Property | Method | MemberName
When you're writing method code for an object, you often need to refer to properties and methods of that object and of other related objects. But you don't know what the name of the object will be when it's instantiated. So you often can't write something like MyWonderfulObject.Caption.

Even when you do know the name (for example, when you're designing a form that will have only one instance), it's not a good idea to refer to the object by name. Doing so limits the reusability of the object.

Similarly, in a method of a form or formset, you don't want to refer to it by name since you may instantiate it more than once, with a different name for each instance.

The three object references are the way to avoid the problem. THIS refers to the current object. When you're in a method of a control, THIS is the control itself. In a method of a form, THIS is the form. In a method of a formset, THIS is the formset, and so on. The same idea applies to non-visual objects as well. THIS is always the object whose method you're in.

ThisForm, then, is the form containing the object. In a method of a control, ThisForm refers to the form containing the control. In a method of a form, ThisForm and THIS both refer to the form. Finally, ThisFormSet refers to the form set containing the object whose method you're in.

Example

oTest=CREATEOBJECT("TestForm") oTest.SHOW() READ EVENTS   DEFINE CLASS TestForm AS Form      ScaleMode = 0  && Foxels just to make it easier                    && to position things     ADD OBJECT txtUpdate AS Updater    ADD OBJECT cmdClear AS ClearButton    ADD OBJECT cmdQuit AS QuitButton   PROCEDURE Init      * set up Clear button to clear text box    This.cmdClear.cWhatToClear="txtUpdate"                     * position things    This.Height=10    This.Width=30    This.AutoCenter=.T.      This.txtUpdate.Left=5    This.txtUpdate.Top=2      This.cmdClear.Left=5    This.cmdClear.Top=5      This.cmdQuit.Left=15    This.cmdQuit.Top=5   ENDPROC   ENDDEFINE   DEFINE CLASS Updater AS Textbox      Width=20    Height=1.5   PROCEDURE InteractiveChange   * change the form caption      ThisForm.Caption=This.Value          ENDPROC   PROCEDURE ProgrammaticChange    * revert the form caption             ThisForm.Caption="TestForm"   ENDPROC   ENDDEFINE   DEFINE CLASS ClearButton AS CommandButton      Width=7    Height=1.5    Caption="Clear"             * add a custom property    cWhatToClear=""   PROCEDURE Click     LOCAL cClearWhat     cClearWhat=This.cWhatToClear     ThisFORM.&cClearWhat..Value="" ENDPROC   ENDDEFINE   DEFINE CLASS QuitButton AS CommandButton      Caption="Quit"    Width=7    Height=1.5   PROCEDURE Click      CLEAR EVENTS   ENDPROC   PROCEDURE Destroy      CLEAR EVENTS   ENDPROC ENDDEFINE
The example includes several class definitions, three of them controls (two buttons and a text box) and one for a form class. In the form's Init method, we can change properties of the form using THIS.property (for example, THIS.Height=10). But, in the Text box's InteractiveChange event, to change the form's caption, we need to use ThisForm.Caption, indicating that FoxPro should look outside the current object (the text box) to see the containing form.

We should point out that this sample does something we never actually do—it uses foxels. We always work in pixels. But for a hand-coded sample like this, foxels make things much easier.

See Also

CreateObject(), Define Class


View Updates

Copyright © 2002 by Tamar E. Granor, Ted Roche, Doug Hennig, and Della Martin. All Rights Reserved.



Hacker's Guide to Visual FoxPro 7. 0
Hackers Guide to Visual FoxPro 7.0
ISBN: 1930919220
EAN: 2147483647
Year: 2001
Pages: 899

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net