[<<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.ClipX.Net --- NG 2 HTML conversion by Dave Pearson