Garry's Mod Wiki

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>