Garry's Mod Wiki

Revision Difference

Panel:SetCommand#550873

<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</realm>⤶ <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>