Implementation of "Filter with:" and " Scroll to:"

Sarah sarahr at genesearch.com.au
Tue Oct 8 01:42:05 EDT 2002


The docs use 2 types: search which scrolls to the first matching entry 
and filter which only shows matching entries:

If you want the scroll method and you have your list in a field called 
"List" then your search field needs a script like this:

     if me is empty then -- scroll back to top
       set the hilitedLines of field "List" to 1
     else
       put lineOffset(return & me, field "List") + 1 into currentLine
       if currentLine > 1 then
         set the hilitedLines of field "List" to currentLine
         set the scroll of field "List" to \
             (currentLine - 1) * the effective textHeight of field "List"
       end if
     end if

The main trick with the filter method is that "filter" is destructive, 
so you need to store the complete list somewhere invisible, like in a 
custom property of the field. Suppose you have your display field 
"List" and that field has a custom property called completeList.

In your filter field, you need the following script:

on rawKeyUp
   put the completeList of fld "List" into theList
   filter theList with "*" & me & "*"
   put theList into fld "List"
end rawKeyUp

The *'s on either side allow you to find the specified text even if it 
is in the middle of a line. If you wanted to find only to find text 
that matched the beginnings of lines, you could leave out the first "*".

As you say, both these methods are very fast.

Cheers,
Sarah

On Tuesday, October 8, 2002, at 09:07  am, Mike Doub wrote:

> Hello all,
>
> I am new to transcription programming and am looking to implement a 
> search
> mechanism similar to that that is illustrated in the Revolution
> Documentation stack in the Transcript Language Dictionary.  I like the 
> very
> fast positioning within the field with every keystroke.  Can anyone 
> tell me
> how this might be implemented?
>
> Thanks,
>    Mike
>
>
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> http://lists.runrev.com/mailman/listinfo/use-revolution
>





More information about the use-livecode mailing list