home *** CD-ROM | disk | FTP | other *** search
- // Tb29.prg
- //
- // Program sequence illustrating how to browse a record
- // on more than one line. Generic version
- //
- // Link with Tbutils, Dict, Tb07
-
- #include "Inkey.ch"
-
- FUNCTION Tb29
-
- FIELD Lname, Fname, Addr1, Addr2, Addr3 IN TbDbf1
-
- LOCAL oTbr
- LOCAL oTbc
- LOCAL nRowNum := 1 // Index into the fields array
- LOCAL bNext
- LOCAL bPrev
- LOCAL aFields := { ;
- {|| Lname + " " + Fname }, ;
- {|| Addr1 }, ;
- {|| Addr2 }, ;
- {|| Addr3 } ;
- }
-
- USE TbDbf1
- IF !file("Tbdbf1.ntx")
- INDEX ON Upper(Lname) TO TbDbf1
- ELSE
- SET INDEX TO TbDbf1
- ENDIF
-
- CLEAR SCREEN
- @ 0, 0 TO 23, 79
-
- oTbr := TBrowseNew(1, 1, 22, 78)
-
- oTbc := TBColumnNew(, {|| Eval(aFields[nRowNum]) } )
- oTbr:addColumn(oTbc)
-
- oTbr:goTopBlock := {| | DbGoTop(), nRowNum := 1 }
- oTbr:goBottomBlock := {| | DbGoBottom(), nRowNum := Len(aFields) }
- bNext := {|| GoNext(@nRowNum, aFields) }
- bPrev := {|| GoPrev(@nRowNum, aFields) }
- oTbr:skipBlock = {|n| DbSkipBlock(n, bNext, bPrev) }
-
- MyBrowse2(oTbr)
- RETURN NIL
-
-
- FUNCTION GoNext(nRowNum, aFields)
-
- LOCAL lMoved := .T.
-
- IF Eof() .OR. LastRec() == 0
- lMoved := .F.
- ELSE
- IF nRowNum < Len(aFields)
- nRowNum++
- ELSE
- SKIP
- IF !Eof()
- nRowNum := 1
- ELSE
- SKIP -1
- lMoved := .F.
- ENDIF
- ENDIF
- ENDIF
-
- RETURN lMoved
-
-
- FUNCTION GoPrev(nRowNum, aFields)
-
- LOCAL lMoved := .T.
-
- IF Bof() .OR. LastRec() == 0
- lMoved := .F.
- ELSE
- IF nRowNum > 1
- nRowNum--
- ELSE
- SKIP -1
- IF !Bof()
- nRowNum := Len(aFields)
- ELSE
- lMoved := .F.
- ENDIF
- ENDIF
- ENDIF
-
- RETURN lMoved