ONLINE HELP
 WINDEVWEBDEV AND WINDEV MOBILE

Help / WLanguage / WLanguage functions / Controls, pages and windows / Control functions
  • Characteristics of created control
  • Events executed
  • Tip
  • Cloning a column in a Table control
  • Cloning a menu
  • Cloning a tab pane
  • WEBDEV specific features
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaReports and QueriesUser code (UMC)
WEBDEV
WindowsLinuxPHPWEBDEV - Browser code
WINDEV Mobile
AndroidAndroid Widget iPhone/iPadIOS WidgetApple WatchMac CatalystUniversal Windows 10 App
Others
Stored procedures
Creates a new control. This new control is a copy of an existing control (including for the columns of a Table control).
This function can be used to create a new control in a window, in a page or in a report.
The new control is necessarily created in the same window (in the same page or in the same report) as the source control.
WINDEV
// Creates a new pane in a Tab control
ControlClone(TAB_MyTab[1], "Pane 3")
 
// Creates a cloned control in a Tab pane
// while the source control is found in the window
ControlClone(EDT_EDIT1, "TAB_MyTab[2].CLONE_EDIT1")
// Creates a new Static control in a report (WINDEV, WEBDEV or WINDEV Mobile)
ControlClone(STC_Static, "Clone", 10.8, 10.8)
xControl is Control
xControl <- ControlClone(COL_Template, "COL_Clone" + i)
xControl.Width = COL_Template.Width
xControl.Caption = "Material " + I
Syntax

Creating a cloned control in a window or in a page Hide the details

<Result> = ControlClone(<Name of the source control> , <Name of the destination control> [, <X> , <Y>])
<Result>: Control variable
WINDEVWEBDEV - Server code Name of the Control variable that will be associated with the cloned control.
<Name of the source control>: Character string
Name of the control (or column) to copy.
If this parameter corresponds to the name of a column in a Table control:
  • the <X> and <Y> parameters are ignored.
  • the new column is inserted to the right of other columns in the Table control.
  • the content of the Table control is automatically cleared.
In this case, if several Table controls include columns with the same name, the name of the column must be prefixed by the name of the Table control: <Table name>.<Column name>.
<Name of the destination control>: Character string
Name of the dynamic control (or column) to create.
This name must follow the naming rules for a new control used by the editor. For example, it cannot contain period, spaces or apostrophe.
If this parameter corresponds to the name of a column in a Table control, the name of the column must not be prefixed by the name of the Table control.
You have the ability to change the parent when cloning a control. Therefore, a control can be cloned on a tab and associated with this tab. All you have to do is prefix the name of the control to create with the name of the Tab control (see the example). The operating mode is identical for the Drawer and Sidebar controls.
<X>: Optional integer
X-coordinate of control to create (in pixels).
If this parameter is not specified, the control is created at the initial position of the source control (initial position returned by the XInitial and YInitial properties).
<Y>: Optional integer
Y-coordinate of the control to create (in pixels).
If this parameter is not specified, the control is created at the initial position of the source control (initial position returned by the XInitial and YInitial properties).
WINDEVWEBDEV - Server codeReports and QueriesUniversal Windows 10 AppiPhone/iPadUser code (UMC)

Creating a cloned control in a report Hide the details

<Result> = ControlClone(<Name of source control in report> , <Name of the destination control> [, <X> , <Y>])
<Result>: Control variable
WINDEVWEBDEV - Server code Name of the Control variable that will be associated with the cloned control.
<Name of source control in report>: Character string
Name of the control to copy.
<Name of the destination control>: Character string
Name of the dynamic control to create.
<X>: Optional real
X-coordinate of the control to create (in millimeters).
If this parameter is not specified, the control is created at the initial position of the source control (initial position returned by the XInitial and YInitial properties).
<Y>: Optional real
Y-coordinate of the control to create (in millimeters).
If this parameter is not specified, the control is created at the initial position of the source control (initial position returned by the XInitial and YInitial properties).
Remarks

Characteristics of created control

The created control shares all the initial parameters of the source control, especially:
  • its type (edit control, Button control, Table control, etc.),
  • its initial value,
  • its groups,
  • its popup menu (window control),
  • its code (the same processes are run),
  • its HFSQL links,
  • the keyboard shortcut (window control),
  • the height and width of control.
On the contrary, the created control does not share with the source control:
  • the parameters modified after its creation (value, color, ...),
    WEBDEV - Server code The color of the cloned control is the current color of the source control and not the initial color.
  • the name,
  • the z order (control in a window or in a report),
  • the navigation order via the TAB key (window control).

Events executed

The event "Initializing" associated with the control is run.
As the control is unknown when the project is compiled, it can be handled by the indirection operators.

Tip

We recommend that you use this function in the "Global declarations" of the window or page or in the event "Opening" event associated with report. This function must not be used in the "Initialization" event of the control.
WINDEVWEBDEV - Server codeiPhone/iPadJavaUser code (UMC)

Cloning a column in a Table control

In a window, when ControlClone is used on a column of a Table control, the control is entirely cleared when the new column is created.
WINDEVAndroidJavaUser code (UMC)

Cloning a menu

A menu can be cloned by MenuClone.
WINDEV

Cloning a tab pane

When ControlClone is used on a tab pane, the pane and all its controls are cloned (including the associated code). In the initial tab pane, if processes handled the controls found in this pane, in the cloned pane, these processes will automatically handle the controls of the cloned pane.
WEBDEV - Server code

WEBDEV specific features

  • A control and its cloned control must be found in the same page.
  • The following controls can be cloned:
    • The stackable controls.
    • The controls found in a Rich Text Area.
    • The table columns.
  • Cloning a control found in a Rich Text Area:
    • The cloned control can be added into any Rich Text Area of the page.
    • The cloned control cannot be added into a rich Static (in a check box or radio button for example).
  • Cloning a stackable control:
    • The cloned control is a stackable control.
    • The cloned control has no anchor.
    • The cloned control is added to the same container as the source control.
  • Cloning a control found in a Looper: A control found in a Looper must be cloned in a Looper.
  • The pages in "Mode compatible with version 16" mode cannot be used to clone controls.
  • To use an indirection to handle the cloned control, you must check "Allow indirections (slows the execution down)" ("Details" tab of the control description window).
Related Examples:
The ControlClone function Unit examples (WINDEV): The ControlClone function
[ + ] Using ControlClone and ControlDelete.
Component: wd290vm.dll
Minimum version required
  • Version 9
This page is also available for…
Comments
Click [Add] to post a comment

Last update: 06/22/2023

Send a report | Local help