Retro video games delivered to your door every month!
Click above to get retro games delivered to your door ever month!
X-Hacker.org- Force 4.0 Reference - _dbekey database browse keypress function type http://www.X-Hacker.org [<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
 _DBEKEY             Database browse keypress function type
------------------------------------------------------------------------------
 Declaration
   database.hdr

 Syntax
   func uint _DBEKEY ptr
   param _ALIAS_PARAM sDatabase, ;
         value uint   uColumn, ;
         value ulong  pBitArray, ;
         value uint   uStatus

 Arguments
   sDatabase is the alias displayed.

   uColumn is the current column (field) number.

   pBitArray is a pointer to the bit array associated with the
   database.

   uStatus is the current database display status code.

 Return
   A command code that determines the subsequent behavior of the database
   browse.

 Description
   The _DBEKEY function type is used to declare a pointer to a
   function with application-dependant functionality. The function
   type is used in conjunction with the dbedit() function to
   process special keypresses and to display additional data during a
   database browse.

 Example
   #define EXAMPLE_TYPE
   #define EXAMPLE_DATABASE
   #include example.hdr

   func uint KeyFunc6 static
   param _ALIAS_PARAM pDbf, ;
         value uint   uField, ;
         value ulong  pBitArray, ;
         value uint   uMode
   vardef
      uint uMarked
      uint n
   enddef
   uMarked := 0
   for n := 1 to areccount( pDbf )
      if barrget( pBitArray, n )     // calculate number of marked records
         uMarked++
      endif
   next
   @ 2, 11 ?? arecno( pDbf )         // status display
   @ 2, 26 ?? uField
   @ 2, 41 ?? uMarked
   @ 2, 56 ?? uMode
   return( DBER_CONTINUE )
   endproc
   
   func char HeaderFunc6 static          // return column headers
   param _ALIAS_PARAM pDbf, ;
          value uint  uField, ;
                uint  nFldLen
   nFldLen := afieldlen( pDbf, uField )  // must always return a length
   return( upper( afieldname( pDbf, uField ) ) )
   endfunc
   
   func char RecordFunc6 static          // return record contents
   param _ALIAS_PARAM pDbf, ;
         value uint   uField, ;
               uint   nFldLen
   nFldLen := afieldlen( pDbf, uField )  // must always return a length
   return( afieldstring( pDbf, uField ) )
   endfunc
   
   proc Test_DBEKEY
   vardef
      uint            n
      _DBESET         mBrw
      ptr( _DBEDISP ) _aFuncRec[ NUM_FIELDS ]
      ptr( _DBEDISP ) _aFuncHdr[ NUM_FIELDS ]
   enddef
   clear
   cursor( .f. )
   @ 23, 0 ?? center( "Use the Ins and Del keys to (un)mark records", 80 )
   @ 1, 15 ?? "Record"
   @ 1, 30 ?? "Field"
   @ 1, 46 ?? "Marked"
   @ 1, 62 ?? "Mode"
   __syscolor[ CLR_STD ] := WHITE_BLACK
   @ 5, 14 ?? replicate( "-", 53 )
   __syscolor[ CLR_DBE_STD    ] := WHITE_BLUE    // unmarked records
   __syscolor[ CLR_DBE_SEL    ] := BLUE_WHITE    // selection bar
   __syscolor[ CLR_DBE_CELL   ] := BLACK_WHITE   // selected cell
   __syscolor[ CLR_DBE_MARKED ] := GREEN_BLACK   // marked records
   __syscolor[ CLR_DBE_HEAD   ] := WHITE_BLACK   // header
   mBrw.uColumns := NUM_FIELDS
   for n := 0 to NUM_FIELDS - 1                  // fill function arrays
      _aFuncHdr[ n ] := &HeaderFunc6
      _aFuncRec[ n ] := &RecordFunc6
   next
   mBrw.bTop     := 6                            // browse settings
   mBrw.bLeft    := 14
   mBrw.bBottom  := 21
   mBrw.bRight   := 66
   mBrw.pSepRec  := &" "
   mBrw.pSepHdr  := &" "
   mBrw.pKeyFunc := &KeyFunc6
   open sTest                                    // open database
   __syscolor[ CLR_STD ] := BLACK_LIGHT_GREY
   dbedit( sTest, mBrw, &_aFuncRec[], &_aFuncHdr[] )
   cursor( .t. )
   endproc

   proc main
   Test_DBEKEY()
   endproc

See Also: dbedit()

Online resources provided by: http://www.X-Hacker.org --- NG 2 HTML conversion by Dave Pearson