Example of Manipulating Objects
The following example sets properties and calls event code from various objects within a form set. The example includes two forms, frmLeft and frmRight, in a formset.
Sample form set in the Form Designer
The two check boxes and the command button on frmLeft have event code associated with them. The name of the text box on frmLeft is txtInput.
Event Code for Objects in LeftForm
Object |
Event |
Code |
---|---|---|
chkItalic |
Click |
THISFORM.txtInput.FontItalic = ; THIS.Value |
chkBold |
Click |
THIS.txtInput.FontBold = THIS.Value |
cmdClear |
Click |
THISFORM.txtInput.Value = "" THISFORM.txtInput.FontBold = .F. THISFORM.txtInput.FontItalic = .F. THISFORM.chkItalic.Value = .F. THISFORM.chkBold.Value = .F. |
Setting a Property of Another Control on the Same Form
You can set the properties of one control from within the event code of another by using the THISFORM keyword or the Parent property. The following two commands are executed when a user initially clicks on the Italic and the Bold check boxes, setting the appropriate text box properties:
THISFORM.txtInput.FontItalic = .T.
THIS.Parent.txtInput.FontBold = .T.
In this case, THISFORM and THIS.Parent can be used interchangeably.
Sample form set at run time
The code in the click event for cmdClear uses THISFORM to reset the values of the other controls on the form.
Setting Another Form's Properties
You can also set properties of one form from another. Form2 contains five command buttons. The first button on the form has this code in its Click event:
THISFORMSET.frmLeft.Caption = ;
ALLTRIM(ThisFormSet.frmLeft.txtInput.Value)
Notice that the form set and the form need to be referenced when setting properties from within a different form.
User clicks "Change Left Form Caption" command button on Right Form
The click event code of the second command button on frmRight demonstrates setting a property of a form from within an object on the form:
THISFORM.Caption = ;
ALLTRIM(ThisFormSet.frmLeft.txtInput.Value)
If the user chooses this button, the caption of frmRight changes to the value in the text box on frmLeft.
Accessing Objects on Different Forms
The following code in the Click event of the Change Bold Setting command button changes the value of the Bold check box on frmLeft and calls the event code associated with this control.
THISFORMSET.frmLeft.chkBold.Value = ;
NOT THISFORMSET.frmLeft.chkBold.Value
THISFORMSET.frmLeft.chkBold.InteractiveChange
The last line of the example calls the InteractiveChange event of chkBold. You could also call this procedure with the following command:
THISFORMSET.frmForm1.chkBold.InteractiveChange( )
If this procedure call is omitted, the value of the check box changes, but the FontBold property of the text box is never changed.
User clicks "Change Bold Setting" command button on Right Form
Checking Properties and Calling Method Code of Another Form
The following code in the Click event of the Hide Left Form command button hides or shows frmLeft, depending on the value of the Visible property, and changes the button caption as appropriate:
IF ThisFormSet.frmLeft.Visible
ThisFormSet.frmLeft.Hide
THIS.Caption = "Show Left Form"
ELSE
ThisFormSet.frmLeft.Show
THIS.Caption = "Hide Left Form"
ENDIF
Notice that the THIS keyword is used within event code of a control to reference properties of the control.
User clicks Hide Left Form command button on Right Form
The following command in the Click event of the Quit command button releases the form set, causing both forms to close:
RELEASE ThisFormSet
See Also
Tasks
How to: Set Properties at Run Time
How to: Pass Parameters to a Form