NDog Posted February 7, 2012 Share Posted February 7, 2012 (edited) I am trying to make an autoit script which allows the input of serial keys. They are in the format xxxxx-xxxxx-xxxxx-xxxxx-xxxxx.I am trying to emulate the same thing as when installing windows product serial key input box. If text is typed in it flows from left to right, and if text is deleted it flows from right to left.I know how to limit text to 5 characters within an input box, however I do not know how to create the text flow effect as described above. Edited February 7, 2012 by NDog Link to comment Share on other sites More sharing options...
Guest Posted February 7, 2012 Share Posted February 7, 2012 (edited) Try this, I made this for my setup builder. expandcollapse popup#Include <GuiEdit.au3> #Include <GuiButton.au3> #include <ButtonConstants.au3> #include <WindowsConstants.au3> #include <GUIConstantsEx.au3> Global $ser1,$ser2,$ser3,$ser4,$ser5,$PasteBtn,$DoOnce1,$DoOnce2,$DoOnce3,$DoOnce4,$DoOnce5 $gui = GUICreate("GUI", 494, 350) $BKTopPic = GUICtrlCreateLabel("",0, 0, 494, 59,0x06) $BackBtn = GUICtrlCreateButton("< Back", 244, 317,76, 24) $NextBtn = GUICtrlCreateButton("Next >", 327, 317,76, 24,$BS_DEFPUSHBUTTON) $CancelBtn = GUICtrlCreateButton("Cancel", 410, 317,76, 24) $PasteBtn = GUICtrlCreateButton("Paste", 373, 175,60, 20) $SFS25LabAddInfo = GUICtrlCreateLabel("Some Information", 60, 70, 374, 45) $ser1 = GUICtrlCreateEdit("",62,145,70,25,$ES_AUTOHSCROLL) GUICtrlSetFont($ser1,11, 1) GUICtrlSetLimit($ser1, 5) $ser2 = GUICtrlCreateEdit("",137,145,70,25,$ES_AUTOHSCROLL) GUICtrlSetFont($ser2,11, 1) GUICtrlSetLimit($ser2, 5) $ser3 = GUICtrlCreateEdit("",212,145,70,25,$ES_AUTOHSCROLL) GUICtrlSetFont($ser3,11, 1) GUICtrlSetLimit($ser3, 5) $ser4 = GUICtrlCreateEdit("",287,145,70,25,$ES_AUTOHSCROLL) GUICtrlSetFont($ser4,11, 1) GUICtrlSetLimit($ser4, 5) $ser5 = GUICtrlCreateEdit("",362,145,70,25,$ES_AUTOHSCROLL) GUICtrlSetFont($ser5,11, 1) GUICtrlSetLimit($ser5, 5) $DoOnce1 = 1 $DoOnce2 = 1 $DoOnce3 = 1 $DoOnce4 = 1 $DoOnce5 = 1 $HasDone13 = "done" GUISetState(@SW_SHOW,$gui) While 1 $msg = GUIGetMsg() Switch $Msg Case $PasteBtn $SerialClip = ClipGet() GUICtrlSetData ( $ser1, StringMid ( $SerialClip, 1, 5 )) GUICtrlSetData ( $ser2, StringMid ( $SerialClip, 6, 5 )) GUICtrlSetData ( $ser3, StringMid ( $SerialClip, 11, 5 )) GUICtrlSetData ( $ser4, StringMid ( $SerialClip, 16, 5 )) GUICtrlSetData ( $ser5, StringMid ( $SerialClip, 21, 5 )) case $NextBtn ;------------------------------ GUICtrlSetState ( $SFS25LabAddInfo ,$GUI_HIDE ) GUICtrlSetState ( $ser1 ,$GUI_hide ) GUICtrlSetState ( $ser2 ,$GUI_hide ) GUICtrlSetState ( $ser3 ,$GUI_hide ) GUICtrlSetState ( $ser4 ,$GUI_hide ) GUICtrlSetState ( $ser5 ,$GUI_hide ) GUICtrlSetState ( $PasteBtn ,$GUI_hide ) case $CancelBtn,$GUI_EVENT_CLOSE ;------------------------------ $answer = MsgBox(292, "Exit Setup", "Setup is not complete. If you exit now, ProductName ProductVersion will not be installed." &@CRLF&@CRLF& "You may run Setup again at another time to complete the installation." &@CRLF&@CRLF& "Exit Setup?" , -1,$gui) Switch $answer Case 6; Yes Exit Case 7; No EndSwitch case $BackBtn ;------------------------------ GUICtrlSetState ( $SFS25LabAddInfo ,$GUI_HIDE ) GUICtrlSetState ( $ser1 ,$GUI_hide ) GUICtrlSetState ( $ser2 ,$GUI_hide ) GUICtrlSetState ( $ser3 ,$GUI_hide ) GUICtrlSetState ( $ser4 ,$GUI_hide ) GUICtrlSetState ( $ser5 ,$GUI_hide ) GUICtrlSetState ( $PasteBtn ,$GUI_hide ) EndSwitch If StringLen(GUICtrlRead($ser1,1)) = 5 Then If $DoOnce1 = 1 Then Send("{TAB}") $DoOnce1 = 0 EndIf Else $DoOnce1 = 1 EndIf If StringLen(GUICtrlRead($ser2,1)) = 5 Then If $DoOnce2 = 1 Then Send("{TAB}") $DoOnce2 = 0 EndIf Else $DoOnce2 = 1 EndIf If StringLen(GUICtrlRead($ser3,1)) = 5 Then If $DoOnce3 = 1 Then Send("{TAB}") $DoOnce3 = 0 EndIf Else $DoOnce3 = 1 EndIf If StringLen(GUICtrlRead($ser4,1)) = 5 Then If $DoOnce4 = 1 Then Send("{TAB}") $DoOnce4 = 0 EndIf Else $DoOnce4 = 1 EndIf If StringLen(GUICtrlRead($ser5,1)) = 5 Then If $DoOnce5 = 1 Then GUICtrlSetState ( $NextBtn,$GUI_FOCUS) $DoOnce5 = 0 EndIf Else $DoOnce5 = 1 EndIf WEnd GUIDelete() Edited February 7, 2012 by Guest Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted February 7, 2012 Moderators Share Posted February 7, 2012 NDog, You can do it very easily like this: expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <EditConstants.au3> Global $iChar_Limit = 2 $hGUI = GUICreate("Input Autofocus", 500, 500) $hInput_1 = GUICtrlCreateInput("", 20, 20, 30, 20) GUICtrlSetLimit(-1, $iChar_Limit) $hInput_2 = GUICtrlCreateInput("", 80, 20, 30, 20) GUICtrlSetLimit(-1, $iChar_Limit) $hInput_3 = GUICtrlCreateInput("", 140, 20, 30, 20) GUICtrlSetLimit(-1, $iChar_Limit) $hButton = GUICtrlCreateButton("OK", 75, 60, 40, 25) GUICtrlSetState(-1, $GUI_DISABLE) GUIRegisterMsg($WM_COMMAND, "_WM_COMMAND") GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit Case $hButton $sString = GUICtrlRead($hInput_1) & "-" & GUICtrlRead($hInput_2) & "-" & GUICtrlRead($hInput_3) MsgBox(0, "Result", $sString) EndSwitch WEnd Func _WM_COMMAND($hWnd, $Msg, $wParam, $lParam) $iCode = BitShift($wParam, 16) $iID = BitAND($wParam, 0x0000FFFF) Switch $iCode Case $EN_UPDATE ; 0x400 ; $iLen = StringLen(GUICtrlRead($iID)) Switch $iLen Case $iChar_Limit GUICtrlSetState($iID + 1, $GUI_ENABLE) GUICtrlSetState($iID + 1, $GUI_FOCUS) Case 0 GUICtrlSetState($hButton, $GUI_DISABLE) GUICtrlSetState($iID - 1, $GUI_FOCUS) ControlSend($hGUI, "", $iID - 1, "{END}") EndSwitch EndSwitch EndFunc ;==>On_WM_COMMAND Please ask if you have any questions. M23 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 columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
NDog Posted February 7, 2012 Author Share Posted February 7, 2012 @Aipion - Your code is good and has given me some good ideas of how to structure a well done serial key input GUI. The Tab keypress is an interesting approach @Melba23 - I have never used a GUIRegisterMsg function before but I think this is a good idea. I notice you also you use a hotkey approach as well, which is able to make the text flow backwards on deletion which is desirable. I am confused as to how does the Func _WM_COMMAND() know to apply to the Input boxes, which don't appear to have a reference to that function. Also If I wanted to used multiple serial key inputs (eg for different products) on the one GUI, would they also be able to call the func Func _WM_COMMAND()? Link to comment Share on other sites More sharing options...
UEZ Posted February 7, 2012 Share Posted February 7, 2012 (edited) Here another way: Br,UEZ Edited November 23, 2014 by UEZ Please don't send me any personal message and ask for support! I will not reply! Selection of finest graphical examples at Codepen.io The own fart smells best! ✌Her 'sikim hıyar' diyene bir avuç tuz alıp koşma!¯\_(ツ)_/¯ ٩(●̮̮̃•̃)۶ ٩(-̮̮̃-̃)۶ૐ Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted February 7, 2012 Moderators Share Posted February 7, 2012 NDog,I have never used a GUIRegisterMsg function beforeThen I recommend the GUIRegisterMsg tutorial in the Wiki. I notice you also you use a hotkey approachI do? Where do you see that? how does the Func _WM_COMMAND() know to apply to the Input boxesWithin the message handler we extract the ControlID of the control sending the EN_CHANGE message from $wParam - this is $iID. So the handle knows which input is currently focused - using $iID +/- 1 just sets the focus to the next/previous one. I wanted to used multiple serial key inputs (eg for different products) on the one GUI, would they also be able to call the func Func _WM_COMMAND()?Yes, but we would need to change the code a bit to deal with that. Give me a few moments and I will see what I can come up with. M23 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 columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted February 7, 2012 Moderators Share Posted February 7, 2012 NDog,Easier than I thought - the trick is to create the inputs in IMMEDIATE succession with no other controls created between them:expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <EditConstants.au3> Global $iChar_Limit = 2 $hGUI = GUICreate("Input Autofocus", 500, 500) $hInput_1 = GUICtrlCreateInput("", 20, 20, 30, 20) $hInput_2 = GUICtrlCreateInput("", 80, 20, 30, 20) $hInput_3 = GUICtrlCreateInput("", 140, 20, 30, 20) $hInput_4 = GUICtrlCreateInput("", 20, 70, 30, 20) $hInput_5 = GUICtrlCreateInput("", 80, 70, 30, 20) $hInput_6 = GUICtrlCreateInput("", 140, 70, 30, 20) For $i = $hInput_1 To $hInput_6 GUICtrlSetLimit($i, 2) Next $hButton = GUICtrlCreateButton("OK", 10, 120, 80, 30) GUICtrlSetState(-1, $GUI_DISABLE) GUIRegisterMsg($WM_COMMAND, "_WM_COMMAND") GUISetState() While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit Case $hButton $sString = GUICtrlRead($hInput_1) & "-" & GUICtrlRead($hInput_2) & "-" & GUICtrlRead($hInput_3) & @CRLF & _ GUICtrlRead($hInput_4) & "-" & GUICtrlRead($hInput_5) & "-" & GUICtrlRead($hInput_6) MsgBox(0, "Result", $sString) EndSwitch WEnd Func _WM_COMMAND($hWnd, $Msg, $wParam, $lParam) $iCode = BitShift($wParam, 16) $iID = BitAND($wParam, 0x0000FFFF) Switch $iCode Case $EN_UPDATE ; 0x400 ; $iLen = StringLen(GUICtrlRead($iID)) Switch $iLen Case $iChar_Limit GUICtrlSetState($iID + 1, $GUI_ENABLE) GUICtrlSetState($iID + 1, $GUI_FOCUS) Case 0 GUICtrlSetState($hButton, $GUI_DISABLE) GUICtrlSetState($iID - 1, $GUI_FOCUS) ControlSend($hGUI, "", $iID - 1, "{END}") EndSwitch EndSwitch EndFunc ;==>On_WM_COMMANDM23 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 columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
NDog Posted February 8, 2012 Author Share Posted February 8, 2012 @UEZ - This is quite nice how there is one input text box and it figures out how to seperate the characters with a '-' automatically. The code is not perfect, eg if someone deleted text blocks in the middle, the syntax will be confused again, however this would be simple as adding some more code to detect that. I might use this kind of script in the future.@Melba23 - Thanks for your help, I will use this code in my project. The hotkey approach I mentioned was refering to selecting previous box and pressing {END} key to move the input cursor to the end.I learnt a bit about GUIRegisterMsg and how it is used to catch messages. Im sure it will come in handy in many GUI scripts. Link to comment Share on other sites More sharing options...
NDog Posted February 8, 2012 Author Share Posted February 8, 2012 I am currently adding this func into another script I have but there is a problem as it is affecting all input boxes. This is what I was getting at when I mentioned "how does the Func _WM_COMMAND() know to apply to the Input boxes?"I would like to narrow the function down to only affect input boxes which start with $flowInput[$i] here. Do you know how I should modify the Func? I was trying to use consolewrite to show me what variables are being passed into the function and then use a stringinstr to ensure only valid input boxes have the function applied to them. Can you show me where I am going wrong?expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <EditConstants.au3> Opt("GUIOnEventMode", 1) $fmSNIP = GUICreate("Test Box", 500, 500, -1) $cmSiteName = GUICtrlCreateCombo("", 8, 64, 257, 25) $lbSiteName = GUICtrlCreateLabel("Site Name", 8, 48, 53, 15) $lbSERVERNAME = GUICtrlCreateLabel("SERVER NAME", 8, 128, 82, 15) $lbWORKGROUP = GUICtrlCreateLabel("WORKGROUP", 120, 128, 77, 15) $lbDesiredName = GUICtrlCreateLabel("Desired Name", 9, 89, 69, 15) $inDesiredName = GUICtrlCreateInput("", 8, 104, 257, 21) $inSERVERNAME = GUICtrlCreateInput("", 8, 144, 105, 21) $inWORKGROUP = GUICtrlCreateInput("", 120, 144, 145, 21) Global $iChar_Limit = 5 Dim $flowInput[6] $flowInput[1] = GUICtrlCreateInput("", 20, 20, 40, 20) GUICtrlSetLimit(-1, $iChar_Limit) $flowInput[2] = GUICtrlCreateInput("", 80, 20, 40, 20) GUICtrlSetLimit(-1, $iChar_Limit) $flowInput[3] = GUICtrlCreateInput("", 140, 20, 40, 20) GUICtrlSetLimit(-1, $iChar_Limit) $flowInput[4] = GUICtrlCreateInput("", 200, 20, 40, 20) GUICtrlSetLimit(-1, $iChar_Limit) $flowInput[5] = GUICtrlCreateInput("", 260, 20, 40, 20) GUICtrlSetLimit(-1, $iChar_Limit) $flowButton = GUICtrlCreateButton("OK", 75, 60, 40, 25) GUICtrlSetState(-1, $GUI_DISABLE) GUIRegisterMsg($WM_COMMAND, "_WM_COMMAND") GUISetOnEvent($GUI_EVENT_CLOSE, "FormClose") ; When the big X is clicked GUISetState(@SW_SHOW) While 1 ;On event mode GUI Sleep(100) WEnd Func _WM_COMMAND($hWnd, $Msg, $wParam, $lParam) $iCode = BitShift($wParam, 16) $iID = BitAND($wParam, 0x0000FFFF) Switch $iCode ; This part is to catch if wrong variables are being passed into the function. ; If so return as we only want to process inputs that start with $flowInput ConsoleWrite($iID) If StringInStr($iID) <> $flowInput Then Return Case $EN_UPDATE ; 0x400 ; $iLen = StringLen(GUICtrlRead($iID)) Switch $iLen Case $iChar_Limit GUICtrlSetState($iID + 1, $GUI_ENABLE) GUICtrlSetState($iID + 1, $GUI_FOCUS) Case 0 GUICtrlSetState($flowButton, $GUI_DISABLE) GUICtrlSetState($iID - 1, $GUI_FOCUS) ControlSend($fmSNIP, "", $iID - 1, "{END}") EndSwitch EndSwitch EndFunc ;==>On_WM_COMMAND Func FormClose() Exit EndFunc Link to comment Share on other sites More sharing options...
NDog Posted February 8, 2012 Author Share Posted February 8, 2012 I just updated the func to do an array scan of inputbox types before applying the changes. It works, I am not sure if it is a good idea to do that, in terms of memory and CPU calculation, but it works. Still keen for any more efficient methods, otherwise it is working ok for now. expandcollapse popup#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <EditConstants.au3> Opt("GUIOnEventMode", 1) $fmSNIP = GUICreate("Test Box", 500, 500, -1) $cmSiteName = GUICtrlCreateCombo("", 8, 64, 257, 25) $lbSiteName = GUICtrlCreateLabel("Site Name", 8, 48, 53, 15) $lbSERVERNAME = GUICtrlCreateLabel("SERVER NAME", 8, 128, 82, 15) $lbWORKGROUP = GUICtrlCreateLabel("WORKGROUP", 120, 128, 77, 15) $lbDesiredName = GUICtrlCreateLabel("Desired Name", 9, 89, 69, 15) $inDesiredName = GUICtrlCreateInput("", 8, 104, 257, 21) $inSERVERNAME = GUICtrlCreateInput("", 8, 144, 105, 21) $inWORKGROUP = GUICtrlCreateInput("", 120, 144, 145, 21) Global $iChar_Limit = 5 Dim $flowInput[6] $flowInput[1] = GUICtrlCreateInput("", 20, 20, 40, 20) GUICtrlSetLimit(-1, $iChar_Limit) $flowInput[2] = GUICtrlCreateInput("", 80, 20, 40, 20) GUICtrlSetLimit(-1, $iChar_Limit) $flowInput[3] = GUICtrlCreateInput("", 140, 20, 40, 20) GUICtrlSetLimit(-1, $iChar_Limit) $flowInput[4] = GUICtrlCreateInput("", 200, 20, 40, 20) GUICtrlSetLimit(-1, $iChar_Limit) $flowInput[5] = GUICtrlCreateInput("", 260, 20, 40, 20) GUICtrlSetLimit(-1, $iChar_Limit) $flowButton = GUICtrlCreateButton("OK", 75, 60, 40, 25) GUICtrlSetState(-1, $GUI_DISABLE) GUIRegisterMsg($WM_COMMAND, "_WM_COMMAND") GUISetOnEvent($GUI_EVENT_CLOSE, "FormClose") ; When the big X is clicked GUISetState(@SW_SHOW) While 1 ;On event mode GUI Sleep(100) WEnd Func _WM_COMMAND($hWnd, $Msg, $wParam, $lParam) $iCode = BitShift($wParam, 16) ;HiWord $iID = BitAND($wParam, 0x0000FFFF) ;LoWord For $i = 1 To UBound($flowInput) -1 If $iID = $flowInput[$i] Then Switch $iCode Case $EN_UPDATE ; 0x400 ; 768 ; control was updated $iLen = StringLen(GUICtrlRead($iID)) Switch $iLen Case $iChar_Limit GUICtrlSetState($iID + 1, $GUI_ENABLE) GUICtrlSetState($iID + 1, $GUI_FOCUS) Case 0 GUICtrlSetState($flowButton, $GUI_DISABLE) GUICtrlSetState($iID - 1, $GUI_FOCUS) ControlSend($fmSNIP, "", $iID - 1, "{END}") EndSwitch EndSwitch EndIf Next EndFunc ;==>On_WM_COMMAND Func FormClose() Exit EndFunc Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted February 8, 2012 Moderators Share Posted February 8, 2012 (edited) NDog,The only suggestion I have is that as you are using a For...Next loop you might want to add an ExitLoop once you have actioned the code to prevent the loop checking the later inputs to no purpose:For $i = 1 To UBound($flowInput) - 1 If $iID = $flowInput[$i] Then Switch $iCode Case $EN_UPDATE ; 0x400 ; 768 ; control was updated $iLen = StringLen(GUICtrlRead($iID)) Switch $iLen Case $iChar_Limit GUICtrlSetState($iID + 1, $GUI_ENABLE) GUICtrlSetState($iID + 1, $GUI_FOCUS) Case 0 GUICtrlSetState($flowButton, $GUI_DISABLE) GUICtrlSetState($iID - 1, $GUI_FOCUS) ControlSend($fmSNIP, "", $iID - 1, "{END}") EndSwitch EndSwitch ExitLoop EndIf NextM23 Edited February 8, 2012 by Melba23 Wrong button too soon 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 columnsChooseFileFolder ---- Single and multiple selections from specified path treeview listingDate_Time_Convert -- Easily convert date/time formats, including the language usedExtMsgBox --------- A highly customisable replacement for MsgBoxGUIExtender -------- Extend and retract multiple sections within a GUIGUIFrame ---------- Subdivide GUIs into many adjustable framesGUIListViewEx ------- Insert, delete, move, drag, sort, edit and colour ListView itemsGUITreeViewEx ------ Check/clear parent and child checkboxes in a TreeViewMarquee ----------- Scrolling tickertape GUIsNoFocusLines ------- Remove the dotted focus lines from buttons, sliders, radios and checkboxesNotify ------------- Small notifications on the edge of the displayScrollbars ----------Automatically sized scrollbars with a single commandStringSize ---------- Automatically size controls to fit textToast -------------- Small GUIs which pop out of the notification area Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now