How to Use the CloneObject Method

ID: Q130725

3.00 WINDOWS

The information in this article applies to:

  • Microsoft Visual FoxPro for Windows, version 3.0

SUMMARY

You can use the CLONEOBJECT() method to duplicate an object on the Form Designer at form-design time. If you are developing a wizard or builder, you can use CLONEOBJECT to add an object to a form. This article provides an example that illustrates how to use this method.

MORE INFORMATION

Step-by-Step Example

This example runs a modal form that determines the number of controls to be placed on a form. This modal dialog box returns a value to the program. In this code, a command button is created, and the CLONEOBJECT method duplicates the command button. Note that the caption for each of the buttons is blue.

1. Create a form. Using the following table as a guide, modify the form's

   properties and methods. Name the form CLONEOBJ.

   Property       What to Type in the Property Sheet
   ------------------------------------------------------------------------
   BackColor      192,192,192
   Caption        Enter Number of Controls
   Unload Event   RETURN nValue        &&This is the value the form returns
   WindowType     1-Modal

2. Place a spinner on the form. Using the following table as a guide,
   modify the spinner's properties:

   Property          Type in the Property Sheet
   ------------------------------------------------------------------------
   ControlSource     nValue
   KeyboardHighvalue 10
   KeyboardLowValue   1
   SpinnerHighValue  10
   SpinnerLowValue    1

3. Place a command button on the form. Using the following table as a
   guide, modify the command button's properties:

   Property          Type in the Property Sheet
   ------------------------------------------------------------------------
   Caption           OK
   Click Event       RELEASE ThisForm

4. Copy and paste the following code into a program file (.PRG file), and
   run it.

      *:   CLONEOBJ
      DO Form CloneObj TO nNumberofControls

      CREATE Form test2 NOWAIT

      =ASELOBJ(atest,1)       && Place the name of the form in an array.
      atest(1).Caption="See the new controls on the Form"
      atest(1).LockScreen=.T. && Changes are refreshed all at once
      =MESSAGEBOX('There is no control')

      * Define the first command button:
      atest(1).AddObject('mycmd1','CommandButton')
      atest(1).mycmd1.ForeColor=RGB(0,0,255)

      * Duplicate the first command button, and store the name of the
      * previous command button to position the new control relative to the
      * position of the previous command button:
      FOR I=2 TO nNumberofControls
         OldName='Mycmd'+ALLTRIM(STR(I-1))
         NewName='Mycmd'+ALLTRIM(STR(I))

         atest(1).mycmd1.CloneObject(NewName) && Duplicate command button.
         oref=EVALUATE('atest(1).'+NewName)
         oOldref=EVALUATE('atest(1).'+OldName)
         oref.Top=oOldref.Top+35
         oref.Caption=NewName

      ENDFOR
      atest(1).SetAll('Visible',.T.,'CommandButton')
      atest(1).Refresh
      =MESSAGEBOX('Now there are '+ ALLTRIM(STR(nNumberofControls))+ ;
      ' controls')

The above program creates a form called TEST2.SCX with the number of command buttons specified in the first form's spinner. When the program file finishes running, TEST2.SCX remains open for modifications.

Additional reference words: 3.00 VFoxWin KBCategory: KBSubcategory: FxtoolFormdes

Keywords          : kbcode FxtoolFormdes 
Version           : 3.00
Platform          : WINDOWS


Last Reviewed: May 22, 1998
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.