def var pressed-keys as char no-undo.
def var record-id as recid no-undo.
on backspace,any-printable of ... do:
assign pressed-keys = pressed-keys + keylabel(lastkey).
key-check:
do:
/* Zero in */
get first {&queryname}.
repeat while available {&filename}:
if {&filename}.{&fieldname} begins pressed-keys
then leave key-check.
get next {&queryname}.
end.
pressed-keys = keylabel(lastkey).
/* Find first */
get first {&queryname}.
repeat while available {&filename}:
if {&filename}.{&fieldname} begins pressed-keys
then leave key-check.
get next {&queryname}.
end.
/* No match */
find first {&filename} no-lock where
{&filename}.{&fieldname} begins pressed-keys
{&recspecs} {&useindex} no-error.
if not available {&filename} then do:
... do whatever if none start with entered characters ...
end.
/* Find next */
get first {&queryname}.
repeat while available {&filename}:
if {&filename}.{&fieldname} > pressed-keys
then leave key-check.
get next {&queryname}.
end.
/* Find previous */
get last {&queryname}.
repeat while available {&filename}:
if {&filename}.{&fieldname} < pressed-keys
then leave key-check.
get prev {&queryname}.
end.
pressed-keys = "". /* Start over */
get first {&queryname}.
end. /* End of key-check do block. */
assign record-id = recid({&filename}).
reposition {&queryname} to recid(record-id).
..... stuff ......
end. /* of trigger block */