Jump to content

Set current ControlID to edit


Lantz
 Share

Go to solution Solved by Melba23,

Recommended Posts

Pretty much all GUI command functions lets you use -1 as a ControlID to edit/reference the last created Controll. Is there away to say that from now and until further notice -1 will reference ControlID 2 instead of the last created controll.

For example

$LabelID=GUICtrlCreateLabel("my disable label", 10, 20)
GUICtrlSetState(-1, $GUI_DISABLE) 

GUICtrlCreateButton("my button", 50, 50)
GUICtrlSetState(-1, $GUI_FOCUS)

GUICtrlSwitch($LabelID);This command would make it so that -1 referenced the controll ID $LabelID
GUICtrlSetState(-1, $GUI_ENABLE) ;This command would now edit the state of the lable instead of the button 

In short i am looking for the GUISwitch function for Control objects.

Link to comment
Share on other sites

  • Moderators
  • Solution

Lantz,

Using the -1 shorthand to reference the last created control is undocumented and thus liable to change at any time. Although guilty of it myself at times, I would strongly advise you not to use it and to use only the full ControlID returned from the Create function and stored in a suitable variable. :)

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

Undocumented yet documented in pretty much all helpfiles where it´s applicable? ;)

Thanks for the info and quick reply. 

I´m normally more a hardware/technical guy with no programming education but AutoIT lets me easily do fairly powerful software development, quickly. I´m eternal grateful for this tool and all people keeping it alive!

Link to comment
Share on other sites

  • Moderators

Lantz,

 

Undocumented yet documented in pretty much all helpfiles where it´s applicable?

With that remark you have just opened a nice can of worms for those who look after the Help file. I was looking forward to a quiet evening - thanks a bunch! :D

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

With that remark you have just opened a nice can of worms for those who look after the Help file.

Yes they have! I'm confident that my peers who looked after the help file before me applied that particular sentence to those functions that supported it (-1 for last controlid). Otherwise we would have seen bug reports like this - #2286 by now.

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

I must confess i am not quite sure what this can of worm entails, I guess I am not really active enough on the forum to keep up with current events. You can have all my worms if you implement GUICtrlSwitch()   ;)

Non the less for any other user with the same problem a simple and valid work around would be:

$LabelID=GUICtrlCreateLabel("my disable label", 10, 20)

GUICtrlSetState(-1, $GUI_DISABLE)

GUICtrlCreateButton("my button", 50, 50)

GUICtrlSetState(-1, $GUI_FOCUS)

local $currentID=$LabelID

GUICtrlSetState($currentID, $GUI_ENABLE) ;This command would now edit the state of the lable instead of the button

Link to comment
Share on other sites

  • Moderators

Lantz,
 

i am not quite sure what this can of worm entails

I could tell you - but then I would have to kill you! :D

And there is no need for the separate variable - just use the one in which you stored the ControlID to begin with:

; Store the returned ControlID on $LabelID
$LabelID=GUICtrlCreateLabel("my disable label", 10, 20)
GUICtrlSetState(-1, $GUI_DISABLE)
 
GUICtrlCreateButton("my button", 50, 50) 
GUICtrlSetState(-1, $GUI_FOCUS)
 
; And use it again when necessary
GUICtrlSetState($LabelID, $GUI_ENABLE)

I see no reason at all for a GUICtrlSwitch comand - just use the ControlID each time and then you can be sure which control you are actioning.  As I said in my first post - using shortcuts is not good coding practice. ;)

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...