home *** CD-ROM | disk | FTP | other *** search
- // Tb13.prg
- //
- // Tbrowse code demonstrating how to use a for and a while clause -
- // generic version. Uses generic database skipBlock function
-
- // Compile with /a /m /n /w
- // Link with tbutils, tb07, dict
-
- #include "Inkey.ch"
- #include "Tbutils.ch"
-
- MEMVAR getList
-
- FUNCTION Tb13
-
- FIELD Lname, Fname, AcBal IN Tbdbf1
- LOCAL oTbr := TBrowseNew(1, 1, MaxRow() - 1, MaxCol() - 1), ;
- lExitRequested := .F., nKey
-
- LOCAL bWhile
- LOCAL bFor
- LOCAL bFirst
- LOCAL bLast
- LOCAL cSearcher
- LOCAL bNext
- LOCAL bPrev
-
- USE Tbdbf1
- IF !file("Tbdbf1.ntx")
- INDEX ON upper(Lname + Fname) TO Tbdbf1
- ELSE
- SET INDEX TO Tbdbf1
- ENDIF
-
- addAllFields(oTbr)
- oTbr:insColumn(1, TBColumnNew("Rec #", {|| Recno() }))
- oTbr:freeze := 1
-
- oTbr:goTopBlock := {|| TBFwFirst(bFirst, bWhile, bFor) }
-
- oTbr:goBottomBlock := {|| TBFwLast(bLast, bWhile, bFor) }
-
- bNext := {|| TBFwGoNext(bFor, bWhile) }
- bPrev := {|| TBFwGoPrev(bFor, bWhile) }
-
- oTbr:skipBlock := {|n| DbSkipBlock(n, bNext, bPrev) }
-
- // tb12 uses this ...
- // oTbr:skipBlock := {|n| TBFwSkip(n, bWhile, bFor) }
-
- // Browse entire database
- CLEAR SCREEN
- @ 0, 0 TO MaxRow(), MaxCol()
- bFirst := {|| DbGoTop() }
- bLast := {|| DbGoBottom() }
- bFor := {|| .T. }
- bWhile := {|| .T. }
- oTbr:goTop()
- IF !Eval(bWhile)
- Alert("No matching records", {"OK"})
- MyBrowse2(oTbr)
- ELSE
- MyBrowse2(oTbr)
- ENDIF
-
- // Browse records WHILE upper(Lname) = cSearcher
- CLEAR SCREEN
- cSearcher := Space(Len(Lname))
- @ 10, 10 SAY "Enter searcher" GET cSearcher
- READ
- cSearcher := Trim(Upper(cSearcher))
-
- CLEAR SCREEN
- @ 0, 0 TO MaxRow(), MaxCol()
-
- bWhile := {|| Upper(Lname) = cSearcher }
- bFor := {|| .T. }
- bFirst := {|| DbSeek(cSearcher) }
- bLast := {|| DbSeek(INCLAST(cSearcher), .T.), DbSkip(-1) }
- oTbr:goTop()
-
- IF !eval(bWhile)
- Alert("No matching records", {"OK"})
- MyBrowse2(oTbr)
- ELSE
- MyBrowse2(oTbr)
- ENDIF
-
- // Browse records WHILE upper(Lname) >= "S" .AND.
- // upper(Lname) <= "T"
- // FOR AcBal >= 0
- CLEAR SCREEN
- @ 0, 0 TO MaxRow(), MaxCol()
- bWhile := {|| upper(Lname) >= "S" .AND. ;
- upper(Lname) <= "T" }
- bFor := {|| AcBal >= 0 }
-
- bFirst := {|| DbSeek("S") }
- bLast := {|| DbSeek("U", .T.), DbSkip(-1) }
- oTbr:goTop()
- MyBrowse2(oTbr)
-
- // Browse records FOR upper(Lname) = "S" .OR. ;
- // upper(Lname) = "T"
- CLEAR SCREEN
- @ 0, 0 TO MaxRow(), MaxCol()
- bWhile := {|| .T. }
- bFor := {|| Upper(Lname) = "S" .OR. ;
- Upper(Lname) = "T" }
- bFirst := {|| DbGoTop() }
- bLast := {|| DbGoBottom() }
- oTbr:goTop()
- MyBrowse2(oTbr)
-
- RETURN NIL