Hi

Another way to do this is to use a setProp handler to set the global variable 
and create in essence a listener for changes to the global variable.  In the 
setProp handler you set the global but then you can include other commands to 
be issued or sent or dispatched when the global variable is set,  Of course you 
have to make sure that you only this setProp handler to set the value of global 
gMyVar variable. 

To see how this would work 

1. Create a new stack with 1 button and 1 field.

2. Name the Name the button “Easy” and Name the field “Global VariableDisplay”.

3. Add the following script to the field “Global VariableDisplay”.
on displayMyVar pMyStatus

        set the text of me to pMyStatus

end displayMyVar

4. Add the following script to the button.
on mouseUp

        global gMyVar

        if gMyVar is "easy" then

                set the cMyGlobalVar of this card to ""

        else

                set the cMyGlobalVar of this card to "Easy"

        end if

end mouseUp

5. Add the following script to Card 1.

setProp cMyGlobalVar pNewVar

        global gMyVar

        put pNewVar into gMyVar

        ## If you don't need to include a parameter with the message use 'send'

        -- send "displayMyVar" to field "GlobalVariable Display"

        ## If you need to include a parameter with the message use 'dispatch'

        dispatch "displayMyVar" to field "GlobalVariable Display" of me with 
gMyVar

        end cMyGlobalVar



        ## you can also access the property using a getProp handler but

        ## that does not make much sense since since gMyVar is a global which 
you can use directly.

        --getProp cMyGlobalVar

                -- global gMyVar

                -- return gMyVar

        --end cMyGlobalVar

This would avoid any blocking or load on the machine using the loop.    


Best regards,

Martin Koob

> On Jul 26, 2025, at 5:16 AM, scott--- via use-livecode 
> <use-livecode@lists.runrev.com> wrote:
> 
> Oops… just for thoroughness:  In the last handler I forgot to add the line 
> “put empty into sFlag” after the repeat loop
> 
> --
> Scott Morrow
> 
> Elementary Software
> (Now with 20% less chalk dust!)
> web       https://elementarysoftware.com/
> email     sc...@elementarysoftware.com
> booth    1-360-734-4701
> ------------------------------------------------------
> 
> 
>> On Jul 26, 2025, at 1:59 AM, scott--- via use-livecode 
>> <use-livecode@lists.runrev.com> wrote:
>> 
>> The way that the loop is written would make it blocking. If you wanted the 
>> loop to start running and then stop after the mouseUp happens I think you 
>> would need to add a "wait x millisec with messages” 
>> 
>> Fo example:
>> 
>> global myVar
>> 
>> on elsoTester
>>   put 0 into myVar
>>   -- some code
>>   repeat until myVar > 0
>>        --  set the thumbPosition of scrollBar "ProgressBar" to (the 
>> thumbPosition of scrollBar "ProgressBar" + 5)  --   testing
>>       wait 500 millisec with messages
>>   end repeat
>>   -- some code
>>   answer "Finished"
>> end elsoTester
>> 
>> 
>> Depending on what you are doing, another method would be to use a "send it 
>> time" mechanism where the handler keeps calling itself until myVar > 0 
>> For example:
>> 
>> 
>> local sFlag
>> global myVar
>> 
>> command elsoTester
>>   if sFlag is empty then
>>       put 0 into myVar
>>      -- some code
>>   end if
>> 
>>   repeat until myVar > 0
>>         --  set the thumbPosition of scrollBar "ProgressBar" to (the 
>> thumbPosition of scrollBar "ProgressBar" + 5)   --   testing
>>        put “waiting” into sFlag
>>        send elsoTester to me in 500 millisec
>>        exit elsoTester
>>   end repeat
>> 
>>   answer “Finished"
>> end elsoTester
>> 
>> To be thorough  you might also might want to empty the message queue of any 
>> other elsoTester messages before sending in time or add a timer which will 
>> eventually time out if myVar doesn’t exceed 0 after a set time.
>> 
>> --
>> Scott Morrow
>> 
>> Elementary Software
>> (Now with 20% less chalk dust!)
>> web       https://elementarysoftware.com/
>> email     sc...@elementarysoftware.com
>> booth    1-360-734-4701
>> ------------------------------------------------------
>> 
>>> On Jul 26, 2025, at 12:44 AM, jbv via use-livecode 
>>> <use-livecode@lists.runrev.com> wrote:
>>> 
>>> Hi list,
>>> 
>>> Let's say I have a portion of a script like this :
>>> 
>>> global myVar
>>> put 0 into myVar
>>> -- some code
>>> repeat until myVar > 0
>>> end repeat
>>> -- some code
>>> 
>>> and the content of global myVar being changed
>>> in a handler of another control :
>>> 
>>> on mouseUp
>>>  global myVar
>>>  put 1 into myVar
>>> end mouseUp
>>> 
>>> I know this is not very elegant, but my question is :
>>> can the change in myVar be detected in a loop like
>>> above ?
>>> I made some tests and it doesn't seem to work...
>>> 
>>> Thank you in advance.
>>> jbv
>>> 
>>> _______________________________________________
>>> use-livecode mailing list
>>> use-livecode@lists.runrev.com
>>> Please visit this url to subscribe, unsubscribe and manage your 
>>> subscription preferences:
>>> http://lists.runrev.com/mailman/listinfo/use-livecode
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> 
>> _______________________________________________
>> use-livecode mailing list
>> use-livecode@lists.runrev.com
>> Please visit this url to subscribe, unsubscribe and manage your subscription 
>> preferences:
>> http://lists.runrev.com/mailman/listinfo/use-livecode
> 
> 
> 
> 
> 
> 
> 
> 
> _______________________________________________
> use-livecode mailing list
> use-livecode@lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your subscription 
> preferences:
> http://lists.runrev.com/mailman/listinfo/use-livecode

_______________________________________________
use-livecode mailing list
use-livecode@lists.runrev.com
Please visit this url to subscribe, unsubscribe and manage your subscription 
preferences:
http://lists.runrev.com/mailman/listinfo/use-livecode

Reply via email to