Use MouseLine() and still edit the same field?

Devin Asay devin_asay at byu.edu
Fri Mar 4 15:35:09 EST 2016


> On Mar 4, 2016, at 1:08 PM, Mark Mitchell <cowhead at mac.com> wrote:
> 
> (Sorry Heather!  I’m sending this message again from the ‘proper’ account..)
> 
> I’m not sure how long it has been around, but I have just discovered the ‘mousewhithin’ message combined with the mouseline() function… Awesome!  So, for those of you who don’t know, the ‘mousewithin’ message is sent to a field periodically (5 times a second?) whenever the mouse is inside that field. 
> 
> Then, the mouseline function returns whatever line of that field the mouse is currently hovering over.  I am currently using this to warn folks if they have too many characters per line.  And that works fine.
> 
> But to make it more intuitive, I want to somehow hilite or indicate the line that the mouse is over in the field, without disturbing the ability to edit that field (copy, paste, type stuff) with ease.  
> 
> I have tried a few different ways of hiliting the line of the field (selecting it, changing the color of the text of it, etc) but any sort of repeat or recursive structure does not work, as the “mousewithin” message is simply sent far too often for any ‘repeat’ or recursion to work.
> 
> Does anyone have any other ideas for highlighting a line in a field that might work under these conditions?

Mark,

Have you tried setting the backgroundColor of the line, something like this:

local sCurrLine

on mouseWithin
    put the mouseline into tThisLine
    if tThisLine <> sCurrLine then
        set the backgroundColor of line 1 to -1 of me to empty
        set the backgroundColor of tThisLine to (220,220,250)
        put tThisLine into sCurrLine
    end if
end mouseWithin

on mouseLeave
    set the backgroundColor of line 1 to -1 of me to empty
end mouseLeave

It seemed to work okay here on LC 7.1.2.

Devin

Devin Asay
Office of Digital Humanities
Brigham Young University



More information about the use-livecode mailing list