DOCUMENT:Q130725 11-FEB-2000 [foxpro] TITLE :How to Use the CloneObject Method PRODUCT :Microsoft FoxPro PROD/VER:WINDOWS:3.0 OPER/SYS: KEYWORDS:kbcode ====================================================================== ------------------------------------------------------------------------------- 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 query words: VFoxWin ====================================================================== Keywords : kbcode Technology : kbVFPsearch kbAudDeveloper kbVFP300 Version : WINDOWS:3.0 ============================================================================= THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY. Copyright Microsoft Corporation 2000.