Mark, I'm restting it to 255 on mouseDown because of the method in which I've created the hiliting function, which includes SHIFTand CONTROL clicking and scrolling hilited lines. I've included the script below which was originally written by Dave Mennenoh (DSelect Parent Script V2.0). I've made changes, one of which sets the forecolor of the hilited lines to "0" property spriteNum,hiliteList,hitLine,oldML,singleFlag property lShowing,hiliteSprite1,lTotal,hiliterName property linesAbove,linesBelow,multiLine,hiliteCount global gControlKeyUsed on new me,fieldNumber,fieldName,linesVisible,firstHiliter,mult spriteNum=fieldNumber hiliterName=fieldName lShowing=linesVisible hiliteSprite1=firstHiliter multiLine=mult hitLine=0 oldML=0 lTotal=the number of lines of sprite(spriteNum).member.text hiliteList=[] repeat with cnt=1 to lTotal hiliteList[cnt]=0 --no lines in the field are hilited to start end repeat hiliteCount=0 sprite(spriteNum).member.scrollTop=0 linesAbove=0 --the number of lines above the top of the field linesBelow=lTotal-lShowing --the number of lines below the bottom of the visible field --these two variables get adjusted by the scroll buttons return me end on clicked me hitLine=the mouseLine if the commandDown then gControlKeyUsed = TRUE oldML=hitLine singleFlag=2 highlight(me) exit end if if the shiftDown then singleFlag=0 if oldML=0 then --shift being held on first click - make it a single click oldML=hitLine end if else singleFlag=1 oldML=hitLine end if highlight(me) end on highLight me grayLineList =[] if multiLine<>1 then singleFlag=1 if singleFlag=1 then --normal left click no buttons held down set the foreColor of field "AccountMastText" = 255 repeat with cnt=1 to lTotal hiliteList[cnt]=0 end repeat hiliteList[hitLine]=1 hiliteCount=1 else if singleFlag=2 then --control key if hiliteList[hitLine]=1 then hiliteCount=hiliteCount-1 else hiliteCount=hiliteCount+1 end if hiliteList[hitLine]=not hiliteList[hitLine] else --shift key --first turn them all off then turn first to 2nd on repeat with cnt=1 to lTotal hiliteList[cnt]=0 end repeat hiliteCount=0 first=min(hitLine,oldML) --make sure first is before second for the second=max(hitLine,oldML)--repeat loop. repeat with cnt=first to second hiliteList[cnt]=1 hiliteCount=hiliteCount+1 set the foreColor of line cnt of member "AccountMastText" = 0 -- grayLineNumber = line cnt of member "AccountMastText" -- append (grayLineList, grayLineNumber) -- put grayLineList end repeat end if showHilites(me) end on showHilites me ind=0 repeat with cnt=linesAbove+1 to linesAbove+lShowing sprite(hiliteSprite1+ind).visible=hiliteList[cnt] ind=ind+1 end repeat set the foreColor of line hitLine of field "AccountMastText" = 0 end on removeHilites me hitLine=0 oldML=0 repeat with cnt=1 to lTotal hiliteList[cnt]=0 end repeat hiliteCount=0 showHilites(me) end on hideHilites me repeat with cnt=hiliteSprite1 to hiliteSprite1+lShowing-1 sprite(cnt).visible=0 end repeat end on isVisible me return sprite(spriteNum).visible end on scrollUp me if linesAbove>0 then --there's still lines above the top of the field scrollByLine sprite(spriteNum).member,-1 --scroll the field down for up arrow linesAbove=linesAbove-1 --one less line above linesBelow=linesBelow+1 --one more line below showHilites(me) updateStage end if startTicks=the Ticks --reset the timer lim=30 --wait .5 sec before quick scrolling repeat while the stillDown --if the button is being held down then auto scroll if the Ticks>startTicks+lim then --it's time to scroll if linesAbove>0 then scrollByLine sprite(spriteNum).member,-1 linesAbove=linesAbove-1 linesBelow=linesBelow+1 showHilites(me) updateStage lim=3 --once we're quick scrolling only wait 3 ticks between moves startTicks=the Ticks --reset the timer end if end if end repeat end on scrollDown me if linesBelow>0 then scrollByLine sprite(spriteNum).member,1 --scroll the field up for Down arrow linesAbove=linesAbove+1 linesBelow=linesBelow-1 showHilites(me) updateStage end if startTicks=the Ticks lim=30 repeat while the stillDown if the Ticks>startTicks+lim then if linesBelow>0 then scrollByLine sprite(spriteNum).member,1 --scroll the field up for Down arrow linesAbove=linesAbove+1 linesBelow=linesBelow-1 showHilites(me) updateStage lim=3 startTicks=the Ticks end if end if end repeat end on scrollReset me hitLine=0 oldML=0 sprite(spriteNum).member.scrollTop=0 linesAbove=0 --the number of lines above the top of the field linesBelow=lTotal-lShowing --the number of lines below the bottom of the visible field --these two variables get adjusted by the scroll buttons showHilites(me) end on returnSelectedList me selectedList=[] repeat with cnt=1 to hiliteList.count if hiliteList[cnt]=1 then append selectedList,member(hiliterName).text.line[cnt] end if end repeat if selectedList=[] then selectedList=-1 --return -1 if nothing is selected return selectedList end [To remove yourself from this list, or to change to digest mode, go to http://www.penworks.com/LUJ/lingo-l.cgi To post messages to the list, email [EMAIL PROTECTED] (Problems, email [EMAIL PROTECTED]) Lingo-L is for learning and helping with programming Lingo. Thanks!]