Kbase P8373: How to implement an incremental search on a character browse
Autor |
  Progress Software Corporation - Progress |
Acesso |
  Público |
Publicação |
  3/11/2003 |
|
Status: Unverified
GOAL:
How to implement an incremental search on a character browse widget?
FIX:
The following code performs an incremental search on a character browse widget using the ANY-PRINTABLE event trigger of a FILL-IN field widget:
DEFINE VARIABLE FILL-IN-1 AS CHARACTER FORMAT "x(20)"
LABEL "Enter Search String"
VIEW-AS FILL-IN NO-UNDO.
DEFINE QUERY qCustomer FOR Customer SCROLLING.
DEFINE BROWSE bCustomer QUERY qCustomer
DISPLAY
Customer.Cust-Num
Customer.Name
WITH SIZE 50 BY 8.
DEFINE FRAME F-Main
FILL-IN-1 AT 30 SKIP(1)
bCustomer AT 15
WITH CENTERED ROW 5 WIDTH 80.
MAIN-BLOCK:
DO:
OPEN QUERY qCustomer FOR EACH CUSTOMER NO-LOCK.
ENABLE ALL WITH FRAME F-Main.
END.
ON ANY-PRINTABLE OF FILL-IN-1 IN FRAME F-Main DO:
ASSIGN SELF:SCREEN-VALUE IN FRAME F-Main = SELF:SCREEN-VALUE IN FRAME F-Main + CHR(LASTKEY).
RUN REPOSQUERY.
APPLY "CURSOR-RIGHT":U TO FILL-IN-1 IN FRAME F-Main.
RETURN NO-APPLY.
END.
WAIT-FOR "ENDKEY","GO" OF THIS-PROCEDURE.
PROCEDURE REPOSQUERY:
FIND FIRST Customer WHERE Customer.Name BEGINS FILL-IN-1:SCREEN-VALUE IN FRAME F-Main NO-LOCK NO-ERROR.
IF AVAILABLE Customer THEN DO:
REPOSITION qCustomer TO RECID RECID(Customer).
END.
END PROCEDURE.
Note that the above may be also implemented using the VALUE-CHANGED event trigger of the FILL-IN field widget instead of its ANY-PRINTABLE trigger:
ON VALUE-CHANGED OF FILL-IN-1 IN FRAME F-Main DO:
RUN REPOSQUERY.
END.