Page 1 of 1

MakeButton #SIMPLEBUTTON Vacant ID is userdata: 000FE...

Posted: Wed Jun 13, 2018 10:39 pm
by Bugala
I am using:

Code: Select all

ID = MakeButton(Nil, #SIMPLEBUTTON, 10, 10, 100, 100, {OnMouseOver=DebugPrint})
DebugPrint(id)
And instead of this resulting in some clear number like "0" or "1" it results in "UserData: 0000000002ECF490"

Is this a bug or supposed to be this way? For what I had done was to store several simplebutton IDs to a table, and then i meant to DeleteButton with all those IDs, but now i cant do that since Deletebutton doesnt accept UserData: 000... as argument.

Re: MakeButton #SIMPLEBUTTON Vacant ID is userdata: 000FE...

Posted: Wed Jun 13, 2018 10:44 pm
by Bugala
Found from manual about this Autoselection that it is not supposed to be a number but it is supposed to be something like that. Very clever system by the way to be able to use both hardfixed numbers and vacant numbers together.

But so how can i then use these vacant created IDs at for example DeleteButton? Since it dont seem to accept them at their facevalue.

Re: MakeButton #SIMPLEBUTTON Vacant ID is userdata: 000FE...

Posted: Thu Jun 14, 2018 7:30 am
by jPV
It should work, but are you sure you gave correct userdata to the DeleteButton? For example that "OnMouseOver=DebugPrint" in your example prints the message userdata, not the button id userdata.

Maybe this example would make things more clear to think:

Code: Select all

ids={}
for local i=0 to 5
    ids[i]=MakeButton(Nil, #SIMPLEBUTTON, 21*i, 20, 20, 20, {OnMouseOver=Function(msg) DebugPrint(msg.action, msg.id, msg.X) EndFunction})
    DebugPrint(ids[i])
    Box(21*i, 20, 20, 20, #RED)
Next

Function p_Mousebutton()
    If ListItems(ids)>0
        DebugPrint("Removing button functionality...")
        For Local i=0 To 5
            DeleteButton(ids[i])
        Next
        ids={}
    EndIf
EndFunction

InstallEventHandler({OnMouseDown=p_Mousebutton})

Repeat
    WaitEvent
Forever

Re: MakeButton #SIMPLEBUTTON Vacant ID is userdata: 000FE...

Posted: Thu Jun 14, 2018 1:17 pm
by Bugala
hmm. You are right, I added one more line:

Code: Select all

ID = MakeButton(Nil, #SIMPLEBUTTON, 10, 10, 100, 100, {OnMouseOver=DebugPrint})
DebugPrint(id)
DeleteButton(id)
And it does work.

Must be something else that failed in my original program then. I already fixed it to work different way, so cant check it out anymore. But I do think i made sure that it was userdata thing right before using the deletebutton, but maybe i was deleting it twice then or something.