Previous topic Next topic
BROWSE
Help > Controls >

/////////////////////////////////////////////////////////////////////
// BROWSE
/////////////////////////////////////////////////////////////////////

This control uses a grid to show data taken from the records of a DBF.

Control creation:

*** Standard syntax:

   @ nRow, nCol BROWSE Name ;
      [ OBJ Obj ; ]
      [ <OF, PARENT> Parent ; ]
      [ WIDTH nWidth ; ]
      [ HEIGHT nHeight ; ]
      [ HEADERS aHeaders ; ]
      [ WIDTHS aWidths ; ]
      [ WORKAREA cWorkarea ; ]
      [ FIELDS aFields ; ]
      [ INPUTMASK aPicture ; ]
      [ VALUE nValue ; ]
      [ FONT cFontName ; ]
      [ SIZE nFontSize ; ]
      [ BOLD ; ]
      [ ITALIC ; ]
      [ UNDERLINE ; ]
      [ STRIKEOUT ; ]
      [ TOOLTIP cTooltip ; ]
      [ BACKCOLOR uBackColor ; ]
      [ DYNAMICBACKCOLOR uDynamicBackColor ; ]
      [ DYNAMICFORECOLOR uDynamicForeColor ; ]
      [ FONTCOLOR uFontColor ; ]
      [ <ONGOTFOCUS, ON GOTFOCUS> bOnGotFocus ; ]
      [ <ONCHANGE, ON CHANGE> bOnChange ; ]
      [ <ONLOSTFOCUS, ON LOSTFOCUS> bOnLostFocus ; ]
      [ <ONDBLCLICK, ON DBLCLICK> bOnDblClick ; ]
      [ <ACTION, ONCLICK, ON CLICK> bOnClick ; ]
      [ EDIT ; ]
      [ INPLACE ; ]
      [ APPEND ; ]
      [ <ONHEADCLICK, ON HEADCLICK> aHeadClick ; ]
      [ <WHEN, COLUMNWHEN> aWhenFields ; ]
      [ VALID aValid ; ]
      [ VALIDMESSAGES aValidMessages ; ]
      [ READONLY aReadonly ; ]
      [ LOCK ; ]
      [ DELETE ; ]
      [ NOLINES ; ]
      [ IMAGE aImage ; ]
      [ JUSTIFY aJust ; ]
      [ NOVSCROLL ; ]
      [ HELPID nHelpId ; ]
      [ BREAK ; ]
      [ RTL ; ]
      [ <ONAPPEND, ON APPEND> bOnAppend ; ]
      [ <ONEDITCELL, ON EDITCELL> bOnEditCell ; ]
      [ <ONBEFOREEDITCELL, ON BEFOREEDITCELL> bOnBeforEditCell ; ]
      [ COLUMNCONTROLS aEditControls ; ]
      [ REPLACEFIELD aReplaceFields ; ]
      [ SUBCLASS Subclass ]
      [ RECCOUNT ; ]
      [ COLUMNINFO aColumnInfo ; ]
      [ NOHEADERS ; ]
      [ <ONENTER, ON ENTER> bOnEnter ; ]
      [ DISABLED ; ]
      [ NOTABSTOP ; ]
      [ INVISIBLE ; ]
      [ DESCENDING ; ]
      [ DELETEWHEN bDelWhen ; ]
      [ DELETEMSG cDelMsg ; ]
      [ <ONDELETE, ON DELETE> bOnDelete ; ]
      [ HEADERIMAGES aHeaderImage ; ]
      [ IMAGESALIGN aHeaderImageAlign ; ]
      [ FULLMOVE ; ]
      [ SELECTEDCOLORS aSelectedColors ; ]
      [ EDITKEYS aEditKeys ; ]
      [ <FORCEREFRESH, NOREFRESH> ; ]
      [ <DOUBLEBUFFER, SINGLEBUFFER> ; ]
      [ <NOFOCUSRECT, FOCUSRECT> ; ]
      [ PAINTLEFTMARGIN ; ]
      [ <SYNCHRONIZED, UNSYNCHRONIZED> ; ]
      [ FIXEDCOLS ; ]
      [ NODELETEMSG ; ]
      [ UPDATEALL ; ]
      [ <ONABORTEDIT, ON ABORTEDIT> bOnAbortedit ; ]
      [ FIXEDWIDTHS ; ]
      [ <FIXEDBLOCKS, DYNAMICBLOCKS> ; ]
      [ BEFORECOLMOVE bBeforeColMove ; ]
      [ AFTERCOLMOVE bAfterColMove ; ]
      [ BEFORECOLSIZE bBeforeColSize ; ]
      [ AFTERCOLSIZE bAfterColSize ; ]
      [ BEFOREAUTOFIT bBeforeAutofit ; ]
      [ EDITLIKEEXCEL ; ]
      [ USEBUTTONS ; ]
      [ UPDATECOLORS ; ]
      [ <FIXEDCONTROLS, DYNAMICCONTROLS> ; ]
      [ <ONHEADRCLICK, ON HEADRCLICK> bHeadRClick ; ]
      [ EXTDBLCLICK ]
      [ NOMODALEDIT ; ]
      [ SILENT ; ]
      [ <ENABLEALTA, DISABLEALTA> ; ]
      [ NOSHOWALWAYS ; ]
      [ <NONEUNSELS, IGNORENONE> ; ]
      [ cbe: CHANGEBEFOREEDIT ; ]
      [ <ONRCLICK, ON RCLICK> bOnRClick ; ]
      [ CHECKBOXES ; ]
      [ <ONCHECKCHANGE, ON CHECKCHANGE> bOnCheck ; ]
      [ <ONROWREFRESH, ON ROWREFRESH> bOnRowRefresh ; ]
      [ DEFAULTVALUES aDefaultValues ; ]
      [ <ONEDITCELLEND, ON EDITCELLEND> bOnEditEnd ; ]
      [ EDITFIRSTVISIBLE ; ]
      [ NAVIGATEBYCELL ; ]

