| **Navigation:**  [[introduction.htm|Language Reference]] > 13 - Built-in Functions >====== CLONE(duplicate existing control) ====== | [[clock return system time .htm|{{btn_prev_n.gif|Previous page}}]][[introduction.htm|{{btn_home_n.gif|Return to chapter overview}}]][[close close a data structure .htm|{{btn_next_n.gif|Next page}}]] | | || **CLONE**(//destination// //control//, //source// //control// [,//parent//] [,//position//] [,//window//]) {{blk2blue.jpg|blk2blue.jpg}} | **CLONE** | Duplicates an existing control. | | //destination control// | A field number or field equate label for the control to create. | | //source control// | A field number or field equate label for the control to duplicate. | | //Parent// | A field number or field equate label that specifies the OPTION, GROUP, SHEET, TAB, MENU, HEADER, FOOTER, DETAIL, BREAK, or FORM to contain the new //control//. If omitted, the control has no //parent//. | | //Position// | An integer constant, expression, or variable that specifies the position within a MENU to place a new ITEM //control//. If omitted, the ITEM is added to the end. | | //Window// | The label of an APPLICATION, WINDOW, or REPORT structure, or a reference to any of those structures where the control to duplicate exists. | **CLONE** dynamically duplicates an existing control to the currently active window. This procedure is valid in Clarion Win32 Windows, and also for REPORT structures in both Clarion Win32 and Clarion#. It returns the field equate label of the new control. The destination control inherits all properties of the source control. The position of the destination control should be modified using SETPOSITION() or PROP:AT if it will not be positioned on top of the source control. CLONE may only be used to duplicate controls. It may not be used to duplicate report bands, menu items, or OLE controls. | **Return Data Type:** | SIGNED | **Example:** **PROGRAM** **    INCLUDE('EQUATES.CLW')** **    INCLUDE('KEYCODES.CLW')** **    MAP** **    END** **WINDOW WINDOW('Clone - example'),AT(,,260,100),GRAY** **        BUTTON('Ok'),AT(198,30,31,15),USE(?OkButton)** **        BUTTON('Clone It'),AT(199,54,31,15),USE(?CloneButton)** **       END** **WINDOW2 WINDOW('Window2'),AT(,,260,100),GRAY** **         BUTTON('Clone Me'),AT(98,30,31,15),USE(?CloneMe)** **        END** **?Cloned            EQUATE(100)** **    CODE** **    OPEN(WINDOW)** **    ACCEPT** **     CASE ACCEPTED()** **      OF ?CloneButton** **       OPEN(WINDOW2)** **       SETTARGET(WINDOW)** **       ****CLONE****(?Cloned, ?CloneMe,,,WINDOW2)** **       CLOSE(WINDOW2)** **       ?Cloned{PROP:YPOS} = ?Cloned{PROP:Ypos} + ?Cloned{PROP:Height} +10** **       ?Cloned{PROP:Width} = ?Cloned{PROP:Width} + 20** **       ?Cloned{PROP:Text} = 'Cloned Button'** **      OF ?OkButton** **       BREAK** **     END** **    END** **See Also**:     [[create return new control created .htm|CREATE]], [[setposition specify new control position .htm|SETPOSITION]], [[settarget set current window or report .htm|SETTARGET]], [[unhide show hidden control .htm|UNHIDE]]