GuiCreateGridList: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
No edit summary
mNo edit summary
 
(13 intermediate revisions by 7 users not shown)
Line 1: Line 1:
__NOTOC__  
__NOTOC__  
{{Client function}}
This function creates a grid list GUI element.  These are menu's which are designed in lists and can have multiple columns.  A good example of a gridlist element can be found in MTA's settings box, under ''Controls''.
This function creates a grid list GUI element.  These are menu's which are designed in lists and can have multiple columns.  A good example of a gridlist element can be found in MTA's settings box, under ''Controls''.


==Syntax==  
==Syntax==  
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
element guiCreateGridList ( float x, float y, float width, float height, bool relative, element parent )
element guiCreateGridList ( float x, float y, float width, float height, [ bool relative = false, gui-element parent = nil ] )
</syntaxhighlight>  
</syntaxhighlight>
{{OOP||[[Element/GUI/Gridlist|GuiGridList]]}}


===Required Arguments===  
===Required Arguments===  
[[Image:Gui-gridlist.png|frame|Example GUI gridlist.]]
*'''x:''' A float of the 2D x position of the GUI gridlist on a player's screen.  This is affected by the ''relative'' argument.
*'''x:''' A float of the 2D x position of the GUI gridlist on a player's screen.  This is affected by the ''relative'' argument.
*'''y:''' A float of the 2D y position of the GUI gridlist on a player's screen. This is affected by the ''relative'' argument.
*'''y:''' A float of the 2D y position of the GUI gridlist on a player's screen. This is affected by the ''relative'' argument.
*'''width:''' A float of the width of the GUI gridlist. This is affected by the ''relative'' argument.
*'''width:''' A float of the width of the GUI gridlist. This is affected by the ''relative'' argument.
*'''height:''' A float of the height of the GUI gridlist. This is affected by the ''relative'' argument.
*'''height:''' A float of the height of the GUI gridlist. This is affected by the ''relative'' argument.
*'''text:''' A string of the text that will be displayed by default in the edit box.
*'''relative:''' This is whether sizes and positioning are relative.  If this is ''true'', then all x,y,width,height floats must be between 0 and 1, representing sizes relative to the parent.
<!-- Only include this section below if there are optional arguments -->


===Optional Arguments===  
===Optional Arguments===  
{{OptionalArg}}  
{{OptionalArg}}  
*'''parent:''' This is the parent that the gui button is attached to.  The ''relative'' argument must be true to use this. Sizes and positioning will be made relative to this parent. If no parent is passed, the parent will become the screen - causing relative positioning and sizing according to screen positioning.
*'''relative:''' This is whether sizes and positioning are relative.  If this is ''true'', then all x,y,width,height floats must be between 0 and 1, representing sizes relative to the parent.
*'''parent:''' This is the parent that the gui gridlist is attached to.  If the ''relative'' argument is true, sizes and positioning will be made relative to this parent. If the ''relative'' argument is false, positioning will be the number of offset pixels from the parent's origin. If no parent is passed, the parent will become the screen - causing positioning and sizing according to screen positioning.


===Returns===
===Returns===
<!-- Make this descriptive. Explain what cases will return false. If you're unsure, add a tag to it so we can check -->
Returns an element of the created gridlist if it was successfully created, false otherwise.
Returns ''true'' if blah, ''false'' otherwise.


==Example==  
==Example==
'''Example 1:'''This example creates a player list on the right of the screen and fills it
'''Example 1:''' This example creates a player list on the right of the screen with 1 column and fills it
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
function createPlayerList ()
local playerList = guiCreateGridList(0.80, 0.40, 0.15, 0.35, true)
--Create the grid list element
guiGridListAddColumn(playerList, "Player", 0.85)
local playerList = guiCreateGridList ( 0.80, 0.10, 0.15, 0.60, true )
 
--Create a players column in the list
for _, player in ipairs(getElementsByType("player")) do
local column = guiGridListAddColumn( playerList, "Player", 0.85 )
guiGridListAddRow(playerList, getPlayerName(player))
if ( column ) then --If the column has been created, fill it with players
for id, player in ipairs(getElementsByType("player")) do
local row = guiGridListAddRow ( playerList )
guiGridListSetItemText ( playerList, row, column, getPlayerName ( player ), false, false )
end
end
end
end
</syntaxhighlight>
</syntaxhighlight>


'''Example 2:''' This example creates a weapon selection screen, complete with a window, gridlist and a button.  Users can select a handgun and an uzi.  The window is not movable or sizable.
'''Example 2:''' Using [[OOP]] we can write shorter and cleaner code (Requires <oop>true<oop> in the meta file). This creates a player list with 2 columns.
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
--Setup some tables
local list = GuiGridList(0.80, 0.40, 0.15, 0.35, true)
handguns = {
list:addColumn("#", 0.15)
"colt45",
list:addColumn("name", 0.75)
"deagle",
"silenced" }
 
uzis = {
"Uzi",
"MP5",
"Tec-9" }


