home *** CD-ROM | disk | FTP | other *** search
/ Liren Large Software Subsidy 5 / 05.iso / a / a065 / 1.img / TBPRGS.EXE / TB29.PRG < prev    next >
Encoding:
Text File  |  1992-03-05  |  2.1 KB  |  94 lines

  1.     // Tb29.prg
  2.     //
  3.     // Program sequence illustrating how to browse a record
  4.     // on more than one line. Generic version
  5.     //
  6.     // Link with Tbutils, Dict, Tb07
  7.  
  8.     #include "Inkey.ch"
  9.     
  10.     FUNCTION Tb29
  11.     
  12.     FIELD Lname, Fname, Addr1, Addr2, Addr3 IN TbDbf1
  13.     
  14.     LOCAL oTbr
  15.     LOCAL oTbc
  16.     LOCAL nRowNum := 1      // Index into the fields array
  17.     LOCAL bNext
  18.     LOCAL bPrev
  19.     LOCAL aFields := { ;
  20.                        {|| Lname + " " + Fname }, ;
  21.                        {|| Addr1 }, ;
  22.                        {|| Addr2 }, ;
  23.                        {|| Addr3 }  ;
  24.                      }
  25.     
  26.       USE TbDbf1
  27.       IF !file("Tbdbf1.ntx")
  28.           INDEX ON Upper(Lname) TO TbDbf1
  29.       ELSE
  30.           SET INDEX TO TbDbf1
  31.       ENDIF
  32.     
  33.       CLEAR SCREEN
  34.       @ 0, 0 TO 23, 79
  35.     
  36.       oTbr  := TBrowseNew(1, 1, 22, 78)
  37.     
  38.       oTbc := TBColumnNew(, {|| Eval(aFields[nRowNum]) } )
  39.       oTbr:addColumn(oTbc)
  40.     
  41.       oTbr:goTopBlock    := {| | DbGoTop(), nRowNum := 1 }
  42.       oTbr:goBottomBlock := {| | DbGoBottom(), nRowNum := Len(aFields) }
  43.       bNext := {|| GoNext(@nRowNum, aFields) }
  44.       bPrev := {|| GoPrev(@nRowNum, aFields) }
  45.       oTbr:skipBlock = {|n| DbSkipBlock(n, bNext, bPrev) }
  46.  
  47.       MyBrowse2(oTbr)
  48.     RETURN NIL
  49.     
  50.     
  51.     FUNCTION GoNext(nRowNum, aFields)
  52.     
  53.     LOCAL lMoved := .T.
  54.     
  55.       IF Eof() .OR. LastRec() == 0
  56.         lMoved := .F.
  57.       ELSE
  58.         IF nRowNum < Len(aFields)
  59.           nRowNum++
  60.         ELSE
  61.           SKIP
  62.           IF !Eof()
  63.             nRowNum := 1
  64.           ELSE
  65.             SKIP -1
  66.             lMoved := .F.
  67.           ENDIF
  68.         ENDIF
  69.       ENDIF
  70.     
  71.     RETURN lMoved
  72.     
  73.     
  74.     FUNCTION GoPrev(nRowNum, aFields)
  75.     
  76.     LOCAL lMoved := .T.
  77.     
  78.       IF Bof() .OR. LastRec() == 0
  79.         lMoved := .F.
  80.       ELSE
  81.         IF nRowNum > 1
  82.           nRowNum--
  83.         ELSE
  84.           SKIP -1
  85.           IF !Bof()
  86.             nRowNum := Len(aFields)
  87.           ELSE
  88.             lMoved := .F.
  89.           ENDIF
  90.         ENDIF
  91.       ENDIF
  92.     
  93.     RETURN lMoved
  94.