*** Alternative syntax:

   DEFINE BROWSE Name
      [ PARENT Parent ]
      [ OBJECT Obj ]
      [ ROW nRow ]
      [ COL nCol ]
      [ WIDTH nWidth ]
      [ HEIGHT nHeight ]
      [ HEADERS aHeaders ]
      [ WIDTHS aWidths ]
      [ FIELDS aFields ]
      [ VALUE nValue ]
      [ FONTNAME cFontName ]
      [ FONTSIZE nFontSize ]
      [ TOOLTIP cTooltip ]
      [ <ONCHANGE, ON CHANGE> bOnChange ]
      [ <ONDBLCLICK, ON DBLCLICK> bOnDblClick ]
      [ <ONHEADCLICK, ON HEADCLICK> aHeadClick ]
      [ <ONGOTFOCUS, ON GOTFOCUS> bOnGotFocus ]
      [ <ONLOSTFOCUS, ON LOSTFOCUS> bOnLostFocus ]
      [ WORKAREA cWorkarea ]
      [ ALLOWDELETE <.T., .F.> ]
      [ NOLINES <.T., .F.> ]
      [ IMAGE aimage ]
      [ JUSTIFY ajust ]
      [ HELPID helpid ]
      [ FONTBOLD <.T., .F.> ]
      [ FONTITALIC <.T., .F.> ]
      [ FONTUNDERLINE <.T., .F.> ]
      [ FONTSTRIKEOUT <.T., .F.> ]
      [ SETBREAK <.T., .F.> ]
      [ BACKCOLOR backcolor ]
      [ FONTCOLOR fontcolor ]
      [ LOCK <.T., .F.> ]
      [ INPLACEEDIT <.T., .F.> ]
      [ <VSCROLLBAR, NOVSCROLLBAR> <.T., .F.> ]
      [ ALLOWAPPEND <.T., .F.> ]
      [ READONLY aReadonly ]
      [ VALID aValid ]
      [ VALIDMESSAGES aValidMessages ]
      [ ALLOWEDIT <.T., .F.> ]
      [ DYNAMICBACKCOLOR uDynamicBackColor ]
      [ <WHEN, COLUMNWHEN> aWhenFields ]
      [ DYNAMICFORECOLOR uDynamicForeColor ]
      [ INPUTMASK aPicture ]
      [ RTL <.T., .F.> ]
      [ <ONAPPEND, ON APPEND> bOnAppend ]
      [ <ONEDITCELL, ON EDITCELL> bOnEditCell ]
      [ <ONBEFOREEDITCELL, ON BEFOREEDITCELL> bOnBeforEditCell ]
      [ COLUMNCONTROLS aEditControls ]
      [ REPLACEFIELD aReplaceFields ]
      [ RECCOUNT <.T., .F.> ]
      [ COLUMNINFO aColumnInfo ]
      [ SHOWHEADERS <.T., .F.> ]
      [ <ONENTER, ON ENTER> bOnEnter ]
      [ <ENABLE, DISABLED> <.T., .F.> ]
      [ TABSTOP <.T., .F.> ]
      [ <VISIBLE, INVISIBLE> <.T., .F.> ]
      [ DESCENDING <.T., .F.> ]
      [ DELETEWHEN bDelWhen ]
      [ DELETEMSG cDelMsg ]
      [ <ONDELETE, ON DELETE> bOnDelete ]
      [ HEADERIMAGES aHeaderImage ]
      [ IMAGESALIGN aHeaderImageAlign ]
      [ FULLMOVE <.T., .F.> ]
      [ SELECTEDCOLORS aSelectedColors ]
      [ EDITKEYS aEditKeys ]
      [ <FORCEREFRESH, NOREFRESH> <.T., .F.> ]
      [ <DOUBLEBUFFER, SINGLEBUFFER> <.T., .F.> ]
      [ <FOCUSRECT, NOFOCUSRECT> <.T., .F.> ]
      [ PAINTLEFTMARGIN <.T., .F.> ]
      [ <SYNCHRONIZED, UNSYNCHRONIZED> <.T., .F.> ]
      [ FIXEDCOLS <.T., .F.> ]
      [ NODELETEMSG <.T., .F.> ]
      [ UPDATEALL <.T., .F.> ]
      [ <ONABORTEDIT, ON ABORTEDIT> bOnAbortedit ]
      [ <ACTION, ONCLICK, ON CLICK> bOnClick ]
      [ FIXEDWIDTHS <.T., .F.> ]
      [ <DYNAMICBLOCKS, FIXEDBLOCKS> <.T., .F.> ]
      [ BEFORECOLMOVE bBeforeColMove ]
      [ AFTERCOLMOVE bAfterColMove ]
      [ BEFORECOLSIZE bBeforeColSize ]
      [ AFTERCOLSIZE bAfterColSize ]
      [ BEFOREAUTOFIT bBeforeAutofit ]
      [ EDITLIKEEXCEL <.T., .F.> ]
      [ USEBUTTONS <.T., .F.> ]
      [ UPDATECOLORS <.T., .F.> ]
      [ <FIXEDCONTROLS, DYNAMICCONTROLS> <.T., .F.> ]
      [ <ONHEADRCLICK, ON HEADRCLICK> bHeadRClick ]
      [ EXTDBLCLICK <.T., .F.> ]
      [ NOMODALEDIT <.T., .F.> ]
      [ SILENT <.T., .F.> ]
      [ <ENABLEALTA, DISABLEALTA> <.T., .F.> ]
      [ NOSHOWALWAYS <.T., .F.> ]
      [ <NONEUNSELS, IGNORENONE> <.T., .F.> ]
      [ CHANGEBEFOREEDIT <.T., .F.> ]
      [ <ONRCLICK, ON RCLICK> bOnRClick ]
      [ CHECKBOXES <.T., .F.> ]
      [ <ONCHECKCHANGE, ON CHECKCHANGE> bOnCheck ]
      [ <ONROWREFRESH, ON ROWREFRESH> bOnRowRefresh ]
      [ DEFAULTVALUES aDefaultValues ]
      [ <ONEDITCELLEND, ON EDITCELLEND> bOnEditEnd ]
      [ EDITFIRSTVISIBLE <.T., .F.> ]
      [ NAVIGATEBYCELL <.T., .F.> ]
      [ SUBCLASS Subclass ]
   END BROWSE