function setupWeaponSelection ( resource )
for index, player in ipairs(getElementsByType("player")) do
if resource ~= getThisResource() then return end --if the resource started is not this one, dont bother creating the gui
list:addRow(index, player.name)
---Create a window for our spawnscreen, with the title "Select your weaposn".
spawnScreenMenu = guiCreateWindow ( 0.15, 0.33, 0.7, 0.34, "Select your weapons", true )
--create an OK button to allow the user to confirm their seclections, and attach it to the confirmSelection funnction
spawnScreenOKButton = guiCreateButton ( 0.4, 0.85, 0.20, 0.15, "OK", true, spawnScreenMenu )
--ensure the user doesnt move or resize our spawnscreen.
guiWindowSetMovable ( spawnScreenMenu, false )
guiWindowSetSizable ( spawnScreenMenu, false )
--create our gridlist, which fills up most of the window.
spawnScreenGridList = guiCreateGridList ( 0, 0.1, 1, 0.9, true, spawnScreenMenu )
--Since we have 3 sets of weapons to select, we create 3 new columns, one for handgun, uzi and heavy weapon.
guiGridListAddColumn ( spawnScreenGridList, "Handgun", 0.3 )
guiGridListAddColumn ( spawnScreenGridList, "Uzi", 0.3 )
-- next, we loop through our handguns table to add handgun items to the gridlist
local row = 0 --define a row variable, that increases by one every time.  Starts at 0 since rows begin from 0.
for key,weaponName in pairs(handguns) do
--add a new row to our gridlist each time
guiGridListAddRow ( spawnScreenGridList )
--next, we set that rows text to the weapon name.  Column is 1 since the "Handgun" column was created first.
guiGridListSetItemText ( spawnScreenGridList, row, 1, weaponName, false, false )
row = row + 1 --increase the row number
end
--we repeat the process for other weapon lists, changing the column number
row = 0
for key,weaponName in pairs(uzis) do
--we dont bother creating new rows, since we already have done that
--next, we set that rows text to the weapon name.  Column is 2 since the "Uzis" column was created second.
guiGridListSetItemText ( spawnScreenGridList, row, 2, weaponName, false, false )
row = row + 1 --increase the row number
end
end
end
addEventHandler ( "onClientResourceStart", getRootElement(), setupWeaponSelection )
</syntaxhighlight>
</syntaxhighlight>


==See Also==
==See Also==
<!-- Change FunctionArea to the area that this function is in on the main function list page, e.g. Server, Player, Vehicle etc -->
{{GUI functions}}
{{GUI functions}}
[[Category:Incomplete]]
{{GUI_events}}

Latest revision as of 08:09, 30 October 2023

This function creates a grid list GUI element. These are menu's which are designed in lists and can have multiple columns. A good example of a gridlist element can be found in MTA's settings box, under Controls.

Syntax

element guiCreateGridList ( float x, float y, float width, float height, [ bool relative = false, gui-element parent = nil ] )

OOP Syntax Help! I don't understand this!

Method: GuiGridList(...)


Required Arguments

Example GUI gridlist.
  • x: A float of the 2D x position of the GUI gridlist on a player's screen. This is affected by the relative argument.
  • y: A float of the 2D y position of the GUI gridlist on a player's screen. This is affected by the relative argument.
  • width: A float of the width of the GUI gridlist. This is affected by the relative argument.
  • height: A float of the height of the GUI gridlist. This is affected by the relative argument.

Optional Arguments

NOTE: When using optional arguments, you might need to supply all arguments before the one you wish to use. For more information on optional arguments, see optional arguments.

  • relative: This is whether sizes and positioning are relative. If this is true, then all x,y,width,height floats must be between 0 and 1, representing sizes relative to the parent.
  • parent: This is the parent that the gui gridlist is attached to. If the relative argument is true, sizes and positioning will be made relative to this parent. If the relative argument is false, positioning will be the number of offset pixels from the parent's origin. If no parent is passed, the parent will become the screen - causing positioning and sizing according to screen positioning.

Returns

Returns an element of the created gridlist if it was successfully created, false otherwise.

Example

Example 1: This example creates a player list on the right of the screen with 1 column and fills it

local playerList = guiCreateGridList(0.80, 0.40, 0.15, 0.35, true)
guiGridListAddColumn(playerList, "Player", 0.85)

for _, player in ipairs(getElementsByType("player")) do
	guiGridListAddRow(playerList, getPlayerName(player))
end

Example 2: Using OOP we can write shorter and cleaner code (Requires <oop>true<oop> in the meta file). This creates a player list with 2 columns.

local list = GuiGridList(0.80, 0.40, 0.15, 0.35, true)
list:addColumn("#", 0.15)
list:addColumn("name", 0.75)

for index, player in ipairs(getElementsByType("player")) do
	list:addRow(index, player.name)
end

See Also

General functions

Browsers

Buttons

Checkboxes

Comboboxes

Edit Boxes

Gridlists

Memos

Progressbars

Radio Buttons

Scrollbars

Scrollpanes

Static Images

Tab Panels

Tabs

Text Labels

Windows

Input

GUI