Garry's Mod Wiki

Revision Difference

Panel:SetCommand#511024

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