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

  1.     // Tb09.prg
  2.     //
  3.     // Tbrowse code demonstrating how to use a while clause -
  4.     // generic version. Uses TBWhSkip, TBWhStart, and TBWhEnd -
  5.     // user enters search value
  6.     //
  7.     // Compile with /a /m /n /w
  8.     // Link with tbutils.obj, tb07.obj, dict.obj
  9.  
  10.     #include "Inkey.ch"
  11.     #include "Tbutils.ch"
  12.  
  13.     MEMVAR getlist
  14.  
  15.     FUNCTION Tb09
  16.  
  17.     FIELD Lname, Fname IN TbDbf1
  18.     LOCAL oTbr
  19.     LOCAL lExitRequested := .F., nKey, cSearcher
  20.  
  21.     LOCAL bWhile := {|| Upper(Lname) = Upper(cSearcher) }
  22.     LOCAL bFirst := {|| DbSeek(Upper(cSearcher)) }
  23.     LOCAL bLast  := {|| DbSeek(INCLAST(Upper(cSearcher)), .T.), ;
  24.                         DbSkip(-1) }
  25.  
  26.       USE Tbdbf1
  27.       IF !File("Tbdbf1.ntx")
  28.         INDEX ON upper(Lname + Fname) TO Tbdbf1
  29.       ELSE
  30.         SET INDEX TO Tbdbf1
  31.       ENDIF
  32.  
  33.       CLEAR SCREEN
  34.  
  35.       cSearcher := Space(Len(Lname))
  36.       @ 10, 10 SAY "Enter search string" GET cSearcher
  37.       READ
  38.       cSearcher := Trim(cSearcher)
  39.  
  40.       CLEAR SCREEN
  41.       @ 0, 0 TO MaxRow(), MaxCol()
  42.       oTbr := TBWhile(bFirst, bLast, bWhile)
  43.  
  44.       oTbr:nTop    := 1
  45.       oTbr:nLeft   := 1
  46.       oTbr:nBottom := MaxRow() - 1
  47.       oTbr:nright  := MaxCol() - 1
  48.  
  49.       AddAllFields(oTbr)
  50.       oTbr:insColumn(1, TBColumnNew("Rec #", {|| Recno() }))
  51.       oTbr:freeze := 1
  52.  
  53.       oTbr:goTop()
  54.  
  55.       IF !Eval(bWhile)
  56.         Alert("No matching records", {"OK"})
  57.         MyBrowse2(oTbr)
  58.       ELSE
  59.         MyBrowse2(oTbr)
  60.       ENDIF
  61.  
  62.     RETURN NIL
  63.  
  64.  
  65.     FUNCTION TBWhile(bFirst, bLast, bWhile)
  66.  
  67.     LOCAL oTbr := TBrowseNew()
  68.  
  69.       oTbr:goTopBlock    := {||  TBWhStart(bFirst, bWhile) }
  70.       oTbr:goBottomBlock := {||  TBWhEnd(bLast, bWhile)    }
  71.       oTbr:skipBlock     := {|n| TBWhSkip(n, bWhile)       }
  72.  
  73.     RETURN oTbr
  74.