buttonSetAction: Difference between revisions

From Bohemia Interactive Community
Jump to navigation Jump to search
m (Text replacement - " *\| *PARAMETER[0-9]{1,3} *= * " to " ")
m (Some wiki formatting)
(38 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{RV|type=command
{{RV|type=command


| ofp
|game1= ofp
|version1= 1.75


|
|game2= ofpe
|version2= 1.00
 
|game3= arma1
|version3= 1.00
 
|game4= arma2
|version4= 1.00
 
|game5= arma2oa
|version5= 1.50
 
|game6= tkoh
|version6= 1.00
 
|game7= arma3
|version7= 0.50


|gr1= GUI Control
|gr1= GUI Control
Line 11: Line 28:
|eff= local
|eff= local


| Set the action of a control of the currently active user dialog. The script statement is executed on button release and <tt>_this</tt> is available, but contains ""; See [[Arma: GUI Configuration]] for more information about user dialogs. Works with:
|descr= Set the action of a control of the currently active user dialog. The script statement is executed on button release and {{hl|_this}} is available, but contains ""; See [[Arma: GUI Configuration]] for more information about user dialogs. Works with:
* CT_BUTTON
* [[CT_BUTTON]]
* CT_XBUTTON
* [[CT_XBUTTON]]
* CT_ACTIVETEXT
* [[CT_ACTIVETEXT]]
* CT_SHORTCUTBUTTON
* [[CT_SHORTCUTBUTTON]]
{{Warning | The action code is expected to be in '''[[SQS]]''' format}}


| '''buttonSetAction''' [idc, action]
|s1= [[buttonSetAction]] [idc, action]
|p1= [idc, action]: [[Array]]
|p2= idc: [[Number]] - control ID
|p3= action: [[String]] - [[SQS]] code body that should be executed when the button/active text is clicked
| [[Nothing]]


|s2= control '''buttonSetAction''' action
|p1= idc: [[Number]] - Button IDC
 
|p2= action: [[String]] - '''[[SQS Syntax|SQS]]''' code body that should be executed when the button/active text is clicked
 
|r1= [[Nothing]]
 
|s2= control [[buttonSetAction]]  action
 
|p21= control:  [[Control]] - Button control
 
|p22= action:  [[String]] - '''[[SQS Syntax|SQS]]''' code body that should be executed when the button/active text is clicked


|p21= control:  [[Control]] - button control
|p22= action:  [[String]] - [[SQS]] code body that should be executed when the button/active text is clicked
|r2= [[Nothing]]
|r2= [[Nothing]]
 
|x1= <code>[[buttonSetAction]] [100, "[[player]] [[exec]] ""reply.sqs"""];</code>
|x2= <code>_ctrl [[buttonSetAction]] "[[if]] ([[alive]] bob) [[then]] {[[hint]] 'alive'} [[else]] {[[hint]] 'dead'}"; // SQF but SQS compatible, see [[SQS]]</code>
|x3= Script is SQS<code>_control [[buttonSetAction]] "[[hint]] [[format]] ['Is SQS: %1', ![[isNil]] '_time']";</code>


| [[buttonAction]], [[ctrlActivate]]
|x1= <sqf>buttonSetAction [100, "player exec ""reply.sqs"""];</sqf>
 
|x2= <sqf>_ctrl buttonSetAction "if (alive bob) then {hint 'alive'} else {hint 'dead'}"; // SQF but SQS compatible, see SQS</sqf>
 
|x3= Script is [[SQS Syntax|SQS]]:
<sqs>_control buttonSetAction "hint format ['Is SQS: %1', !isNil '_time']"</sqs>
 
|seealso= [[buttonAction]]
}}
}}


<dl class="command_description">
{{Note
<!-- Note Section BEGIN -->
|user= Kungtotte
<dd class="notedate">Posted on October 5, 2009 - 16:23
|timestamp= 20091005162300
<dt class="note">[[User:Kungtotte|kungtotte]]<dd class="note">
|text= When using buttonSetAction for an ActiveText control from a script, you cannot use any variables local to the script in it.
When using buttonSetAction for an ActiveText control from a script, you cannot use any variables local to the script in it.
<sqf>
<pre><nowiki>
/* This will print 'any bar' in the hint box,
/* This will print 'any bar' in the hint box,
  since _foo has no value according to buttonSetAction */
  since _foo has no value according to buttonSetAction */


_foo = "foo";
_foo = "foo";
buttonSetAction [100, "hint format[""%1 bar"", _foo];"];</nowiki></pre>
buttonSetAction [100, "hint format [""%1 bar"", _foo];"];
</sqf>
}}


