Revision Difference
Panel:SetCommand#560047
<function name="SetCommand" parent="Panel" type="classfunc">⤶
<description>⤶
Sets the action signal command that's fired when a <page>Button</page> is clicked. The hook <page>PANEL:ActionSignal</page> is called as the click response.⤶
⤶
This has no effect on buttons unless it has had its `AddActionSignalTarget` method called (an internal function not available by default in Garry's Mod LUA).⤶
⤶
A better alternative is calling <page>Panel:Command</page> when a <page>DButton</page> is clicked.⤶
</description>⤶
<realm>Client and Menu</realm>⤶
</function>⤶
⤶
<example>⤶
<description>Creates an engine-based <page>Frame</page> panel and changes the command that's fired when you click the white close button (by default the command is set to `Close`).</description>⤶
<code>⤶
-- Create a regular Frame panel⤶
local TestFrame = vgui.Create( "Frame" )⤶
TestFrame:SetSize( 200, 200 )⤶
TestFrame:Center()⤶
TestFrame:MakePopup()⤶
TestFrame:SetVisible( true )⤶
⤶
local lbl = vgui.Create( "DLabel", TestFrame )⤶
lbl:Dock( FILL )⤶
lbl:DockMargin( 10, 10, 10, 10 )⤶
lbl:SetText( "Click the white button in the upper right corner of this window." )⤶
lbl:SetFont( "ChatFont" )⤶
lbl:SetWrap( true )⤶
⤶
-- Create a background panel so we can see the Frame's internal buttons⤶
local bg = vgui.Create( "DPanel", TestFrame )⤶
bg:Dock( FILL )⤶
bg:SetBackgroundColor( Color( 64, 64, 64, 192 ) )⤶
bg:MoveToBack()⤶
⤶
-- Loop through Frame's internal components⤶
for _, child in ipairs( TestFrame:GetChildren() ) do⤶
⤶
-- Disable frame sizing⤶
if ( string.find( child:GetName(), "Grip" ) ) then⤶
child:SetMouseInputEnabled(false)⤶
⤶
-- Fire the "Testing" command when we click the white button⤶
elseif ( child:GetName() == "frame_close" ) then⤶
child:SetCommand( "Testing" )⤶
end⤶
⤶
end⤶
⤶
function TestFrame:ActionSignal( signalName, signalValue )⤶
⤶
-- Show the signal name⤶
lbl:SetText( "Received command: \"" .. signalName .. "\"" )⤶
⤶
end⤶
</code>⤶
<output><image src="Panel_SetCommand_example1.gif"/></output>⤶
</example>