home *** CD-ROM | disk | FTP | other *** search
/ C!T ROM 2 / ctrom_ii_b.zip / ctrom_ii_b / PROGRAM / CLIPPER / TBR62 / TBR62.PRG
Text File  |  1993-01-28  |  4KB  |  148 lines

  1. /*
  2. Every time a user ask for color based in conditions (like DELETED()) 
  3. you should tell them to use column:colorBlock. The codeblock should 
  4. return an array with two values (selected and unselected colors). 
  5. Also, keep in mind that colorBlock receives an argument from TBrowse, 
  6. like in:
  7.  
  8. { |x| IF(x == Something, { 1, 4}, {5, 7}) }
  9.  
  10. That was not included below since you need only the DELETED() status, 
  11. but can be useful for things like:
  12.  
  13. column := TBColumnNew( "Something", FIELDBLOCK( SomeField ) )
  14. column:colorBlock := { |p| IF( "Smith" $ p, {3, 5}, {1, 2}) }
  15. browse:addColumn(column)
  16.  
  17. */
  18.  
  19. /*****
  20.  *
  21.  * TBR62.PRG
  22.  *
  23.  * Luiz F. Quintela
  24.  * Copyright (c) 1991 Nantucket Corporation.
  25.  *                    All Rights Reserved.
  26.  *
  27.  * Clipper tbr62 /N /W
  28.  * RTLINK FILE tbr62
  29.  *
  30.  */
  31.  
  32. #include "inkey.ch"
  33. #include "setcurs.ch"
  34.  
  35. #define     COLSEP     CHR(32)  + CHR(179) + CHR(32) 
  36. #define     HEADSEP    CHR(205) + CHR(209) + CHR(205)
  37. #define     FOOTSEP    CHR(205) + CHR(207) + CHR(205)
  38. #define     MYCOLORS   "W+/BG,N/W,W/N,N," +;
  39.                        "GR+/W,N/BG,B+/BG,GR+/BG"
  40.  
  41. FUNCTION Main()
  42.    LOCAL b, column, nKey
  43.  
  44.    SET(_SET_SCOREBOARD, .F.)
  45.    SET(_SET_CONFIRM, .T.)
  46.    READEXIT(.T.)
  47.  
  48.    USE test INDEX test3,test7 NEW
  49.  
  50.    DISPBEGIN()
  51.    SETCURSOR(SC_NONE)
  52.    SETCOLOR("N/W")
  53.    SCROLL()
  54.    @  2, 6 TO 22,72 COLOR "W+/BG"
  55.    @ MAXROW(), 0 SAY ;
  56.      PADR("ESC - Quit",;
  57.      MAXCOL() + 1) COLOR "W+/RB"
  58.    DISPEND()
  59.  
  60.    b := TBrowseDB( 3, 7, 21, 71 )
  61.    b:colorSpec := MYCOLORS
  62.    b:colSep    := COLSEP
  63.    b:headSep   := HEADSEP
  64.  
  65.    // Columns
  66.    column := TBColumnNew( "Field 3", FIELDBLOCK("fld3") )
  67.    column:colorBlock := {|| IF(DELETED(),;
  68.                              {8, 2}, {1, 2}) }
  69.    b:addColumn( column )
  70.    column := TBColumnNew( "Field 7", FIELDBLOCK("fld7") )
  71.    column:colorBlock := {|| IF(DELETED(),;
  72.                              {8, 2}, {1, 2}) }
  73.    b:addColumn( column )
  74.    column := TBColumnNew( "Field 4", FIELDBLOCK("fld4") )
  75.    column:colorBlock := {|| IF(DELETED(),;
  76.                              {8, 2}, {1, 2}) }
  77.    b:addColumn( column )
  78.  
  79.    WHILE .T.
  80.       ForceStable( b )
  81.  
  82.       IF ( b:hitTop .OR. b:hitBottom )
  83.          TONE(87.3,1)
  84.          TONE(40,3.5)
  85.  
  86.       ENDIF
  87.  
  88.       nKey := INKEY(0)
  89.  
  90.       IF !TBMoveCursor( b, nKey )
  91.          IF ( nKey == K_ESC )
  92.             SCROLL()
  93.             EXIT
  94.  
  95.          ENDIF
  96.  
  97.       ENDIF
  98.  
  99.    END
  100.    RETURN (NIL)
  101.  
  102. /*****
  103.  *
  104.  * Forces stabilization
  105.  *
  106.  */
  107.  
  108. STATIC FUNCTION ForceStable( obj )
  109.    DISPBEGIN()
  110.    WHILE !obj:stabilize()
  111.    END
  112.    DISPEND()
  113.    RETURN (NIL)
  114.  
  115. /*****
  116.  *
  117.  * Cursor Movement Methods
  118.  *
  119.  */
  120.  
  121. STATIC FUNCTION TBMoveCursor( o, nKey )
  122.    LOCAL nFound
  123.    STATIC aKeys := ;
  124.        { K_DOWN      , {|obj| obj:down()},;
  125.          K_UP        , {|obj| obj:up()},;
  126.          K_PGDN      , {|obj| obj:pageDown()},;
  127.          K_PGUP      , {|obj| obj:pageUp()},;
  128.          K_CTRL_PGUP , {|obj| obj:goTop()},;
  129.          K_CTRL_PGDN , {|obj| obj:goBottom()},;
  130.          K_RIGHT     , {|obj| obj:right()},;
  131.          K_LEFT      , {|obj| obj:left()},;
  132.          K_HOME      , {|obj| obj:home()},;
  133.          K_END       , {|obj| obj:end()},;
  134.          K_CTRL_LEFT , {|obj| obj:panLeft()},;
  135.          K_CTRL_RIGHT, {|obj| obj:panRight()},;
  136.          K_CTRL_HOME , {|obj| obj:panHome()},;
  137.          K_CTRL_END  , {|obj| obj:panEnd()} }
  138.  
  139.    nFound := ASCAN( aKeys, nKey )
  140.    IF (nFound != 0)
  141.       EVAL( aKeys[++nFound], o )
  142.  
  143.    ENDIF
  144.    RETURN (nFound != 0)
  145.  
  146. // EOF - TBR62.PRG //
  147.  
  148.