Garry's Mod Wiki

Revision Difference

Panel:SetCommand#517391

<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> </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 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 pairs(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></output>⤶ <output><image src="Panel_SetCommand_example1.gif"/></output>⤶ </example>