Jump to content

Problems creating a menu based on ini read


insomnai
 Share

Recommended Posts

Hi guys and gals. I'm struggling with a little bit of a problem.

I'm wanting to create an ini file which has all of the names of software types I want to install, but my initial test of this throws up a couple of errors when I test it.

basically i'm using:

$mTestMenu = GUICtrlCreateMenu(IniReadSectionNames(StringLeft(@ScriptDir,2) & "\tools\" & "Thisisan.ini")

However, I can see where it is wrong on the theory side, essentially this is going to try and create a menu using the names of all the sections within a specified ini, whereas there should only be one name.

What I want to generate is a menu that has a header, then the GUICtrlMenuItem's will be Sections from possibly a second ini? Perhaps this is too complex for what I want. The idea was for the menu content be filled with the other section names that are linked to the header.

All in all, I want the menu system to be completely configurable from outside the .exe but struggling to choose the right context for this. Can anyone shed some light?

Many thanks

Link to comment
Share on other sites

About the error IniReadSectionNames() returns an Array not a String.

About the rest I've seen this around the forum before so I did a quick search and found this >>

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Link to comment
Share on other sites

  • Moderators

insomnai,

If I use this ini file:

[Item 1]
[Item 2]
[Item 3]
[Item 4]
[Item 5]

then this script does what you want:

#include <GUIConstantsEx.au3>

; Read ini section names
$aList = IniReadSectionNames("List.ini")
; Create an array to hold the CIDs of the menu items
Global $aMenuItem[$aList[0] + 1] = [$aList[0]]

; Create the GUI
$hGUI = GUICreate("Test", 500, 500)

; Create the menu
$mMenu = GUICtrlCreateMenu("List")
For $i = 1 To $aList[0]
    $aMenuItem[$i] = GUICtrlCreateMenuItem($aList[$i], $mMenu)
Next

GUISetState()

While 1
    $iMsg = GUIGetMsg()
    Switch $iMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $aMenuItem[1] To $aMenuItem[$aList[0]]
            ; If it was a menu item - find which one
            For $i = 1 To $aList[0]
                If $iMsg = $aMenuItem[$i] Then
                    MsgBox(0, "Menu", "Item " & $i)
                    ExitLoop
                EndIf
            Next
    EndSwitch
WEnd

All clear? :graduated:

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

Melba23, thank you! It's about as clear as mud at this stage but it certainly is a step in the right direction. I knew it was going to be a bit harder, but I had no idea I was stepping into arrays etc, I've not done anything with them before. I just need to translate it in my head to something I can understand. I hate just using code that someone throws up here for me :-/

Any possibility you could explain it to me?

Guiness, thank you aswell buddy, I happen to have come accross that post in my own searches but that one was waaaaay over my head.

I'm still ploughing through the help file to see if there is something I might have overlooked, again, still a bit beyond me at the moment...

Link to comment
Share on other sites

  • Moderators

insomnai,

Any possibility you could explain it to me?

First, I suggest you read the Arrays tutorial in the Wiki. Arrays are an essential element in every coder's toolbox and well worth a bit of effort to understand.

In the script I posted above the IniReadSectionNames function returns an array of the section names - just like it says on the tin. ;)

We then create another array of the same size to hold the ControlIDs of the MenuItems we will create later.

When we create the MenuItems we use a For...Next loop to loop through the array using each element in turn to create a MenuItem and storing the returned ControlID in the array we created earlier.

When you click on a MenuItem, GUIGetMsg returns a ControlID, so we look in the Switch structure to see if the event is in the range covered by our MenuItems. If it is, we use another For...Next loop to identify the specific element.

Does that help? :graduated:

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

Look... /pointsatfloor, it's hair. it's my hair. I pulled it out. This is me eating my own head.

I need to do some reading ;-)

I got to the IniReadSectionNames and it was a bit baffling... (still is a bit baffling)

I will get there. Now i've got to work towards submenu's. Yaye.

Link to comment
Share on other sites

  • Moderators

insomnai,

Learn to walk before you start to run. Make sure you understand how that code I posted works before getting any deeper or you will just end up here again in a few day very frustrated. :graduated:

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

To add ... once you understand Arrays and how significant they can be, you'll never look back :graduated:

Learn to walk before you start to run

Was just about to say that. OK here is another idiom "slow and steady wins the race" ;)

