ctrlCreate: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - "\{\{( *)Important( *)\|" to "{{$1Feature$2|$2important$2|")
m (Text replacement - " {{GameCategory|arma3|New Scripting Commands}} {{GameCategory|arma3|Scripting Commands}} {{uc:{{PAGENAME}}}} " to "")
Line 150: Line 150:
| [[allControls]], [[allDisplays]], [[controlsGroupCtrl]], [[ctrlDelete]], [[ctrlModel]], [[ctrlSetModel]], [[ctrlPosition]], [[ctrlSetPosition]], [[ctrlClassName]], [[ctrlModelScale]], [[ctrlSetModelScale]], [[ctrlModelDirAndUp]], [[ctrlSetModelDirAndUp]], [[displayParent]]
| [[allControls]], [[allDisplays]], [[controlsGroupCtrl]], [[ctrlDelete]], [[ctrlModel]], [[ctrlSetModel]], [[ctrlPosition]], [[ctrlSetPosition]], [[ctrlClassName]], [[ctrlModelScale]], [[ctrlSetModelScale]], [[ctrlModelDirAndUp]], [[ctrlSetModelDirAndUp]], [[displayParent]]
}}
}}
{{GameCategory|arma3|New Scripting Commands}}
{{GameCategory|arma3|Scripting Commands}}
[[Category:Scripting Commands|{{uc:{{PAGENAME}}}}]]





Revision as of 14:32, 15 February 2021

Hover & click on the images for description

Description

Description:
Description needed
Groups:
GUI Control

Syntax

Syntax:
Syntax needed
Parameters:
display: Display - Display in which control will be created
[class, idc, controlsGroup]: Array
class: String - Existing classname (see ctrlCreate/classnames) of the new control (Since Arma 3 v1.69.141213 it is possible to use classes defined in mission config)
idc: Number - IDC of the new control (use -1 if you don't care what it should be)
controlsGroup (Optional): Control - Creates controls in existing controls group
Return Value:
Return value needed

Examples

Example 1:
_display ctrlCreate ["RscText", 1234];
Example 2:
_map = findDisplay 46 ctrlCreate ["RscMapControl", -1]; _multiLineText = findDisplay 46 ctrlCreate ["RscTextMulti", -1]; _multiLineEdit = findDisplay 46 ctrlCreate ["RscEditMulti", -1];
Example 3:
myControl = findDisplay 0 ctrlCreate ["RscText", 1234, findDisplay 0 displayCtrl 2300];
Example 4:
Create Tree View control with search. Available RscTreeSearch class is hardcoded to be used with RscEdit with idc 645. Example below demonstrates how to. After tree is generated, try typing something in the top box. [] spawn { disableSerialization; _display = findDisplay 46 createDisplay "RscDisplayEmpty"; _edit = _display ctrlCreate ["RscEdit", 645]; _edit ctrlSetPosition [0,0,1,0.04]; _edit ctrlSetBackgroundColor [0,0,0,1]; _edit ctrlCommit 0; _tv = _display ctrlCreate ["RscTreeSearch", -1]; _tv ctrlSetFont "EtelkaMonospacePro"; _tv ctrlSetFontHeight 0.03; _tv ctrlSetPosition [0,0.06,1,0.94]; _tv ctrlSetBackgroundColor [0,0,0,1]; _tv ctrlCommit 0; _classes = "true" configClasses (configFile >> "CfgVehicles"); for "_i" from 0 to 5 do { _tv tvAdd [[], configName selectRandom _classes]; for "_j" from 0 to 5 do { _tv tvAdd [[_i], configName selectRandom _classes]; for "_k" from 0 to 5 do { _tv tvAdd [[_i, _j], configName selectRandom _classes]; for "_n" from 0 to 5 do { _tv tvAdd [[_i, _j, _k], configName selectRandom _classes]; }; }; }; }; };
The built-in CT_TREE search is very slow, you would probably be better off redrawing the whole list each time. Fixed in version 2.01
Example 5:
Create a simple submit edit box and show content in hint: disableSerialization;

private _display = findDisplay 46 createDisplay "RscDisplayEmpty"; private _ctrlGroup = _display ctrlCreate ["RscControlsGroupNoScrollbars", -1]; private _ctrlBackground = _display ctrlCreate ["RscTextMulti", -1, _ctrlGroup]; IDD_EDIT_BOX = 123; private _ctrlEdit = _display ctrlCreate ["RscEditMulti", IDD_EDIT_BOX, _ctrlGroup]; private _ctrlButton = _display ctrlCreate ["RscShortcutButton", -1, _ctrlGroup]; _ctrlGroup ctrlSetPosition [0.5, 0.5, 0, 0]; _ctrlGroup ctrlCommit 0; _ctrlBackground ctrlSetPosition [0, 0, 0.5, 0.5]; _ctrlBackground ctrlSetBackgroundColor [0.5, 0.5, 0.5, 0.9]; _ctrlBackground ctrlSetText "ENTER TEXT:"; _ctrlBackground ctrlEnable false; _ctrlBackground ctrlCommit 0; _ctrlEdit ctrlSetPosition [0.01, 0.05, 0.48, 0.34]; _ctrlEdit ctrlSetBackgroundColor [0, 0, 0, 0.5]; _ctrlEdit ctrlCommit 0; _ctrlButton ctrlSetPosition [0.185, 0.42, 0.13, 0.05]; _ctrlButton ctrlCommit 0; _ctrlButton ctrlSetText "SUBMIT"; _ctrlButton ctrlAddEventHandler ["ButtonClick", { params ["_ctrl"]; _display = ctrlParent _ctrl; _text = ctrlText (_display displayCtrl IDD_EDIT_BOX); if (_text == "") then { _text = "EMPTY" }; hint _text; _display closeDisplay 1; }]; ctrlSetFocus _ctrlEdit; _ctrlGroup ctrlSetPosition [0.25, 0.25, 0.5, 0.5]; _ctrlGroup ctrlCommit 0.1;

playSound "Hint3";

Additional Information

See also:
See also needed

Notes

Report bugs on the Feedback Tracker and/or discuss them on the Arma Discord or on the Forums.
Only post proven facts here! Add Note


Posted on September 16, 2019 - 07:09 (UTC)
R3vo
Regarding search speed in example 4: The search is incredible slow if items are only added to the first level. As soon as multiple levels are added, the search becomes faster.
Therefore it is not recommended to use a CT_TREE control as CT_LISTBOX just to have access to the engine driven incremental search.
Update: Since 2.01 the engine driven search has become drastically faster. Therefore it is now even possible to use a CT_TREE controls as CT_LISTBOX and have excess to the build-in search functionality.