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

  1.     // Tbex08.prg
  2.     //
  3.     // Simple database browse with added cosmetics
  4.     // Compile with /a /m /n /w
  5.     //
  6.     // K_F2 moves column one to the left, K_F3 to the right, K_F4
  7.     // moves current column to before the first column and freezes it
  8.     // K_F5 deletes current column
  9.  
  10.     #include "Inkey.ch"
  11.  
  12.     // Default column separator
  13.     #define DEF_CSEP  " " + chr(179) + " "
  14.  
  15.     // Default heading separator
  16.     #define DEF_HSEP chr(205) + chr(209) + chr(205)
  17.  
  18.     // Default footing separator
  19.     #define DEF_FSEP chr(205) + chr(207) + chr(205)
  20.  
  21.  
  22.     FUNCTION Tbex08
  23.  
  24.     FIELD Lname, Fname, Addr1, Addr2, Addr3, Addr4 IN Tbdbf1
  25.  
  26.     LOCAL oTbr  := TBrowseDb(1, 1, MaxRow() - 2, MaxCol() - 1)
  27.     LOCAL oTbc1 := TBColumnNew("Last name",  {|| Lname })
  28.     LOCAL oTbc2 := TBColumnNew("First name", {|| Fname })
  29.     LOCAL oTbc3 := TBColumnNew("Address 1",  {|| Addr1 })
  30.     LOCAL oTbc4 := TBColumnNew("Address 2",  {|| Addr2 })
  31.     LOCAL oTbc5 := TBColumnNew("Address 3",  {|| Addr3 })
  32.     LOCAL oTbc6 := TBColumnNew("Address 4",  {|| Addr4 })
  33.     LOCAL nKey
  34.     LOCAL lExitRequested
  35.     LOCAL oTemp
  36.  
  37.       oTbr:colSep  := DEF_CSEP
  38.       oTbr:headSep := DEF_HSEP
  39.       oTbr:footSep := DEF_FSEP
  40.  
  41.       CLEAR SCREEN
  42.       TBFrame(oTbr)
  43.  
  44.       USE Tbdbf1
  45.  
  46.       oTbc1:width := 20
  47.       oTbr:addColumn(oTbc1)
  48.  
  49.       oTbc2:width := 20
  50.       oTbr:addColumn(oTbc2)
  51.  
  52.       oTbr:addColumn(oTbc3)
  53.       oTbr:addColumn(oTbc4)
  54.       oTbr:addColumn(oTbc5)
  55.       oTbr:addColumn(oTbc6)
  56.  
  57.       lExitRequested := .F.
  58.       @ MaxRow(), 0 SAY "F2 - Move left, F3 move right,"
  59.       @ MaxRow(), Col() + 1 SAY "F4 - Move to first, F5 - Delete"
  60.       DO WHILE !lExitRequested
  61.         DO WHILE !oTbr:stabilize()
  62.         ENDDO
  63.         nKey := InKey(0)
  64.  
  65.         DO CASE
  66.           CASE nKey == K_F2      // Move to the left
  67.             IF oTbr:colPos > 1
  68.               oTemp := oTbr:getColumn(oTbr:colPos - 1)
  69.               oTbr:setColumn(oTbr:colPos - 1, oTbr:getColumn(oTbr:colPos))
  70.               oTbr:setColumn(oTbr:colPos, oTemp)
  71.               oTbr:colPos--
  72.               oTbr:refreshAll()
  73.             ENDIF
  74.  
  75.           CASE nKey == K_F3      // Move to the right
  76.             IF oTbr:colPos < oTbr:colCount
  77.               oTemp := oTbr:getColumn(oTbr:colPos + 1)
  78.               oTbr:setColumn(oTbr:colPos + 1, oTbr:getColumn(oTbr:colPos))
  79.               oTbr:setColumn(oTbr:colPos, oTemp)
  80.               oTbr:colPos++
  81.               oTbr:refreshAll()
  82.             ENDIF
  83.  
  84.           CASE nKey == K_F4      // Insert before first
  85.             IF oTbr:colPos > 1
  86.               oTemp := oTbr:getColumn(oTbr:colPos)
  87.               oTbr:delColumn(oTbr:colPos)
  88.               oTbr:insColumn(1, oTemp)
  89.               oTbr:colPos := 1
  90.               oTbr:refreshAll()
  91.             ENDIF
  92.  
  93.           CASE nKey == K_F5
  94.             oTbr:delColumn(oTbr:colPos)
  95.  
  96.           CASE nKey == K_DOWN;       oTbr:down()
  97.           CASE nKey == K_UP;         oTbr:up()
  98.           CASE nKey == K_PGDN;       oTbr:pageDown()
  99.           CASE nKey == K_PGUP;       oTbr:pageUp()
  100.           CASE nKey == K_CTRL_PGUP;  oTbr:goTop()
  101.           CASE nKey == K_CTRL_PGDN;  oTbr:goBottom()
  102.           CASE nKey == K_RIGHT;      oTbr:right()
  103.           CASE nKey == K_LEFT;       oTbr:left()
  104.           CASE nKey == K_HOME;       oTbr:home()
  105.           CASE nKey == K_END;        oTbr:end()
  106.           CASE nKey == K_CTRL_LEFT;  oTbr:panLeft()
  107.           CASE nKey == K_CTRL_RIGHT; oTbr:panRight()
  108.           CASE nKey == K_CTRL_HOME;  oTbr:panHome()
  109.           CASE nKey == K_CTRL_END;   oTbr:panEnd()
  110.           CASE nKey == K_ESC;        lExitRequested := .T.
  111.         ENDCASE
  112.       ENDDO
  113.  
  114.     RETURN NIL
  115.  
  116.  
  117.     #include "Box.ch"
  118.  
  119.     FUNCTION TBFrame(oTbr, cFrame)
  120.  
  121.       cFrame := iif(cFrame == NIL, B_SINGLE, cFrame)
  122.       @ oTbr:nTop - 1,    oTbr:nLeft - 1, ;
  123.         oTbr:nBottom + 1, oTbr:nRight + 1 BOX cFrame
  124.  
  125.     RETURN NIL
  126.  
  127.