UDF List:

 
_AdapterConnections()_AlwaysRun()_AppMon()_AppMonEx()_ArrayFilter/_ArrayReduce_BinaryBin()_CheckMsgBox()_CmdLineRaw()_ContextMenu()_ConvertLHWebColor()/_ConvertSHWebColor()_DesktopDimensions()_DisplayPassword()_DotNet_Load()/_DotNet_Unload()_Fibonacci()_FileCompare()_FileCompareContents()_FileNameByHandle()_FilePrefix/SRE()_FindInFile()_GetBackgroundColor()/_SetBackgroundColor()_GetConrolID()_GetCtrlClass()_GetDirectoryFormat()_GetDriveMediaType()_GetFilename()/_GetFilenameExt()_GetHardwareID()_GetIP()_GetIP_Country()_GetOSLanguage()_GetSavedSource()_GetStringSize()_GetSystemPaths()_GetURLImage()_GIFImage()_GoogleWeather()_GUICtrlCreateGroup()_GUICtrlListBox_CreateArray()_GUICtrlListView_CreateArray()_GUICtrlListView_SaveCSV()_GUICtrlListView_SaveHTML()_GUICtrlListView_SaveTxt()_GUICtrlListView_SaveXML()_GUICtrlMenu_Recent()_GUICtrlMenu_SetItemImage()_GUICtrlTreeView_CreateArray()_GUIDisable()_GUIImageList_SetIconFromHandle()_GUIRegisterMsg()_GUISetIcon()_Icon_Clear()/_Icon_Set()_IdleTime()_InetGet()_InetGetGUI()_InetGetProgress()_IPDetails()_IsFileOlder()_IsGUID()_IsHex()_IsPalindrome()_IsRegKey()_IsStringRegExp()_IsSystemDrive()_IsUPX()_IsValidType()_IsWebColor()_Language()_Log()_MicrosoftInternetConnectivity()_MSDNDataType()_PathFull/GetRelative/Split()_PathSplitEx()_PrintFromArray()_ProgressSetMarquee()_ReDim()_RockPaperScissors()/_RockPaperScissorsLizardSpock()_ScrollingCredits_SelfDelete()_SelfRename()_SelfUpdate()_SendTo()_ShellAll()_ShellFile()_ShellFolder()_SingletonHWID()_SingletonPID()_Startup()_StringCompact()_StringIsValid()_StringRegExpMetaCharacters()_StringReplaceWholeWord()_StringStripChars()_Temperature()_TrialPeriod()_UKToUSDate()/_USToUKDate()_WinAPI_Create_CTL_CODE()_WinAPI_CreateGUID()_WMIDateStringToDate()/_DateToWMIDateString()Au3 script parsingAutoIt SearchAutoIt3 PortableAutoIt3WrapperToPragmaAutoItWinGetTitle()/AutoItWinSetTitle()CodingDirToHTML5FileInstallrFileReadLastChars()GeoIP databaseGUI - Only Close ButtonGUI ExamplesGUICtrlDeleteImage()GUICtrlGetBkColor()GUICtrlGetStyle()GUIEventsGUIGetBkColor()Int_Parse() & Int_TryParse()IsISBN()LockFile()Mapping CtrlIDsOOP in AutoItParseHeadersToSciTE()PasswordValidPasteBinPosts Per DayPreExpandProtect GlobalsQueue()Resource UpdateResourcesExSciTE JumpSettings INISHELLHOOKShunting-YardSignature CreatorStack()Stopwatch()StringAddLF()/StringStripLF()StringEOLToCRLF()VSCROLLWM_COPYDATAMore Examples...

Updated: 22/04/2018

Link to comment
Share on other sites

Thank you both very much for your input.

I've been experimenting with the code provided in order to try and understand the concept of the array, but it's the [0] + 1 bits and pieces that confuse. I have however been able to create a second menu from a second ini. I'm eventually going to create a gui that adds a new line to the respective ini.

It's the sub menu and getting the choice to perform a run() on a chosen executable (preferably also marked in the ini too...)

Again, thank you very much.

Link to comment
Share on other sites

  • Moderators

insomnai,

it's the [0] + 1 bits and pieces that confuse

You must mean:

Global $aMenuItem[$aList[0] + 1] = [$aList[0]]

AutoIt (like many languages) starts arrays at element [0]. When we use IniReadSectionNames it returns an array where the number of returned items is held in the [0] element, so the array looks like this:

[0]  -- Number of items (3 in this case)
[1]  -- Item 1
[2]  -- Item 2
[3]  -- Item 3

Note the array actually has 4 elements - the 3 items and the count. :graduated:

To get a matching array to hold the ControlIDs, we need a similar sized array. We can do this one of 2 ways:

- 1. Use the count we have in the [0] element of the existing array:

$aMenuItem[$aList[0] + 1]

in which case we need to add 1 to get the required size (3 + 1)

or we could use UBound directly:

$aMenuItem[UBound($aList)]

as this returns the total number of elements.

Has that cleared the air or muddied the waters? (I love mixing metaphors!) ;)

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

Ok, so lets see if i get this right... I've made some adjustments to more closely resemble my data needs but i'm after a measure of my understanding here:

Specifies a variable '$ScriptDir' using 'StringLeft' so I am able to move the script to any location on a given drive letter.

$ScriptDir = StringLeft(@ScriptDir,2)

Specifies a variable '$mainmenu' which equals an array returned by 'IniReadSectionNames'