*** OOP Syntax:

   [ Obj := ] TOBrowse():Define( ControlName, [ ParentForm ], [ nCol ], [ nRow ], [ nWidth ], [ nHeight ], [ aHeaders ], ;
      [ aWidths ], [ aFields ], [ nValue ], [ cFontName ], [ nFontSize ], [ cTooltip ], ;
      [ bOnChange ], [ bOnDblClick ], [ aHeadClick ], [ bOnGotFocus ], ;
      [ bOnLostFocus ], [ cWorkArea ], [ lAllowDelete ], [ lNoLines ], [ aImage ], ;
      [ aJust ], [ nHelpId ], [ lBold ], [ lItalic ], [ lUnderline ], ;
      [ lStrikeout ], [ lBreak ], [ uBackColor ], [ uFontColor ], [ lLock ], ;
      [ lInPlace ], [ lNoVScroll ], [ lAllowAppend ], [ aReadonly ], ;
      [ aValid ], [ aValidMessages ], [ lAllowEdit ], [ uDynamicBackColor ], ;
      [ aWhenFields ], [ uDynamicForecolor ], [ aPicture ], [ lRtl ], ;
      [ bOnAppend ], [ bOnEditCell ], [ aEditControls ], [ aReplaceFields ], ;
      [ lRecCount ], [ aColumnInfo ], [ lHasHeaders ], [ bOnEnter ], ;
      [ lDisabled ], [ lNoTabStop ], [ lInvisible ], [ lDescending ], ;
      [ bDelWhen ], [ cDelMsg ], [ bOnDelete ], [ aHeaderImage ], ;
      [ aHeaderImageAlign ], [ lFullMove ], [ aSelectedColors ], [ aEditKeys ], ;
      [ uRefresh ], [ lDblBffr ], [ lFocusRect ], [ lPLM ], [ lSync ], [ lFixedCols ], ;
      [ lNoDelMsg ], [ lUpdateAll ], [ bOnAbortedit ], [ bOnClick ], [ lFixedWidths ], ;
      [ lFixedBlocks ], [ bBeforeColMove ], [ bAfterColMove ], [ bBeforeColSize ], ;
      [ bAfterColSize ], [ bBeforeAutofit ], [ lLikeExcel ], [ lButtons ], [ lUpdCols ], ;
      [ lFixedCtrls ], [ bHeadRClick ], [ lExtDbl ], [ lNoModal ], [ lSilent ], [ lAltA ], ;
      [ lNoShowAlways ], [ lNone ], [ lCBE ], [ bOnRClick ], [ lCheckBoxes ], [ bOnCheck ], ;
      [ bOnRowRefresh ], [ aDefaultValues ], [ bOnEditEnd ], [ lAtFirst ], [ bOnBeforEditCell ] )

   To define a BROWSE with NAVIGATEBYCELL clause replace TOBrowse() with TOBrowseByCell().

