Navigation: Language Reference > 13 - Built-in Functions >====== CREATE (return new control created) ====== | |
CREATE( control , type [, parent ] [, position ] )
CREATE | Creates a new control. |
control | A field number or field equate label for the control to create. The valid range of field numbers is -4000h to 4000h. If the control equal to 0, the CREATE procedure returns the next available field number and assigns that to the control being created. |
type | An integer constant, expression, EQUATE, or variable that specifies the type of control to create. |
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. |
CREATE dynamically creates a new control in the currently active APPLICATION or WINDOW, returning the value of the control parameter. If the field creation fails, a 0 is returned. This procedure is valid in Clarion Win32 Windows, and also for REPORT structures in both Clarion Win32 and Clarion#.
When first created, the new control is initially hidden, so its properties can be set using the runtime property assignment syntax, SETPOSITION, and SETFONT. It appears on screen only by issuing an UNHIDE statement for the control.
You can also use CREATE to create report controls. To do this, you must first use SETTARGET to make the report the currently active TARGET, and you must also specify a parent for the control.
EQUATE statements for the type parameter are contained in the EQUATES.CLW file. The following list is a comprehensive sample of these (see EQUATES.CLW for the complete list):
CREATE:sstring | STRING(picture),USE(variable) |
CREATE:string | STRING(constant) |
CREATE:image | IMAGE() |
CREATE:region | REGION() |
CREATE:line | LINE() |
CREATE:box | BOX() |
CREATE:ellipse | ELLIPSE() |
CREATE:entry | ENTRY() |
CREATE:button | BUTTON() |
CREATE:prompt | PROMPT() |
CREATE:option | OPTION() |
CREATE:radio | RADIO() |
CREATE:check | CHECK() |
CREATE:group | GROUP() |
CREATE:list | LIST() |
CREATE:combo | COMBO() |
CREATE:spin | SPIN() |
CREATE:text | TEXT() |
CREATE:custom | CUSTOM() |
CREATE:droplist | LIST(),DROP() |
CREATE:dropcombo | COMBO(),DROP() |
CREATE:menu | MENU() |
CREATE:item | ITEM() |
CREATE:toolbar | TOOLBAR() |
CREATE:RTF | RTF TEXT control |
Note: The CREATE:Toolbar constant is a modifier to instruct the runtime library that the control must be created inside the toolbar rather than inside window client area:
CREATE (0, CREATE:Button + CREATE:Toolbar)
!creates a button on the toolbar if it exists
CREATE (0, CREATE:Button)
!creates a button in the window client area
Return Data Type: | SIGNED |
Example:
PROGRAM |
INCLUDE('keycodes.clw') |
MAP |
END |
TestGroup GROUP,PRE(CTL) |
CODE LONG |
Name STRING(30) |
END |
X SHORT |
Y SHORT |
Width SHORT |
Height SHORT |
Code4Entry STRING(10) |
?Code4Entry EQUATE(100) !Create an arbitrary field equate number for CREATE to use |
FEQ EQUATE(101) |
UseVarText1 &STRING |
Window WINDOW,VSCROLL,GRAY,MAXIMIZE |
ENTRY(@N3),AT(3,32),USE(Ctl:Code) |
ENTRY(@S30),AT(98,8),USE(Ctl:Name) |
BUTTON('OK'),AT(5,7),USE(?OkButton) |
BUTTON('Cancel'),AT(45,7),USE(?CanxButton) |
END |
CODE |
OPEN(Window) |
ACCEPT |
CASE ACCEPTED() |
OF ?Ctl:Code |
IF Ctl:Code = 4 |
CREATE(?Code4Entry,CREATE:entry) !Create the control |
?Code4Entry{PROP:use} = Code4Entry !Set USE variable |
?Code4Entry{PROP:text} = '@s10' !Set entry picture |
GETPOSITION(?Ctl:Code,X,Y,Width,Height) |
?Code4Entry{PROP:Xpos} = X + Width + 40 !Set x position |
?Code4Entry{PROP:Ypos} = Y !Set y position |
UNHIDE(?Code4Entry) !Display the new control |
ELSIF Ctl:Code = 5 |
CREATE(FEQ, CREATE:text) |
UseVarText1 &= NEW(STRING(10000)) |
FEQ{PROP:use} = UseVarText1 |
GETPOSITION(?Ctl:Code,X,Y,Width,Height) |
FEQ{PROP:Xpos} = X + Width + 40 !Set x position |
FEQ{PROP:Ypos} = Y + 5 !Set y position |
FEQ{PROP:width} = 300 |
FEQ{PROP:height} = 100 |
FEQ{PROP:Vscroll} = TRUE |
UNHIDE(FEQ) !Display the new control |
END |
OF ?OkButton |
BREAK |
OF ?CanxButton |
CLEAR(TestGroup) |
BREAK |
END |
END |
DISPOSE(UseVarText1) |
CLOSE(Window) |
RETURN |
See Also: CLONE , DESTROY , SETPOSITION , SETTARGET, UNHIDE