scrolling to a line

Charles Hartman charles.hartman at conncoll.edu
Sun Nov 13 22:57:59 EST 2005


Hmm! I think that might do it. Thanks!

I thought of that general approach (hadn't gotten the details worked  
out) -- but I guess I was thinking there might be a way to, in  
effect, intervene in the operations of lineOffset: to tell it, no no  
you just went one too far . . . Silly, I suppose. I could write a  
binary-search substitute for lineOffset . . . That's sillier. I think  
you probably have the best approach.

Thanks again. I'll try it out tomorrow.

Charles Hartman

On Nov 13, 2005, at 10:40 PM, J. Landman Gay wrote:

> J. Landman Gay wrote:
>> Charles Hartman wrote:
>>> I've modified Xavier's modification of my modification of   
>>> (somebody's??) code to search incrementally in a sorted list field.
>> Could it have been the one I posted about two years ago? I sent  
>> this to the list:
>> local lUserKeys, lOldTicks
>> on keyDown  whichKey -- select from keyboard
>>   -- J. Landman Gay, 1990, modified for Revolution: 2003
>>   if (the selectedField is not "") or (charToNum(whichKey) is  
>> among the items of "28,29,30,31") -- arrow keys
>>   then pass keyDown
>>   if the ticks - lOldTicks > 60 then put "" into lUserKeys
>>   put whichKey after lUserKeys
>>   put return & fld "myField" & return into tListText
>>   get lineoffset(cr&lUserKeys,tListText)
>>   if it > 0 then set the hilitedline of fld "myField" to it
>>   put the ticks into lOldTicks
>> end keyDown
>>> But it doesn't solve one problem: suppose the user starts typing a
>>  > string that doesn't appear in the list?
>> The easiest thing would be to just add a beep in this case, but if  
>> I have time today I'll see if I can rewrite it to accomodate.
>
> Is this closer? (Watch for line wrap):
>
> local lUserKeys, lOldTicks
>
> on keyDown  whichKey -- select from keyboard
>   -- J. Landman Gay, 1990, modified for Revolution: 2003,
>   -- modifed for fuzzy selections 2005
>   if (the selectedField is not "") or (charToNum(whichKey) is among  
> the items of "28,29,30,31") -- arrow keys
>   then pass keyDown
>   if the ticks - lOldTicks > 60 then put "" into lUserKeys
>   put whichKey after lUserKeys
>   put return & fld 1 & return into tListText
>   get lineoffset(cr&lUserKeys,tListText)
>   if it = 0 and the number of chars in lUserKeys = 1 then
>     repeat until lineoffset(cr&lUserKeys,tListText) > 0
>       put charToNum(lUserKeys)+1 into tASCII
>       if tASCII > 122 then exit repeat -- maximum key is "Z";  
> adjust if desired
>       put numToChar(tASCII) into lUserKeys
>       get lineoffset(cr&lUserKeys,tListText)
>     end repeat
>     if it = 0 then get the number of lines in fld 1
>   end if
>   if it = 0 then get the hilitedline of fld 1 -- multi-char string  
> with no match; leave alone
>   set the hilitedline of fld 1 to it
>   put the ticks into lOldTicks
> end keyDown
>
> -- 
> Jacqueline Landman Gay         |     jacque at hyperactivesw.com
> HyperActive Software           |     http://www.hyperactivesw.com
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> Please visit this url to subscribe, unsubscribe and manage your  
> subscription preferences:
> http://lists.runrev.com/mailman/listinfo/use-revolution




More information about the Use-livecode mailing list