<!-- Note Section END -->
{{Note
</dl>
|user= Molaron
|timestamp= 20160215101500
|text= This command does not overwrite the button's action that was set via "action" in the {{hl|.hpp}} of the dialog.
}}


 
{{Note
[[Category:Scripting Commands|BUTTONSETACTION]]
|user= Nomisum
[[Category:Scripting Commands OFP 1.99|BUTTONSETACTION]]
|timestamp= 20160611192400
[[Category:Scripting Commands OFP 1.96|BUTTONSETACTION]]
|text= To use variables local to the defining script, a syntax like the one below needs to be used:
{{GameCategory|arma1|Scripting Commands}}
<sqf>
{{GameCategory|arma2|Scripting Commands}}
_foo = "foo";
 
buttonSetAction [100, format ["hint '%1 bar'", _foo]];
 
</sqf>
{{GameCategory|arma2|Scripting Commands}}
works! thanks to [[User:Kronzky|Kronzky]] for commenting this workaround in the VBS wiki
{{GameCategory|arma3|Scripting Commands}}
}}
{{GameCategory|tkoh|Scripting Commands}}
 
<!-- CONTINUE Notes -->
<dl class="command_description">
<dd class="notedate">Posted on February 15, 2016 - 10:15 (UTC)</dd>
<dt class="note">[[User:Molaron|Molaron]]</dt>
<dd class="note">
This command does not overwride the buttonaction which was set via "action" in the hpp of the dialog
</dd>
 
<dd class="notedate">Posted on June 11, 2016 - 19:24 (UTC)</dd>
<dt class="note">[[User:Nomisum|Nomisum]]</dt>
<dd class="note">
To use variables local to the defining script, a syntax like the one below needs to be used:
<code>_foo = "foo";
buttonSetAction [100, format["hint '%1 bar'", _foo]];
</code>
works! thanks to Kronzky for commenting this workaround in the VBS wiki
</dd>
</dl>
<!-- DISCONTINUE Notes -->

Revision as of 22:53, 21 July 2022

Hover & click on the images for description

Description

Description:
Set the action of a control of the currently active user dialog. The script statement is executed on button release and _this is available, but contains ""; See Arma: GUI Configuration for more information about user dialogs. Works with:
Groups:
GUI Control

Syntax

Syntax:
buttonSetAction [idc, action]
Parameters:
idc: Number - Button IDC
action: String - SQS code body that should be executed when the button/active text is clicked
Return Value:
Nothing

Alternative Syntax

Syntax:
control buttonSetAction action
Parameters:
control: Control - Button control
action: String - SQS code body that should be executed when the button/active text is clicked
Return Value:
Nothing

Examples

Example 1:
buttonSetAction [100, "player exec ""reply.sqs"""];
Example 2:
_ctrl buttonSetAction "if (alive bob) then {hint 'alive'} else {hint 'dead'}"; // SQF but SQS compatible, see SQS
Example 3:
Script is SQS:
_control buttonSetAction "hint format ['Is SQS: %1', !isNil '_time']"

Additional Information

See also:
buttonAction

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
Kungtotte - c
Posted on Oct 05, 2009 - 16:23 (UTC)
When using buttonSetAction for an ActiveText control from a script, you cannot use any variables local to the script in it.
/* This will print 'any bar' in the hint box, since _foo has no value according to buttonSetAction */ _foo = "foo"; buttonSetAction [100, "hint format [""%1 bar"", _foo];"];
Molaron - c
Posted on Feb 15, 2016 - 10:15 (UTC)
This command does not overwrite the button's action that was set via "action" in the .hpp of the dialog.
Nomisum - c
Posted on Jun 11, 2016 - 19:24 (UTC)
To use variables local to the defining script, a syntax like the one below needs to be used:
_foo = "foo"; buttonSetAction [100, format ["hint '%1 bar'", _foo]];
works! thanks to Kronzky for commenting this workaround in the VBS wiki