/* $DOC$ $TEMPLATE$ Class $NAME$ TBrowseNew() $CATEGORY$ TBrowse class $ONELINER$ Create a Browse Object $SYNTAX$ TBrowseNew( , , , ) --> oBrowse $ARGUMENTS$ Top Row Top Left Column Bottom Row Bottom Right Column $RETURNS$ An new Browse Object $DESCRIPTION$ This function set up a browsing window at top-left coordinates of , to bottom-right coordinates of , . To browse Database files use TBrowseDB() function instead. $DATANOLINK$ `:aColumns` Array to hold all browse columns `:autoLite` Logical value to control highlighting `:cargo` User-definable variable `:colorSpec` Color table for the TBrowse display `:colPos` Current cursor column position `:colSep` Column separator character `:footSep` Footing separator character `:freeze` Number of columns to freeze `:goBottomBlock` Code block executed by `TBrowse:goBottom()` `:goTopBlock` Code block executed by `TBrowse:goTop()` `:headSep` Heading separator character `:hitBottom` Indicates the end of available data `:hitTop` Indicates the beginning of available data `:leftVisible` Indicates position of leftmost unfrozen column in display `:nBottom` Bottom row number for the TBrowse display `:nLeft` Leftmost column for the TBrowse display `:nRight` Rightmost column for the TBrowse display `:nTop` Top row number for the TBrowse display `:rightVisible` Indicates position of rightmost unfrozen column in display `:rowCount` Number of visible data rows in the TBrowse display `:rowPos` Current cursor row position `:skipBlock` Code block used to reposition data source `:stable` Indicates if the TBrowse object is stable `:aRedraw` Array of logical items indicating, is appropriate row need to be redraw `:RelativePos` Indicates record position relatively position of first record on the screen `:lHeaders` Internal variable which indicates whether there are column footers to paint `:lFooters` Internal variable which indicates whether there are column footers to paint `:aRect` The rectangle specified with `:ColorRect()` `:aRectColor` The color positions to use in the rectangle specified with `:ColorRect()` `:aKeys` Holds the Default movement keys $METHODSLINK$ `:AddColumn()` Adds an new TBColumn object to the current Browse `:Applykey()` Perform the Browse Key movement `:SetKey()` Add an New key to the Keyboard dictionary $METHODSNOLINK$ `:New( nTop, nLeft, nBottom, nRight )` Create an new Browse class and set the default values `:Down()` Moves the cursor down one row `:End()` Moves the cursor to the rightmost visible data column `:GoBottom()` Repositions the data source to the bottom of file `:GoTop()` Repositions the data source to the top of file `:Home()` Moves the cursor to the leftmost visible data column `:Left()` Moves the cursor left one column `:PageDown()` Repositions the data source downward `:PageUp()` Repositions the data source upward `:PanEnd()` Moves the cursor to the rightmost data column `:PanHome()` Moves the cursor to the leftmost visible data column `:PanLeft()` Pans left without changing the cursor position `:PanRight()` Pans right without changing the cursor position `:Right()` Moves the cursor right one column `:Up()` Moves the cursor up one row `:ColCount()` Return the Current number of Columns `:ColorRect()` Alters the color of a rectangular group of cells `:ColWidth( nColumn )` Returns the display width of a particular column `:Configure( nMode )` Reconfigures the internal settings of the TBrowse() object is an undocumented parameter in CA-Cl*pper `:LeftDetermine()` Determine leftmost unfrozen column in display `:DeHilite()` Dehighlights the current cell `:DelColumn( nPos )` Delete a column object from a browse `:ForceStable()` Performs a full stabilization `:GetColumn( nColumn )` Gets a specific TBColumn() object `:Hilite()` Highlights the current cell `:InsColumn( nPos, oCol )` Insert a column object in a browse `:Invalidate()` Forces entire redraw during next stabilization `:RefreshAll()` Causes all data to be recalculated during the next stabilize `:RefreshCurrent()` Causes the current row to be refilled and repainted on next stabilize `:SetColumn( nColumn, oCol )` Replaces one TBColumn() object with another `:Stabilize()` Performs incremental stabilization `:DispCell( nColumn, cColor )` Displays a single cell $EXAMPLES$ // See tests/tbrowse.prg $STATUS$ S $COMPLIANCE$ This functions is Compatible with CA-Cl*pper 5.2. The `:applykey()` and `:SetKey()` methods are only visible if HB_COMPAT_C53 is defined. $PLATFORMS$ All $FILES$ Library is core $SEEALSO$ TBrowseNew(), TBColumnNew() $END$ */ /* $DOC$ $TEMPLATE$ Class $NAME$ TBrowse():SetKey() $CATEGORY$ TBrowse Method $ONELINER$ Get an optionally Set an new Code block associated to a inkey value $SYNTAX$ :SetKey( [, ] ) --> bOldBlock $ARGUMENTS$ An valid inkey Code An optional action to associate to the inkey value. $RETURNS$ If a key-press has it code block changes, it will return the previous one; otherwise, it will return the current one $DESCRIPTION$ This method Get an optionally set an code block that is associated to an inkey value. The table below show the default key-press/Code Block definitions Inkey Value Code Block K_DOWN {| oB, nKey | oB:Down(), 0 } K_END {| oB, nKey | oB:End(), 0 } K_CTRL_PGDN {| oB, nKey | oB:GoBottom(), 0 } K_CTRL_PGUP {| oB, nKey | oB:GoTop(), 0 } K_HOME {| oB, nKey | oB:Home(), 0 } K_LEFT {| oB, nKey | oB:Left(), 0 } K_PGDN {| oB, nKey | oB:PageDown(), 0 } K_PGUP {| oB, nKey | oB:PageUp(), 0 } K_CTRL_END {| oB, nKey | oB:PanEnd(), 0 } K_CTRL_HOME {| oB, nKey | oB:PanHome(), 0 } K_CTRL_LEFT {| oB, nKey | oB:PanLeft(), 0 } K_CTRL_RIGHT {| oB, nKey | oB:PanRight(), 0 } K_RIGHT {| oB, nKey | oB:Right(), 0 } K_UP {| oB, nKey | oB:Up(), 0 } K_ESC {| oB, nKey | -1 }
The keys handlers can be queried, added and replace an removed from the internal keyboard dictionary. See the example. ``` oTb:SetKey( K_TAB, {| oTb, nKey | -1 } ) ``` An default key handler can be declared by specifying a value of 0 for . It associate code block will be evaluated each time TBrowse:Applykey() is called with an key value that is not contained in the dictionary. For example ``` oTb:SetKey( 0, {| oTb, nKey | DefKeyHandler( oTb, nkey } ) ``` This call the a function named DefKeyHandler() when is not contained in the dictionary. To remove an key-press/code block definition, specify NIL for ``` oTb:SetKey( K_ESC, NIL ) ``` $EXAMPLES$ #include "inkey.ch" LOCAL oTb := TBrowseNew( 0, 0, 10, 20 ) oTb:SetKey( K_F10, {| oTb, nkey | ShowListByname( oTb ) } ) $END$ */ /* $DOC$ $TEMPLATE$ Class $NAME$ TBrowse():ApplyKey() $CATEGORY$ TBrowse Method $ONELINER$ Evaluates an code block associated with an specific key $SYNTAX$ :ApplyKey( ) --> nResult $ARGUMENTS$ An valid Inkey code $RETURNS$ Value returned from the evaluated Code Block See Table Below Value Meaning -1 User request for the browse lost input focus 0 Code block associated with was evaluated 1 Unable to locate in the dictionary, Key was not processed
$DESCRIPTION$ This method evaluate an code block associated with that is contained in the TBrowse:SetKey() dictionary. $EXAMPLES$ LOCAL oTb := TBrowseNew( 0, 0, 10, 20 ) DO WHILE .T. oTb:forceStable() IF oTb:applykey( Inkey( 0 ) ) == -1 EXIT ENDIF ENDDO $END$ */ /* $DOC$ $TEMPLATE$ Class $NAME$ TBrowse():AddColumn() $CATEGORY$ TBrowse Method $ONELINER$ Add an New Column to an TBrowse Object $SYNTAX$ :AddColumn( ) --> Self $ARGUMENTS$ Is an TbColumn object $RETURNS$ The Current object $DESCRIPTION$ This method add an new column object specified as to the assigned browsing object. $END$ */