home *** CD-ROM | disk | FTP | other *** search
- // Tb09.prg
- //
- // Tbrowse code demonstrating how to use a while clause -
- // generic version. Uses TBWhSkip, TBWhStart, and TBWhEnd -
- // user enters search value
- //
- // Compile with /a /m /n /w
- // Link with tbutils.obj, tb07.obj, dict.obj
-
- #include "Inkey.ch"
- #include "Tbutils.ch"
-
- MEMVAR getlist
-
- FUNCTION Tb09
-
- FIELD Lname, Fname IN TbDbf1
- LOCAL oTbr
- LOCAL lExitRequested := .F., nKey, cSearcher
-
- LOCAL bWhile := {|| Upper(Lname) = Upper(cSearcher) }
- LOCAL bFirst := {|| DbSeek(Upper(cSearcher)) }
- LOCAL bLast := {|| DbSeek(INCLAST(Upper(cSearcher)), .T.), ;
- DbSkip(-1) }
-
- USE Tbdbf1
- IF !File("Tbdbf1.ntx")
- INDEX ON upper(Lname + Fname) TO Tbdbf1
- ELSE
- SET INDEX TO Tbdbf1
- ENDIF
-
- CLEAR SCREEN
-
- cSearcher := Space(Len(Lname))
- @ 10, 10 SAY "Enter search string" GET cSearcher
- READ
- cSearcher := Trim(cSearcher)
-
- CLEAR SCREEN
- @ 0, 0 TO MaxRow(), MaxCol()
- oTbr := TBWhile(bFirst, bLast, bWhile)
-
- oTbr:nTop := 1
- oTbr:nLeft := 1
- oTbr:nBottom := MaxRow() - 1
- oTbr:nright := MaxCol() - 1
-
- AddAllFields(oTbr)
- oTbr:insColumn(1, TBColumnNew("Rec #", {|| Recno() }))
- oTbr:freeze := 1
-
- oTbr:goTop()
-
- IF !Eval(bWhile)
- Alert("No matching records", {"OK"})
- MyBrowse2(oTbr)
- ELSE
- MyBrowse2(oTbr)
- ENDIF
-
- RETURN NIL
-
-
- FUNCTION TBWhile(bFirst, bLast, bWhile)
-
- LOCAL oTbr := TBrowseNew()
-
- oTbr:goTopBlock := {|| TBWhStart(bFirst, bWhile) }
- oTbr:goBottomBlock := {|| TBWhEnd(bLast, bWhile) }
- oTbr:skipBlock := {|n| TBWhSkip(n, bWhile) }
-
- RETURN oTbr