kakarotsaiyan Posted July 26, 2018 Share Posted July 26, 2018 (edited) I have been trying to learn autoit for the past few days. I decided to make a simple drop down select to display hex code of a color. But i'm stuck on how to proceed as running the below script only displays the Color name. Any help is appreciated, Thank You. #include <GUIConstantsEx.au3> #include <MsgBoxConstants.au3> HotKeySet ("{numpaddot}", "MyExit") GUICreate("Hexinfo", 300, 50) Local $idComboBox = GUICtrlCreateCombo("", 10, 10, 185, 20) GUICtrlSetData($idComboBox, "White|Red|Green|Black") GUISetState(@SW_SHOW) Local $sComboRead = "" Local $arr[4] $arr[0] = 0xFFFFFF $arr[1] = 0xFF0000 $arr[2] = 0x008000 $arr[3] = 0x000000 While 1 Switch GUIGetMsg() Case $idComboBox $sComboRead = GUICtrlRead($idComboBox) MsgBox($MB_SYSTEMMODAL, "", "The combobox is currently displaying: " & $sComboRead, 0) EndSwitch WEnd Func MyExit() Exit EndFunc Edited July 26, 2018 by kakarotsaiyan Link to comment Share on other sites More sharing options...
Moderators Melba23 Posted July 26, 2018 Moderators Share Posted July 26, 2018 kakarotsaiyan, You need to find the index of the selected item within the combo - which means using one of the more advanced UDF functions like this: #include <GUIConstantsEx.au3> #include <MsgBoxConstants.au3> #include <GuiComboBox.au3> HotKeySet("{numpaddot}", "MyExit") ; Easier way to assign array elements Local $arr[4] = ["0xFFFFFF", "0xFF0000", "0x008000", "0x000000"] GUICreate("Hexinfo", 300, 50) Local $idComboBox = GUICtrlCreateCombo("", 10, 10, 185, 20) GUICtrlSetData($idComboBox, "White|Red|Green|Black") GUISetState(@SW_SHOW) Local $sComboRead = "" While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE ; You can close the GUI using the [X] like this Exit Case $idComboBox $sComboRead = GUICtrlRead($idComboBox) $iComboSel = _GUICtrlComboBox_GetCurSel($idComboBox) ; Get the index of the selected item - use it to index the array MsgBox($MB_SYSTEMMODAL, "", "The combobox is currently displaying: " & $sComboRead & " [" & $arr[$iComboSel] & "]", 0) EndSwitch WEnd Func MyExit() Exit EndFunc ;==>MyExit Please ask if you have any questions. M23 kakarotsaiyan 1 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...
AutoBert Posted July 26, 2018 Share Posted July 26, 2018 a other way is to do this with _ArraySearch in a 2D-array: #include <GUIConstantsEx.au3> #include <MsgBoxConstants.au3> #include <Array.au3> GUICreate("Hexinfo", 300, 50) Local $idComboBox = GUICtrlCreateCombo("", 10, 10, 185, 20) GUICtrlSetData($idComboBox, "White|Red|Green|Black") GUISetState(@SW_SHOW) Local $sComboRead = "" Local $arr[4][2] $arr[0][0] = 0xFFFFFF $arr[1][0] = 0xFF0000 $arr[2][0] = 0x008000 $arr[3][0] = 0x000000 $arr[0][1] = "White" $arr[1][1] = "Red" $arr[2][1] = "Green" $arr[3][1] = "Black" While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit Case $idComboBox $sComboRead = GUICtrlRead($idComboBox) $iFound = _ArraySearch($arr, $sComboRead, 0, 0, 0, 0, 1, 1) MsgBox($MB_SYSTEMMODAL, "", "The combobox is currently displaying: " & $sComboRead & @CRLF & "Hex: " & Hex($arr[$iFound][0]), 0) EndSwitch WEnd kakarotsaiyan 1 Link to comment Share on other sites More sharing options...
kakarotsaiyan Posted July 26, 2018 Author Share Posted July 26, 2018 (edited) Thank You, guys. i now understand. I'll get back if i get stuck again. EDIT : Thank u @Melba23 the code worked and i was able to edit it accordingly. Thank you for helping a beginner Edited July 26, 2018 by kakarotsaiyan 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