$mainmenu = IniReadSectionNames($ScriptDir & "\config\" & "mainmenu.ini")

This is the bit i'm most confused about. I'm a little unsure of why '$mainmenu[0] + 1' equals '[$mainmenu[0]]' ?

Global $mainmenuItem[$mainmenu[0] + 1] = [$mainmenu[0]]

Creates '$menuinstallers' which specifies the creation of a menu "installers"

$menuinstallers = GUICtrlCreateMenu("Installers")

Using a 'For' loop where $i equals number '1' counting towards the total count of the array captured by 'IniReadSectionNames' earlier? This loop creates a new menu item using 'GUICtrlCreateMenuItem' where the data matches the array captured earlier in '$mainmenu'?? The count steps every time 'Next' is passed in the script.

For $i = 1 To $mainmenu[0]
    $mainmenuItem[$i] = GUICtrlCreateMenuItem($mainmenu[$i], $menuinstallers)
Next

Do I have this right? I need to look closer on the array but I'm trying to get my head round it.

Thanks for everything so far.

Link to comment
Share on other sites

  • Moderators

insomnai,

This is the bit i'm most confused about

Let us try clear up the confusion. ;)

You are creating an array to hold the ControlIDs of the MenuItems - so obviously it needs to mirror the array with the item names so there is enough space. We have the number of item names in $mainmenu[0] - because that is how we get the array returned by IniReadSectionNames - so we use that to size the new array:

Global $mainmenuItem[$mainmenu[0] + 1]

We need to add 1 because the array starts at [0]. The 2 arrays will now look like this (assuming we have 3 items)

Array    $mainmenu      $mainmenuItem
[0]      3              -
[1]      Item 1         -
[2]      Item 2         -
[3]      Item 3         -

I decided to add the count to the new menu as well - no particular reason, but I quite like counts in the [0] element - so I prefilled that element by declaring that value as I declared the array:

Global $mainmenuItem[$mainmenu[0] + 1] = [$mainmenu[0]]

So the arrays now look like this:

Array    $mainmenu      $mainmenuItem
[0]      3              3
[1]      Item 1         -
[2]      Item 2         -
[3]      Item 3         -

If I had wanted to I could have declared all the elements of the new array:

Global $mainmenuItem[$mainmenu[0] + 1] = [$mainmenu[0], "Tom", "Dick", "Harry"]

In which case the arrays would look like this:

Array    $mainmenu      $mainmenuItem
[0]      3              3
[1]      Item 1         Tom
[2]      Item 2         Dick
[3]      Item 3         Harry

But there is no need to pre-fill the array in this case as we will use the ControlIDs to fill it as we create the MenuItems.

Any clearer? :graduated:

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

  • Moderators

insomnai,

Now, to understand the For loop...

A For...Next loop is almost an essential if you use arrays as it allows to access each of the array elements in turn.

Let us start with our old friend $mainmenu:

Element   Value
0        3
1        Item 1
2        Item 2
3        Item 3

If we use a For...Next loop we can access each of these elements - try running this in SciTE:

; Declare the array and pre-fill it with values
Global $mainmenu[4] = [3, "Item 1", "Item 2", "Item 3"]
 
; Now run the loop
For $i = 1 To $mainmenu[0]
    ConsoleWrite($mainmenu[$i]  & @CRLF)
Next

How does the loop work?

Firstly we choose a variable to hold the "loop counter" - here I have called it $i but you can gve it any valid name.

Then we define the start and end value that this variable can take - here we have told it to start at 1 and end at $mainmenu[0] (= 3).

Then we tell the loop what to do. In this case we use the variable that will change within the loop to select a particular element of the $mainmenu array

Finally we hit the Next satement. This increases the "loop counter" and compares it to the maximum value we set initially. If the value is less than or equal to the maximum value we repeat the "action" part of the loop; if it is greater then the loop stops.

So in this case the "loop counter" variable starts at 1 - and the "action" part of the loop writes the content of the [1] element of the $mainmenu array. The "Next" command increases the counter to 2 and repeats the process for the [2] element - then we get to 3 and do it again for the [3] element. Finally "Next" will increase the counter to 4 - this is greater than the maximum value we set initially ($mainmenu[0] = 3) and so the loop stops.

Any clearer? :graduated:

Question: How do I adapt this to have the menu's to contain sub-menu's?

By adapting the same process and creating more arrays - but as we have said before: learn to walk before you try to run. Understand how this very basic script works before you get into more complex coding. ;)

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

  • Moderators

insomnai,

Just PM me. :graduated:

M23

Public_Domain.png.2d871819fcb9957cf44f4514551a2935.png Any of my own code posted anywhere on the forum is available for use by others without any restriction of any kind

Open spoiler to see my UDFs:

Spoiler

ArrayMultiColSort ---- Sort arrays on multiple columns
ChooseFileFolder ---- Single and multiple selections from specified path treeview listing
Date_Time_Convert -- Easily convert date/time formats, including the language used
ExtMsgBox --------- A highly customisable replacement for MsgBox
GUIExtender -------- Extend and retract multiple sections within a GUI
GUIFrame ---------- Subdivide GUIs into many adjustable frames
GUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView items
GUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeView
Marquee ----------- Scrolling tickertape GUIs
NoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxes
Notify ------------- Small notifications on the edge of the display
Scrollbars ----------Automatically sized scrollbars with a single command
StringSize ---------- Automatically size controls to fit text
Toast -------------- Small GUIs which pop out of the notification area

 

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...