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

  1. // Tbex13.prg
  2. //
  3. // DbLookup function, where programmer passes an array containing
  4. // the names of fields to display
  5.  
  6. #include "Inkey.ch"
  7.  
  8. // Default column separator
  9. #define DEF_CSEP  " " + chr(179) + " "
  10.  
  11. // Default heading separator
  12. #define DEF_HSEP chr(205) + chr(209) + chr(205)
  13.  
  14. // Default footing separator
  15. #define DEF_FSEP chr(205) + chr(207) + chr(205)
  16.  
  17. FUNCTION Tbex13
  18.  
  19.   CLEAR SCREEN
  20.   DbLookup("tbdbf1", {"Lname", "Fname", "Acbal"})
  21.   ? Recno()
  22.  
  23. RETURN NIL
  24.  
  25.  
  26. FUNCTION DbLookup(cDbfName, aFieldNames)
  27.  
  28. LOCAL nSaveSel := Select()
  29. LOCAL oTbr := TBrowseDB(11, 11, 19, 69)
  30. LOCAL cSaveScr := SaveScreen(10, 10, 20, 70)
  31. LOCAL nField
  32. LOCAL oTbcTemp
  33. LOCAL lExitRequested := .F.
  34. LOCAL nKey
  35.  
  36.   oTbr:headSep := DEF_HSEP
  37.   oTbr:footSep := DEF_FSEP
  38.   oTbr:colSep  := DEF_CSEP
  39.  
  40.   @ 10, 10 TO 20, 70
  41.   USE (cDbfName) NEW
  42.  
  43.   // Create and add a TBColumn object for each database field in
  44.   // the aFieldNames array
  45.   FOR nField := 1 TO Len(aFieldNames)
  46.     oTbcTemp := TBColumnNew(aFieldNames[nField], ;
  47.                             FieldBlock(aFieldNames[nField]))
  48.     oTbr:addColumn(oTbcTemp)
  49.   NEXT
  50.  
  51.   DO WHILE !lExitRequested
  52.     DO WHILE !oTbr:stabilize()
  53.     ENDDO
  54.     nKey := InKey(0)
  55.     IF !StdMeth(nKey, oTbr)
  56.       DO CASE
  57.         CASE nKey == K_ESC .OR. nKey == K_ENTER
  58.           lExitRequested := .T.
  59.       ENDCASE
  60.     ENDIF
  61.   ENDDO
  62.  
  63.   SELECT (nSaveSel)
  64.   RestScreen(10, 10, 20, 70, cSaveScr)
  65.  
  66. RETURN NIL
  67.  
  68.  
  69. FUNCTION StdMeth(nKey, oTbr)
  70.  
  71. LOCAL lKeyHandled := .T.
  72.  
  73.   DO CASE
  74.     CASE nKey == K_DOWN;       oTbr:down()
  75.     CASE nKey == K_UP;         oTbr:up()
  76.     CASE nKey == K_PGDN;       oTbr:pageDown()
  77.     CASE nKey == K_PGUP;       oTbr:pageUp()
  78.     CASE nKey == K_CTRL_PGUP;  oTbr:goTop()
  79.     CASE nKey == K_CTRL_PGDN;  oTbr:goBottom()
  80.     CASE nKey == K_RIGHT;      oTbr:right()
  81.     CASE nKey == K_LEFT;       oTbr:left()
  82.     CASE nKey == K_HOME;       oTbr:home()
  83.     CASE nKey == K_END;        oTbr:end()
  84.     CASE nKey == K_CTRL_LEFT;  oTbr:panLeft()
  85.     CASE nKey == K_CTRL_RIGHT; oTbr:panRight()
  86.     CASE nKey == K_CTRL_HOME;  oTbr:panHome()
  87.     CASE nKey == K_CTRL_END;   oTbr:panEnd()
  88.     OTHERWISE;                 lKeyHandled := .F.
  89.   ENDCASE
  90.  
  91. RETURN lKeyHandled
  92.  
  93.