Hi Mike,
i'm not doing a grid goto.
i'm using v16.2 .
i have done this before and it worked great (and fast) and customers love it because they can immediately see applicable rows as they type in keywords.
i've changed the code for now whereby they have to hit <Enter> to execute search (so it is not immediate) and they are fine with that...
here is on change logic: (i hope i'm not doing something silly)
8000 ! ^1000
8010 KEYWORD_SEARCH_ENTERED:
8020 ! -----------------------------------------------------------------------------------
8030 local ROW=0
8040 local ROWSHIGH=0
8050 local TOTAL_KEYWORDS=0
8060 local KEYWORD_MATCH=0
8070 local KEYWORD_ARRAY_INDEX=0
8080 local ROW_HEIGHT=0
8090 ! -----------------------------------------------------------------------------------
8100 let KEYWORD_SEARCH$=ucs(cvs(KEYWORD_SEARCH$,35))
8110 let TOTAL_KEYWORDS=0 ! THIS IS CONTROLLING VARIABLE / IF THIS IS ZERO THEN WE WON'T LOOK FOR KEYWORD MATCH
8120 if not(nul(KEYWORD_SEARCH$)) then {
8130 let TOTAL_KEYWORDS=pos($20$=KEYWORD_SEARCH$,1,0)+1 ! Get Number of Spaces $20$ and add 1
8140 local dim KEYWORD_ARRAY$[1:TOTAL_KEYWORDS]
8150 read data from KEYWORD_SEARCH$,sep=$20$ to KEYWORD_ARRAY${all}
8160 }
8170 ! -----------------------------------------------------------------------------------
8180 let ROWS_HIGH=CUSTOMER_GRID.CTL'ROWSHIGH
8190 if ROWS_HIGH=0 then goto *return
8200 for ROW=1 to ROWS_HIGH
8210 let CUSTOMER_GRID.CTL'ROW=ROW
8220 read data from CUSTOMER_GRID.CTL'ROWDATA$ to iol=CUSTOMER_GRID.CTL'LOADIOLIST$,err=*continue
8230 let G.CUSTOMER_NAME$=ucs(G.CUSTOMER_NAME$)
8240 let KEYWORD_MATCH=1 ! DEFAULT TO MATCH FOUND
8250 if TOTAL_KEYWORDS=0 then goto *break ! IF NOT KEYWORDS THEN JUST BREAK OUT (I.E. SHOW ALL ROWS)
8260 for KEYWORD_ARRAY_INDEX=1 to TOTAL_KEYWORDS
8270 if not(pos(KEYWORD_ARRAY$[KEYWORD_ARRAY_INDEX]=G.CUSTOMER_NAME$)) then {
8280 let KEYWORD_MATCH=0 ! COULD NOT FIND ONE OF THE KEYWORDS SO BREAK OUT
8290 goto *break
8300 }
8310 next KEYWORD_ARRAY_INDEX
8320 let ROW_HEIGHT=tbl(KEYWORD_MATCH<>0,0,1.75) ! SET ROW HEIGHT TO 1.75 IF WE GOT MATCH / OTHERWISE SET TO 0
8330 let CUSTOMER_GRID.CTL'ROW=ROW
8340 let CUSTOMER_GRID.CTL'COLUMN=0
8350 let CUSTOMER_GRID.CTL'ROWHEIGHT=ROW_HEIGHT
8360 next ROW
8370 return