Thomas McGrath III wrote:
Hey Eric and others,
HELP, I am so damn close.
With the adjusted script below I can pretend to trap a mouseUp even though the actual mouseUp handler in my script doesn't receive it. (This is because of the mouseDown issue "bug", sort of, at least to me it is!). Any way the check if the mouse is up works over the new control at present and I get to hear the "mouse up" which will be replaced later with my necessary code.
The problem now comes down to one thing.
1. The highlights don't always un-highlight and seems to be a time related thing. I tried 50 ms, 10 ms, 1 ms, and 5 ms - If I move the mouse around in the down state I end up with a trail of highlighted buttons left behind. Not all of them and some times it seems like the same ones but I can't prove that.
Thomas, I haven't had good email access for the last few days, so I hadn't been following this thread closely - so I may have missed a problem described earlier, but....
your description of the PDA interactions required seemed straightforward (and I didn't like the sound of debugging time-related or race conditions), so I thought I'd try it from scratch.
The following script does what I think you want :-), with no hilites left behind or other issues.
Notes:
1. I created four buttons (B1,B2,B3,B4), and set the "auto-hilite" of each to false (otherwise the hilite is unhelpfully removed for you when the mouse leaves the initial button)
2. I put all four buttons within a group - and put all the code below in the *group*'s script.
3. It assumes that you start off with "theOne" set to empty; this will be the case in production use (because it always sets it to empty on mouseUp/Release - but beware that in development (e.g. if a script stops with an error), you'll need to tidy that up before restarting the script. I added an extra button (tidy) to the group and the script, and did this tidying up in there.
4. I left in some of the debugging - lines like
put "A" && ..... where the initial letter let's me know which line is doing it ...
global theKeys, theOne
on mouseDown
-- tidy up - for development use only
if the short name of the mouseControl = "Tidy" then
put "B1,B2,B3,B4" into theKeys -- should be elsewhere !!
put empty into theOne
exit mouseDown
end if
put the short name of the mouseControl into theOne
set the hilite of button theOne to true
end mouseDown
on mouseMove x,y if theOne is empty then exit mouseMove repeat for each item B in theKeys if the mouseloc is within the rect of button B then if theOne <> B then if theOne is not empty then set the hilite of button theOne to false -- put "A" && theOne && "false" & cr after msg end if put B into theOne put B & Cr after msg -- or into a field to display set the hilight of button B to true -- put "B" && theOne && "true" & cr after msg end if else if B <> theOne then if the hilite of button B then put B & Cr after msg set the hilight of button B to false -- put "C" && theOne && "false" & cr after msg end if end if end if end repeat end mouseMove
on mouseUp
if theOne is not empty then
set the hilite of button theOne to false
if the mouseloc is within the rect of group id 1076then put "mouseUp select " && theOne & cr after msg
put empty into theOne
end if
end mouseUp
on mouseRelease
if theOne is not empty then
set the hilite of button theOne to false
if the mouseloc is within the rect of group id 1076 then put "mouseRelease select " && theOne & cr after msg
put empty into theOne
end if
end mouseRelease
-- Alex Tweedly http://www.tweedly.net
No virus found in this outgoing message. Checked by AVG Anti-Virus. Version: 7.0.308 / Virus Database: 266.10.2 - Release Date: 21/04/2005
_______________________________________________ use-revolution mailing list [email protected] http://lists.runrev.com/mailman/listinfo/use-revolution
