Jump to content

Two simple combo box questions


qwert
 Share

Recommended Posts

I'm adding my first use of a combo box to a simple data entry GUI. I pasted in the example from the help file (GUICtrlCreateCombo) and changed it to show the four choices I want the user to have. That much works fine. But I can't figure out these two aspects:

How do I prevent the user from typing something in that is not one of my choices? IOW, I want the field to be "selectable", but not "editable".

How do I cause the field to deselect after the user clicks on it and makes a selection? Right now, it remains highlighted.

Thanks in advance for any help.

Link to comment
Share on other sites

How do I prevent the user from typing something in that is not one of my choices? IOW, I want the field to be "selectable", but not "editable".

Use the style $CBS_DROPDOWNLIST.

As for your other question use the help file, there are plenty of examples e.g. look at the _GUICtrlComboBox_ functions.

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

Hi,

I want the field to be "selectable", but not "editable".

#include <ComboConstants.au3>

GUICtrlCreateCombo("", 0, 0, 100, 20, $CBS_DROPDOWNLIST)

How do I cause the field to deselect after the user clicks on it and makes a selection?

$coMyCombo = ...
GUIRegisterMsg($WM_COMMAND, "WM_COMMAND")

Func WM_COMMAND($hWnd, $iMsg, $iwParam, $ilParam)
Local $iIDFrom, $iCode

$iIDFrom = _WinAPI_LoWord($iwParam)
$iCode = _WinAPI_HiWord($iwParam)

Switch $iCode
Case $CBN_CLOSEUP
If $coMyCombo = $iIDFrom Then
;ACTIVATE ANOTHER CTRL by ControlFocus OR GUI by WinActivate HERE TO SET THE FOCUS ON SOMETHING ELSE.
EndIf
EndSwitch

Return $GUI_RUNDEFMSG
EndFunc   ;==>WM_COMMAND

Br, FireFox.

Link to comment
Share on other sites

Thanks, FireFox. That works just as described. I was able to add another input field just below my ComboBox, with a ControlFocus in the script where you indicated.

But what if I don't want ANY field to have focus after the select? I couldn't find a ControlFocus=None ... and defining as "" didn't work.

Any suggestions?

Link to comment
Share on other sites

Actually (I've now found), the label doesn't have to be a hidden one. Changing focus to any label field deselects an input-type field.

I never thought of trying that ... because focus implies that it's input-related.

Thanks very much.

Yes, HIDDEN or not it does not change anything, I read your text too fast and I though you said "what if I don't *have* ANY *ctrl* to have focus after the select?"

Br, FireFox.

Edited by FireFox
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...