scrolling to a line
J. Landman Gay
jacque at hyperactivesw.com
Sun Nov 13 22:40:05 EST 2005
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
More information about the use-livecode
mailing list