Related commands and functions :

*** Standard syntax:

   SET BROWSEFIXEDBLOCKS OFF
   SET BROWSEFIXEDBLOCKS ON
   SET BROWSEFIXEDCONTROLS OFF
   SET BROWSEFIXEDCONTROLS ON
   SET BROWSESYNC OFF
   SET BROWSESYNC ON

*** Alternative syntax:

   SetBrowseFixedBlocks( .F. )
   SetBrowseFixedBlocks( .T. )
   SetBrowseFixedControls( .F. )
   SetBrowseFixedControls( .T. )
   SetBrowseSync( .F. )
   SetBrowseSync( .T. )

Auxiliary variables:

   During the execution of the VALID codeblocks, an auxiliary memvar containing
   the value entered by the user is available for validation purposes.

   This memvar name has the following syntaxes:
      a) MemVar.AreaName.FieldName
      b) MemVarAreaNameFieldName

   For example, if a a column shows field TEST->NUMBER, inside the VALID
   codeblock you can use the memvar "Memvar.Test.Number" or "MemvarTestNumber"
   to access and validate the valued entered by de user.

Column justification constants:

   BROWSE_JTFY_LEFT
   BROWSE_JTFY_RIGHT
   BROWSE_JTFY_CENTER

Refresh constants:

   REFRESH_FORCE
   REFRESH_NO
   REFRESH_DEFAULT

Notes on clauses:

   1. PROGID identifies an ActiveX control. See Active Template Library.
   2. OBJ and OBJECT set a reference to the control into the variable Obj.
      When using OBJECT, the variable must be previously declared.
      When using OBJ, if the variable does not exist, it's assumed PRIVATE.
   3. PARENT declares which window is the parent (owner) of the control.
      Can be ommited only when used inside a DEFINE WINDOW / END WINDOW structure.
   4. ROW and COL define the position of the control inside the parent's client area.
   5. WIDTH and HEIGHT define the dimension of the control.
   6. TABSTOP and NOTABSTOP specify if the control can/can't be focused using TAB key.
      Default is TABSTOP.
   7. DISABLED specifies that the control can't receive mouse clicks and key presses.
      Default is ENABLED.
   8. SUBCLASS indicates that the control must be an instance of the specified class,
      instead of the default TActiveX class.
   9. VISIBLE and INVISIBLE specify if the control must be visible/hidden when
      created. Default is VISIBLE.

Notes on parameters:

   1. nRow, nCol, nWidth and nHeight must be numbers.
   2. Name and Parent must be valid identifiers enclosed or not within quotes.
   3. cProgID must be a string containig a GUID, a ProgID or an URL.
   4. Obj and Subclass must be valid identifiers not enclosed within quotes.
   5. cName and cParent must be strings containing valid identifiers.
   6. lNoTabstop, lDisabled and lInvisible must be .T. or .F.