Jump to content
Sign in to follow this  
wuschelbeutel

Referening concatenated controlID within GUICtrlSetData argument

Recommended Posts

wuschelbeutel

;Global $x[12] = 12 ints
;Global $y[12] = 12 ints
;Global $colors[12] = 12 6 digit strings that contain hex values

Global $Form1 = GUICreate("Incrementer", 800, 600)
Global $Button1 = GUICtrlCreateButton("Auto-Increment", 174, 184, 90, 25)

Global $Input1 = GUICtrlCreateInput(0, 128, 24, 57, 21)
Global $Input2 = GUICtrlCreateInput(0, 232, 24, 57, 21)
...
Global $Input12 = GUICtrlCreateInput(0, 876, 24, 57, 21)

GUICtrlCreateUpdown($Input1)
GUICtrlCreateUpdown($Input2)
...
GUICtrlCreateUpdown($Input12)

GUISetState()

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
        Case $Button1
            Call("autoincrement")
    EndSwitch
WEnd

and after that

func autoincrement()
    For $i = 0 to 12
        If Hex(PixelGetColor($x[$i], $y[$i]),6) = $colors[$i] Then
            GUICtrlSetData($Input & $i, GUICtrlRead($Input & $i) +1)
        EndIf
    Next
EndFunc

$Input: possibly used before declaration. [at the fourth-last line]

Any ideas on how I can reference my ID's this way without receiving this error?

Edited by wuschelbeutel

Share this post


Link to post
Share on other sites
water

You can't access a variable this way:

GUICtrlRead($Input & $i) +1)
I would suggest to use an array:
Global $Input[13]
$Input[12] = GUICtrlCreateInput(0, 876, 24, 57, 21)
...
GUICtrlSetData($Input[$i], GUICtrlRead($Input[$i+1]))


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2018-12-03 - Version 1.4.11.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (2018-10-31 - Version 1.3.4.1) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
 
Tutorials:

ADO - Wiki

 

Share this post


Link to post
Share on other sites
wuschelbeutel

Thanks a good idea. Thanks!

Share this post


Link to post
Share on other sites
water

Wuschelbeutel klingt verdammt nach deutschem Sprachraum ... also dann: Gute Nacht!


My UDFs and Tutorials:

Spoiler

UDFs:
Active Directory (NEW 2018-12-03 - Version 1.4.11.0) - Download - General Help & Support - Example Scripts - Wiki
OutlookEX (2018-10-31 - Version 1.3.4.1) - Download - General Help & Support - Example Scripts - Wiki
ExcelChart (2017-07-21 - Version 0.4.0.1) - Download - General Help & Support - Example Scripts
PowerPoint (2017-06-06 - Version 0.0.5.0) - Download - General Help & Support
Excel - Example Scripts - Wiki
Word - Wiki
 
Tutorials:

ADO - Wiki

 

Share this post


Link to post
Share on other sites
AoRaToS

I would recommend arrays also. However the functions "Assign" and "Eval" might be helpful with the way you wanted to do it.

Edited by AoRaToS

s!mpL3 LAN Messenger

Current version 2.9.8.8 [30/09/2015]

Download Here

s!mpL3

Share this post


Link to post
Share on other sites
AoRaToS

Does this work for you?

func autoincrement()
    For $i = 0 to 12
        If Hex(PixelGetColor($x[$i], $y[$i]),6) = $colors[$i] Then
            GUICtrlSetData(Eval("Input" & $i), GUICtrlRead(Eval("Input" & $i) +1))
        EndIf
    Next
EndFunc

I would still prefer arrays, but give it a try

Edited by AoRaToS

s!mpL3 LAN Messenger

Current version 2.9.8.8 [30/09/2015]

Download Here

s!mpL3

Share this post


Link to post
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
Sign in to follow this  

×