records in a set of Scoped Records
STACK................Display the callstack and optionally edit the source
SUM..................Sum numeric fields in selected database
TAG..................Build or add to a Record Tag Array
TAG CLEAR............Clear the Record Tag Array
UNLOCK...............Unlock the current record
USE..................Open a database file in a work area
USER EDIT............Maintain the DCUSERS.DBF User Database
UTIL.................A menu of database utilities
WHERE PUBLIC.........List .OBJ(s) that contain public function
WHERE SOURCE.........Display a list of .OBJ/.PRG files containing PUBLIC proc
ZAP..................Zap the database
USER-DEFINED COMMANDSCreate a User-Defined object for displaying with GUI reader
DBU..................A Gui Database Management Utility
DCAPICK..............A dialogue for choosing a item from an array pick list.
DCREPORT FORM........A Windows compatible replacement for REPORT FORM
DCTABLE
A command for creating a TABLE in HTML
Syntax:
@ [ < nRow >, < nCol > ] DCTABLE ;
[OBJECT < oTable > ;
[BORDER < nBorder >] ;
[ROWS < nRows >] ;
[COLS,COLUMNS < nCols >] ;
[TRIMROWS] ;
[TRIMCOLS] ;
[FILL < cFill >] ;
[ALIGN < nAlign >] ;
[PARENT < oParent >] ;
[PARENTID < cPID >] ;
[BGCOLOR < xBGColor > ] ;
[BORDERCOLOR < xBorderColor >] ;
[BORDERCOLORLIGHT < xBorderColorLight >] ;
[BORDERCOLORDARK < xBorderColorDark >] ;
[CELLPADDING < nCellPadding >] ;
[CELLSPACING < nCellSpacing >] ;
[HSPACE < nHspace >] ;
[VALIGN < nValign >] ;
[VSPACE < nVspace >] ;
[WIDTH < cWidth >] ;
[CLASS < cClass >] ;
[CARGO < xCargo >] ;
[PRE,PRETEXT < bcPreHTML >] ;
[POST,POSTTEXT < bcPostHTML >] ;
[HIDE < bHide >] ;
[EVAL < bEval >] ;
[TITLE < cTitle >] ;
[ID < cId >] ;
[GROUP < cGroup >]
Arguments:
< nRow > and < nCol > are the row number and column number of
the table if the parent of this object is a DCTABLE. The
text will be inserted in the cell of the table defined by
the row/column.
OBJECT < oTable > is the name of the variable to assign as a
storage place for this object.
PARENT < oParent > is the name of the variable that was
assigned to the parent of this table. If this argument
is not passed then the parent will be the object set with
the DCSETPARENT command.
PARENTID < cParentID > may be used in lieu of the PARENT < oParent >
clause. This identifies the ID of the parent instead of the
parent's object variable name.
TRIMCOLS will suppress writing < td >< /td > column tags
that are empty when at the end of columns.
TRIMROWS will suppress writing < tr >< /tr > column tags that
are empty when at the end of rows.
ROWS < nRows > is the number of rows in the table.
COLS,COLUMNS < nCols > is the number of columns in the table.
HSPACE < nHSpace > is the number of pixels of space on the
outside of the table on both the left and right side.
VSPACE < nVSpace > is the number of pixels of space on the
outside of the table on both the top and bottom.
FILL < cFill > is a character string to put into each table
cell. Any writing to the cells will be appended to the
fill string.
WIDTH < cWidth > is a character string defining the width of
the table. Values may be either an integer--interpreted
as a number of pixels--or a character string defining a
percentage of the horizontal or vertical space. The
value 50% means half the available space while 50 means
50 pixels.
CELLPADDING < nCellPadding > defines the amount of space within table
cells (i.e., between the border and cell contents). The
value may be given as a number of pixels or as a percentage,
though most browsers do not support percentages, treating
"20%" as if it were "20". A percentage value is relative to
the vertical space available for vertical padding or spacing,
and the amount is split evenly between the top and bottom.
Horizontal padding and spacing behave similarly. The padding
or spacing is always applied to all four sides.
CELLSPACING < nCellSpacing > defines the amount of space between
table cells.
Internet explorer lets you alter the colors that make up an
individual cell's border - if border are turned on with the
border attribute. The values for BORDERCOLOR < xBorderColor >,
BORDERCOLORDARK < xBorderColorDark > and
BORDERCOLORLIGHT < xBorderColorLight > may be an RGB color
value (#XXXXXX) , a standard color name, an RGB 3-element
array or a numeric value defined in GRA.CH. The different
colors shade the edges of the border to give it a 3D
appearance with < nBorderColor > shades the central body of
the border.
BORDER < nBorder > specifies the width in pixels of the border
around the table.
ALIGN < nAlign > specifies the default horizontal alignment of
items in the table cells. Possible values are left, right,
and center.
VALIGN < nVAlign > specifies the default vertical alignment of
items in the table cells. Possible values are top, bottom,
and center.
BGCOLOR < xBGColor > specifies the default background color for
the entire table. Value may be an RGB color value (#XXXXXX),
a standard color name, an RGB 3-element array or a numeric
value defined in GRA.CH.
HEADERS < aHeaders > is an array of character strings
containing the headers for each column in the table. The
length of the array should be equivalent to the number of
columns.
FOOTERS < aFooters > is an array of character strings
containing the footers for each column in the table. The
length of the array should be equivalent to the number of
columns.
CLASS < cClass > sets a class name for the table. The class name
is case sensitive. A class is used with style sheets to
give the table a pre-defined appearance.
CARGO < xCargo > is any kind of data you wish to to add to the
:cargo container of object created by this definition.
PRE,PRETEXT < bcPreHTML > is a character string or a code block
that returns a character string containing any HTML text
that will precede the opening < table > tag in the source
that is written.
POST,POSTTEXT < bcPostHTML > is a character string or a code block
that returns a character string containing any HTML text
that will follow the closing < /table > tag in the source
that is written.
HIDE < bHide > is a code block that is evaluated at the
time the :writeHtml() method is called for the class that
supports this command. If the code block returns a .TRUE.,
then no HTML code will be written.
EVAL < bEval > is a code block that is evaluated after the
object is created in DC_ReadHtml(). A pointer to the
object associated with this command is passed as an
argument to the code block.
ID < cId > is a unique identifier for this object. This ID is used
with functions like DC_GETOBJECT() to determine the status
of a get object.
TITLE < cTitle > is a title to assign to this object. The title
is not used in the HTML output but is simply a description of the
get object which is saved in the GetList.
GROUP < cGroup > is a "group" name (case-sensitive) to assign to
this GetList object. Assignment to a group makes it possible to
perform operations only on GetList items which are members of a
specified group.
Description:
The command DCTABLE creates an HTML TABLE definition and
adds the definition to the array named GETLIST which is later
processed by the DC_READHTML() function or by the DCREAD HTML
command. The GETLIST array must be first declared and
initialized to the value of {}. The command DCREAD HTML
creates all the DC_Html*() objects from the GetList array
and then invokes the :writeHtml() method of the topmost
parent object to generate the HTML code.
A Getlist object remains stored as long as it is referenced
in an array or by a variable. The commands CLEAR and
CLEAR GETS assign an empty array to the GetList variable.
This also occurs after the completion of the DCREAD command
if it is called without the SAVE option, causing all
objects referenced by the GetList array to be released.
Any other HTML element may be inserted into a table by
simply addressing the table element with it's row number
and column number. See example.
Notes:
DCTABLE uses the DC_HtmlTable() class to create the table
object and write the HTML source.
Examples:
/*
This example will build a table with 4 sub-tables.
*/
FUNCTION Xtest()
LOCAL i, j, GetList[0], cHtml, oTable, nTable, aSubTables[2,2]
DCTABLE OBJECT oTable1 ;
ROWS 2 ;
COLUMNS 2 ;
BORDER 5 ;
BORDERCOLOR '#336677' ;
TRIMROWS ;
TRIMCOLS ;
BGCOLOR '#339977'
nTable := 1
FOR i := 1 TO 2
FOR j := 1 TO 2
@ i,j DCTABLE ;
OBJECT aSubTables[i,j] ;
BGCOLOR '#33AA77' ;
ROWS 4 ;
COLUMNS 4 ;
FILL Alltrim(Str(i)) + '/' + Alltrim(Str(j)) ;
PARENT oTable1
@ 1,1 DCSAY '' + Alltrim(Str(nTable++)) + ;
'
' PARENT aSubTables[i,j]
NEXT
NEXT
DCREAD HTML TO cHtml
MemoWrit('TEST.HTM',cHtml)
RETURN nil
Source/Library:
DCHTML.CH
See Also:
DCREAD HTML
dc_html()
dc_readhtml()
dc_htmltable()
OVERVIEW_DUAL_COMM
Dual-Mode Commands
Description:
DUAL-Mode commands have been designed to work in either
TEXT mode or GUI mode. Text mode is selected by calling
DC_GUI(.f.) and GUI mode is selected by calling DC_GUI(.t.).
OVERVIEW_GUI_COMM
GUI commands
Description:
GUI commands are designed to work only in GUI mode. When any of
these commands are used, the dialog reader should be invoked with
the DCREAD GUI command or the DC_ReadGUI() function.
=> (ECHO)
Display the pre-processed output of a DOT PROMPT command
Syntax:
= > < command >
Arguments:
< command > is the command string to translate.
Description:
The =þ> command is used to display the pre-processed output of
commands entered at the dot prompt.
Examples:
. => STACK
DC_CallStack()
. => CLOSE
dbCloseArea()
. => ? K_ESC
Qout( 27 )
See Also:
dc_dot()
@ DC3STATE
Create a 3-STATE object for displaying with the GUI reader
Syntax:
@ < nRow >,< nCol > DC3STATE < uVar > ;
[PROMPT < aVar >] ;
[SIZE < nWidth > [,< nHeight >]] ;
[PARENT < oParent >] ;
[PARENTID < cParentID >] ;
[MESSAGE < bcMsg > [INTO < oMsg >]] ;
[COLOR < bncFgC > [,< ncBgC >] ] ;
[HELPCODE < cHelp >] ;
[DATALINK < bLink >] ;
[FONT < bocFont >] ;
[WHEN < bWhen >] ;
[PRESENTATION < aPres >] ;
[PIXEL] ;
[OBJECT < oObject >] ;
[TOOLTIP < bcToolTip >] ;
[CURSOR < nCursor >] ;
[CARGO < xCargo >] ;
[HIDE < bHide >] ;
[EDITPROTECT < bProtect >] ;
[PREEVAL < bPreEval >] ;
[EVAL < bEval >] ;
[TITLE < cTitle >] ;
[RELATIVE < oRel >] ;
[ID < cId >] ;
[ACCELKEY < anAccel >] ;
[GOTFOCUS < bGotFocus >] ;
[LOSTFOCUS < bLostFocus >] ;
[TABSTOP] ;
[NOTABSTOP] ;
[TABGROUP < nTabGroup >] ;
[VISIBLE] ;
[INVISIBLE] ;
[GROUP < cGroup >] ;
[VALID < bValid >]
Arguments:
< nRow > and < nCol > are the row and column of the screen.
Coordinates are always relative to position 0,0 ie. Top,Left
of the parent object, unless the RELATIVE < oRel > argument is
used. If no parent is assigned, then the parent is the Dialog
box. IF the PIXEL option is set to .TRUE. in DCGETOPTIONS,
then the numbers are in pixels otherwise they are in standard
text-based coordinates. You can also force the pixel
mode by including PIXEL as a command argument.
< nVar > is the variable to GET. This must be a initialized to
a numerical value of 0, 1 or 2. It must not be a macro. < nVar >
is automatically anchored via a Get-Set codeblock created by
DC_GetAnchorCB() unless < nVar > is a custom Get-Set code block.
Macros may be used in a custom Get-Set code block.
OBJECT < oObject > is the variable to use as a container for the
object after it is created by the GUI reader.
RELATIVE < oRel > is an optional object in the Getlist which
determines the start coordinates of this object. If this
option is used, then the < nSrow >, < nSCol > coordinates are
relative to the starting coordinates of < oRel > rather than
the parent object.
PROMPT < aPrompt > is an array of 3 character strings, one for
each state of the 3-state box, to display immediately to the
right of the 3-state box.
SIZE < nWidth >,< nHeight > is the width and height of the
prompt. If the PIXEL option is set to .TRUE. in DCGETOPTIONS,
then the numbers are in pixels otherwise they are in standard
text-based numbers.
MESSAGE < bcMsg > is the message you want to display in the
message area of the dialogue screen defined by the DCMESSAGEBOX
command when the object is in focus. Optionally, INTO < oMsgBox >
will designate which message box to display the message into.
If the INTO clause is not used, then the last message box in the
GetList is the default. < oMsgBox > may also be any object that
supports the :setCaption() method. If < bcMsg > is a code-block,
it must return a character string.
WHEN < bWhen > is a code block that is evaluated in the event loop.
This code block must return a logical value. If the value
returned is .FALSE. then the object will be disabled and grayed.
If the value returned is .TRUE. then the object will be enabled.
HIDE < bHide > is a code block that is evaluated in the event loop.
This code block must return a logical value. If the value
returned is .TRUE. then the object will be hidden from view. If
the value returned is .FALSE. then the object will be displayed.
EDITPROTECT < bProtect > is an optional condition tested during the
execution of the GUI gets by the DCREAD GUI command, before the
object receives input focus (before it is activated). When the
condition returns the value .T. (true), the object receives the
input focus. Otherwise, it is skipped. < bProtect > is a code
block that must return a logical value when evaluated. The object
is passed to the code block prior to the object receiving input
focus. This clause behaves similar to the WHEN clause with the
exception that the object is not disabled (grayed out).
PREEVAL < bPreEval > is a code block to be evaluated by the GUI
reader before the Xbase Parts object is created. The object is
passed to the code block.
EVAL < bEval > is a code block to be evaluated by the GUI reader
after the Xbase Parts object is created. The object is passed
to the code block.
VALID < bValid > is an optional condition tested during the
execution of the GUI gets by the READ command before a Get
object loses input focus (before it is deactivated). When
the condition returns the value .T. (true), the Get object
loses the input focus. Otherwise, it remains active. < bValid >
is a code block that must return a logical value when it is
evaluated. The Get object is passed to the code block prior
to the Get object losing input focus.
PARENT < oParent > is the name of the variable that was assigned to
the parent object for this object. Only use this clause if you
are placing this object onto another dialogue object. If this
argument is not passed then the parent will be the object set
with the DCSETPARENT command.
PARENTID < cParentID > may be used in lieu of the PARENT < oParent >
clause. This identifies the ID of the parent instead of the
parent's object variable name.
DATALINK < bLink > is an optional code block that is evaluated
every time Get/Set codeblock is evaluated, ie when the data
is read from the < uVar > into the object, except when using
a user-defined Get/Set code block. < bLink > is also
evaluated when DC_GetRefresh() is called unless the < lDataLink >
parameter of DC_GetRefresh() is .FALSE.
FONT < cFont > is a character string defining an optional font.
The font string must conform to the Xbase++ standard, ie.
"10.Courier.Bold". It may also be a font object or a code block
that returns a character string or a font object to later
refresh with DC_GetRefresh().
PRESENTATION < aPres > is a two-dimensional array. If specified,
this contains presentation parameters for the CheckBox object.
The first column of the array must contain #define constants
from the XBP.CH file starting with the prefix XBP_PP_. These
constants define the presentation parameters that can be set
for the object and include colors and fonts. The second column
of the array in < aPres > contains the value for each setting.
These are also generally set using #define constants from the
GRA.CH file.
TOOLTIP < bcToolTip > is a character string which will display
as a "Tool Tip" next to the object when the cursor is passed
over the object. A semi-colon within the text indicates a new
line. If < bcToolTip > is a code-block, it must return a character
string. NOTE: The Tooltip painting method is run in another
thread, therefore the codeblock should not run code that points
to the current work area. It may however, contain local, public
or private variables.
CURSOR < nCursor > is an optional mouse pointer to use for this
object. System mouse pointers start with XBPWINDOW_POINTERTYPE_
and are defined in XPB.CH. The default pointer is
XBPWINDOW_POINTERTYPE_POINTER. < nCursor > may also be a resource
ID that points to a Bit-Map that has been compiled with the
resource compiler and linked to the .EXE.
COLOR < bncFGc >, < ncBGc > are foreground and background colors.
They may be character strings representing valid text-based
colors supported by SetColor() or they may be numeric constants
which begin with either the prefix GRA_CLR_ or the prefix
XBPSYSCLR_ as defined in GRA.CH or XBP.CH. IF < bncFGc > is a
code block is must return a 2-element array containing a
foreground and background color.
ID < cId > is a unique identifier for this object. This ID is used
with functions like DC_GETORIGUPDATED() to determine the status
of a get object.
CARGO < xCargo > is any kind of data you wish to to add to the
:cargo container for this object. The cargo may be accessed
at any time via the :cargo exported variable, however it will not
be stored in the same manner it is entered. The :cargo container
of DCDIALOG objects is an array of at least three elements:
[1] - A numeric value that is a pointer to the Getlist array
for this object.
[2] - A pointer to the GetList array.
[3] - The value of < xCargo >.
[4] and up - optional values added by the GUI reader.
TITLE < cTitle > is a title to assign to this object. The title
is not displayed on the screen but is simply a description of the
get object which is saved in the GetList.
ACCELKEY < anAccel > is a numeric "hot-key" assignment that will set
focus to the checkbox object when the hot-key is pressed. The key
must be a valid key with the prefix xbeK_*. These keys are
defined in APPEVENT.CH. < anAccel > may also be an array of numeric
values to assign more than one key to the object.
GOTFOCUS < bGotFocus > is a code block that is evaluated when this
object receives input focus.
LOSTFOCUS < bLostFocus > is a code block that is evaluated when this
object loses input focus.
TABSTOP will cause the object (Xbase Part) to be set when using
the Tab key. Note: When logical groups are defined in a dialog
using TABGROUP < nTabGroup >, TABSTOP is usually set to .T. (true)
for the first dialog element in the group. This allows the first
dialog element of a group to be activated using the Tab key.
NOTABSTOP will cause the object (Xbase Part) to be ignored when
using the Tab key. This clause is needed only to override any
default setting of TabStop by the DCGETOPTIONS [TABSTOP] command.
TABGROUP < nTabGroup > allows objects (Xbase Parts) that are created
immediately after one another in the GetList to be combined into
logical groups. This allows the user to navigate within a dialog
from group to group by pressing the Tab key. Within a group of
dialog elements navigation is performed using the cursor keys.
Only constants defined in the XBP.CH file can be used as values
for this instance variable. The following table lists the
available constants:
#define constants for < nTabGroup >:
Constant Description
XBP_NO_GROUP *) Dialog element does not belong to a group
XBP_BEGIN_GROUP Dialog element is the first in a group
(this begins the definition of the group)
XBP_WITHIN_GROUP Dialog element is within a group
XBP_END_GROUP Dialog element is the last in a group
(this ends the definition of the group)
*) Default value
GROUP < cGroup > is a "group" name (case-sensitive) to assign to
this GetList object. Assignment to a group makes it possible to
perform operations only on GetList items which are members of a
specified group, using functions such as DC_GetRefresh() or
DC_ReadGui().
VISIBLE determines whether the object is visible immediately after
the call to the method :create() . By default the object follows
the VISIBLE clause of the DCGETOPTIONS command. Use the
INVISIBLE clause to override the VISIBLE clause of DCGETOPTIONS
HELPCODE < cHelp > is a character string that is passed to the
DC_HelpF1() function if F1 is pressed or the HELP button
is clicked when this GET has focus. This HELPCODE allows
the Help system to override the passing of the Procedure and
Varname for more specific context-help.
Description:
The command @..DC3STATE creates a new 3-State definitiion
and adds it to the array named GETLIST which is later
processed by the DC_Read*() functions or by the DCREAD *
command. The GETLIST array must be first declared and
initialized to the value of {}.
The command DCREAD GUI creates the DC_Xbp*() objects and
activates the edit mode for all definitions found in the
GetList array.
The command DCREAD HTML creates the DC_Html*() objects and
writes the HTML source code.
A Getlist object remains stored as long as it is referenced
in an array or by a variable. The commands CLEAR and
CLEAR GETS assign an empty array to the GetList variable.
This also occurs after the completion of the DCREAD command
if it is called without the SAVE option, causing all Get
objects referenced by the GetList array to be released.
@..DC3STATE objects can be combined with any objects that
that use the DCDIALOG system, such as @..DCSAY..GET,
@..DCRADIO, @..DCPUSHBUTTON or @..DCTABPAGE.
Notes:
The 3-state object created by @ DC3STATE is an object of the
DC_Xbp3State() class which inherits from Xbp3State(), therefore
it can be manipulated with any iVar or method supported by
Xbp3State().
Examples:
#include "dcdialog.ch"
FUNCTION Xtest()
LOCAL GetList := {}, aForSale, nForSale := 0, oMsgBox
aForSale := { 'Not for Sale','For Sale','Not Sure' }
@ 2,2 DC3STATE nForSale PROMPT aForSale ;
SIZE 12 ;
TABSTOP ;
MESSAGE 'Is this article FOR SALE?' INTO oMsgBox ;
TITLE '3-STATE - For Sale?' ;
ID 'FOR_SALE'
@ 4,2 DCMESSAGEBOX OBJECT oMsgBox SIZE 20,1
DCREAD GUI FIT ADDBUTTONS
RETURN nil
Source/Library:
DCDIALOG.CH
@ DCAPPCRT
Create an APPLICATION CRT object for displaying with GUI reader
Syntax:
@ < nRow >,< nCol > DCAPPCRT < oCrt > ;
[SIZE < nHeight > [,< nWidth >]] ;
[PARENT < oParent >] ;
[PARENTID < cParentId >] ;
[CAPTION < cCaption >] ;
[BORDER < nB >] ;
[FONT < bocFont >] ;
[FONTSIZE < nFW >,< nFH >] ;
[ACTION < bAction >] ;
[COLOR < bncFgC > [,< ncBgC >] ] ;
[CARGO < xCargo >] ;
[THREAD < oThread >] ;
[HIDE < bHide >] ;
[PREEVAL < bPreEval >] ;
[EVAL < bEval >] ;
[PIXEL] ;
[RELATIVE < oRel >]
Arguments:
< nRow >, < nCol > are the coordinates on the screen.
Coordinates are always relative to position 0,0 ie. Top,Left
of the parent object, unless the RELATIVE < oRel > argument is
used. If no parent is assigned, then the parent is the Dialog
box. IF the PIXEL option is set to .TRUE. in DCGET OPTIONS,
then the numbers are in pixels otherwise they are in standard
text-based coordinates. You can also force the pixel mode by
including PIXEL as a command argument.
< oCrt > is a local memory variable that will be used to store
the reference to the CRT object.
SIZE < nHeight > ,< nWidth > are the number of rows and
columns. The default is 25 rows by 80 columns.
PARENT < oParent > is the name of the variable that was
assigned to the parent TABPAGE or GROUP for this CRT Object.
Only use this command if you are placing this Browse onto
another dialogue object. If this argument is not passed then
the parent will be the object set with the DCSETPARENT command. .
PARENTID < cParentID > may be used in lieu of the PARENT < oParent >
clause. This identifies the ID of the parent instead of the
parent's object variable name.
CAPTION < cCaption > is the title to display in the title
line of the CRT window.
BORDER < nB > defines the border type of a CRT window. Constants
defined in the XBP.CH file can be assigned to this instance
variable. The following table shows the valid #define constants
for BORDER .
Constants for border types
Constant Description
-------------------------- ---------------------------
XBPDLG_NO_BORDER No border
XBPDLG_SIZEBORDER Window is sizeable
XBPDLG_THINBORDER *) Thin border, window size
can not be changed
XBPDLG_DLGBORDER Thick border, window size
can not be changed
XBPDLG_RAISEDBORDERTHICK **) Thick, raised border
XBPDLG_RAISEDBORDERTHIN *) Thin, raised border
XBPDLG_RECESSEDBORDERTHICK Thick, recessed border
XBPDLG_RECESSEDBORDERTHIN *) Thin, recessed border
XBPDLG_RAISEDBORDERTHICK_FIXED Thick, raised border,
size can not be changed
XBPDLG_RAISEDBORDERTHIN_FIXED *) Thin, raised border,
size can not be changed
XBPDLG_RECESSEDBORDERTHICK_FIXED Thick, recessed border,
size can not be changed
XBPDLG_RECESSEDBORDERTHIN_FIXED *) Thin, recessed border,
size can not be changed
*) not supported by Windows **) Default border
FONT < cFont > sets the font for the text based display of
characters in the CRT window. < cFont > is a character expression
specifying the name of the font. The default value is
"Alaska CRT". It may also be a font object or a code block
that returns a character string or a font object to later
refresh with DC_GetRefresh().
If the requested font is not available, the font that provides
the "best fit" is installed.
FONTSIZE < nFW >,< nFH > is the Width and Height of the font.
< nFW > sets the width of characters output in text mode (such as
output by QOut() or @... SAY). The default value is 8. The font
width multiplied by the number of columns :maxCol+1 determines the
width of the CRT window on the screen. The calculation is
< nFW > * (:maxCol+1) == :xSize . The translation of text mode column
coordinates to graphic x coordinates is done using < nFW >.
< nFH > is used to set the font height for characters output in the
text mode (such as output by QOut() or @... SAY). The default
value is 16. The font height is multiplied by the number of
rows :maxRow+1 to determine the height of the CRT window on the
screen. The calculation used is < nFH > * (:maxRow + 1) == :ySize.
Translating row coordinates in the text mode to graphic y
coordinates is also performed using < nFH >.
NOTE: < nFW > and < nFH > are used to select a font with the
corresponding character width and height. This is done by the
methods :create() and :configure() . If the corresponding font is
not available, the font that provides the "best fit" is installed.
ACTION < bAction > is the program to run in the CRT window when
it is brought into focus. If the program is to be run in
another thread, then the THREAD < oThread > option must be used
to start the application immediately in a new thread. < oThread >
is the name of a local variable to store a reference to the
thread object.
COLOR < bncFgC >,< ncBgC >] is a default color to clear the CRT
application screen. The color string must conform to the colors
supported by SetColor().
CARGO < xCargo > is any kind of data you wish to to add to the
:cargo container for this object. The cargo may be accessed
at any time via the < oCrt >:cargo exported variable, however
it will not be stored in the same manner it is entered. The
:cargo container of DCDIALOG objects is an array of at least
two elements:
[1] - A numeric value that is a pointer to the Getlist array
for this object.
[2] - The value of < xCargo >.
[3] and up - optional values added by the GUI reader.
PREEVAL < bPreEval > is a code block to be evaluated by the GUI
reader before the Xbase Parts object is created. The object is
passed to the code block.
EVAL < bEval > is a code block to be evaluated by the GUI reader
after the Xbase Parts object is created. The object is passed
to the code block.
RELATIVE < oRel > is an optional object in the Getlist which
determines the start coordinates of this object. If this
option is used, then the < nRow >, < nCol > coordinates are
relative to the starting coordinates of < oRel > rather than
the parent object.
ID < cId > is a unique identifier for this object. This ID is used
with functions like DC_GETORIGUPDATED() to determine the status
of a get object.
HIDE < bHide > is a code block that is evaluated in the event loop.
This code block must return a logical value. If the value
returned is .TRUE. then the object will be hidden from view. If
the value returned is .FALSE. then the object will be displayed.
Description:
The command @..DCAPPCRT creates a new Application CRT object
and adds the object to the array named GETLIST which is later
processed by the DC_READGUI() function or by the DCREAD GUI
command. The GETLIST array must be first declared and
initialized to the value of {}. The command DCREAD GUI activates
the edit mode for all objects found in the GetList array.
A Getlist object remains stored as long as it is referenced
in an array or by a variable. The commands CLEAR and
CLEAR GETS assign an empty array to the GetList variable.
This also occurs after the completion of the DCREAD command
if it is called without the SAVE option, causing all Get
objects referenced by the GetList array to be released.
A DCAPPCRT object is based on the XbpCrt class which is the GUI
dialog used for applications partially programmed in text mode.
An XbpCrt object provides a dialog window for text based and
graphic oriented screen output. Using XbpCrt objects,
applications programmed for text mode can be transitioned into
pure PM applications in a stepwise. manner. An XbpCrt object
can display text output using functions such as QOut() or
DispOut() and can display Get data entry fields
(command @... SAY... GET). They can also include graphic dialog
elements such as those provided by objects of the XbpPushButton
and XbpMLE classes. XbpCrt objects create what are called
"hybrid" applications because they combine text and graphic
oriented screen output.
The DCAPPCRT object offers a straightforward way to transition
existing text mode applications into GUI applications which use
the eXPress++ dialog system. An existing CA-Clipper application
can run in an XbpCrt window after being compiled with Xbase++.
The program code can be changed to use Xbase Parts that provide
graphic dialog elements step by step as time permits.
@..DCAPPCRT objects can be combined with any objects that
that use the DCDIALOG system, such as @..DCSAY..GET,
@..DCRADIO, @..DCPUSHBUTTON or @..DCMULTILINE.
Notes:
The browse object created by @ DCAPPCRT is an object of the
XbpCrt() class, therefore it can be manipulated with
any iVar or method supported by XbpCrt().
Source/Library:
DCDIALOG.CH
@ DCBROWSE
Create a BROWSE object for displaying with GUI reader
Syntax:
@ < nRow >, < nCol > DCBROWSE < oBrowse > ;
[DATA < xData > [ELEMENT < nElement >] ] ;
[ALIAS < cAlias >] ;
[SIZE < nWidth > [,< nHeight >]] ;
[PARENT < oParent >] ;
[PARENTID < cParentId >] ;
[INTO < aVar >] ;
* [POINTER < nVar >] ;
* [DATALINK < bLink >] ;
* [PRESENTATION < aPres >] ;
* [CURSORMODE < nCursorMode >] ;
[COLOR < bncFgC > [,< ncBgC >] ] ;
[CARGO < xCargo >] ;
* [PIXEL] ;
[MESSAGE < bcMsg > [INTO < oMsgBox >]] ;
[HIDE < bHide >] ;
[WHEN < bWhen >] ;
* [RBSELECT] ;
[PREEVAL < bPreEval >] ;
[EVAL < bEval >] ;
[FONT < bocFont >] ;
* [EDIT < nEditEvent > ;
[ MODE < nEditMode >] ;
[ ACTION < bEditAction >] ;
[ EXIT < bEditExit > ] ] ;
* [INSERT < nInsertEvent > ;
[ INSMODE < nInsMode > ] ;
[ DEFAULT < abDefault >] ;
[ ACTION < bInsertAction >] ;
[ EXIT < bInserExit >] ] ;
[ APPEND < nAppendEvent >] [ APPMODE < nAppMode > ] ];
* [DELETE < nDeleteEvent > ;
[ ACTION < bDeleteAction >] ;
[ EXIT < bDeleteExit > ] ] ;
* [HANDLER < handler > [REFERENCE < xRef >]] ;
[RELATIVE < oRel >] ;
* [ITEMMARKED < bItemMarked >] ;
* [ITEMSELECTED < bItemSelected >] ;
* [MARK < nbMark >] ;
* [MKCOLOR < nbMarkEval >, < nMFgC > [,< nMBgC >] ] ;
[ID < cId >] ;
* [FREEZELEFT < aColLeft > ;
* [FREEZERIGHT < aColRight >] ;
* [ACCELKEY < nKey >] ;
* [GOTFOCUS < bGotFocus >] ;
* [LOSTFOCUS < bLostFocus >] ;
* [TABSTOP] ;
* [NOTABSTOP];
* [TABGROUP < nTabGroup >] ;
* [VISIBLE] ;
* [INVISIBLE] ;
[SCOPE] ;
* [THUMBLOCK < nRecords >] ;
* [NOVSCROLL] ;
* [NOHSCROLL] ;
* [NOSOFTTRACK] ;
* [NOSIZECOLS] ;
[GROUP < cGroup >] ;
* [HEADLINES < nHeaderLines > [DELIMITER < cHeadDelim >]] ;
* [FOOTLINES < nFooterLines > [DELIMITER < cFootDelim >]] ;
* [FIT] ;
* [OPTIMIZE] ;
[TITLE < cTitle >] ;
* [AUTOREFRESH < nTimer >] ;
[SORTSCOLOR < anSortedColorFG > [,< anSortedColorBG >] ];
[SORTUCOLOR < anUnSortedColorFG > [,< anUnSortedColorBG >] ] ;
[SORTUPBITMAP < nBitmapSortUp >] ;
[SORTDOWNBITMAP < nBitmapSortDown >] ;
[DESCENDING]
Arguments:
GUI applications:
< nRow >, < nCol > are the coordinates on the screen.
Coordinates are always relative to position 0,0 ie. Top,Left
of the parent object, unless the RELATIVE < oRel > argument is
used. If no parent is assigned, then the parent is the Dialog
box. IF the PIXEL option is set to .TRUE. in DCGETOPTIONS,
then the numbers are in pixels otherwise they are in standard
text-based coordinates. You can also force the pixel mode by
including PIXEL as a command argument.
HTML applications:
< nRow > and < nCol > are the row number and column number of
the table if the parent of this object is a DCTABLE. The
text will be inserted in the cell of the table defined by
the row/column.
< oBrowse > is the name of the variable to assign as a storage
place for this object.
RELATIVE < oRel > is an optional object in the Getlist which
determines the start coordinates of this object. If this
option is used, then the < nSrow >, < nSCol > coordinates are
relative to the starting coordinates of < oRel > rather than
the parent object.
ALIAS < cAlias > defines the browse as a database browse. < cAlias)
is a variable containing the alias of the database to browse.
or
DATA < aData > defines the browse as an array browse. < aData > is
a variable containing a pointer to the array to browse. ELEMENT
< nElement > is an optional clause defining the selected element of
< aData >. CAUTION: If a new array pointer is created that points
to a different array, then DC_GetBrowArray() must be used to
update the array pointer in the browse object.
SIZE < nWidth >,< nHeight > is the width and height of the
prompt. If the PIXEL option is set to .TRUE. in DCGETOPTIONS,
then the numbers are in pixels otherwise they are in standard
text-based numbers.
INTO < aVar > is a memory variable to store a sub-array. This clause
is used only when browsing arrays. Each time the user clicks on
a new row of the array browse, the sub-array selected will be
stored in < aVar >. < aVar > must be initialized to an array.
POINTER < nVar > is a memory variable to store the current array
element pointer. This clause is used only when browsing arrays.
Each time the user clicks on a new row of the array browse, the
browse row (element number) will be stored in < nVar >. < nVar >
must be initialized to a numeric value.
PARENT < oParent > is the name of the variable that was assigned to
the parent object for this object. Only use this clause if you
are placing this object onto another dialogue object. If this
argument is not passed then the parent will be the object set
with the DCSETPARENT command.
PARENTID < cParentID > may be used in lieu of the PARENT < oParent >
clause. This identifies the ID of the parent instead of the
parent's object variable name.
DATALINK < bDataLink > is an optional code block to evaluate
whenever the user double-clicks the mouse or presses the ENTER key
within the browse area. The browse object is passed as a
parameter to the code block.
FONT < cFont > is a character string defining an optional font.
The font string must conform to the Xbase++ standard, ie.
"10.Courier.Bold". It may also be a font object or a code block
that returns a character string or a font object to later
refresh with DC_GetRefresh().
EDIT < nEditEvent > is an optional clause that enables "cell-editing"
of the browse cells whenever a specified event occurs that is
associated with the browse object. < nEditEvent > is a numeric
value equivalent to an xbe* event or keyboard value which has
been defined in APPEVENT.CH. For example, cell editing will
occur within the selected cell when < nEditEvent > is equal to
xbeBRW_ItemSelected and the cell is selected with a mouse
double-click or the ENTER key is pressed. MODE < nEditMode > is
the navigation mode within the cells. < nEditMode > is a numeric
value from the following table:
< nEditMode > Description
----------- ------------------------------------
DCGUI_BROWSE_EDITEXIT Exit cell editing after ENTER key
DCGUI_BROWSE_EDITACROSS Move to next column after ENTER key
DCGUI_BROWSE_EDITDOWN Move to next row after ENTER key
DCGUI_BROWSE_EDITACROSSDOWN Move to next column after ENTER key
and move to next row at end of column
DCGUI_BROWSE_EDITACROSSDOWN_APPEND
Move to next column after ENTER key
and move to next row at end of column
Pressing ENTER at last row/last column
appends new element. Pressing DOWN
arrow key at last row appends new
element.
< bEditAction > is an optional code block that is evaluated before
the cells are edited. < bEditExit > is an optional code block that
is evaluated after the cells are edited. The browse object is
passed as a parameter to < bEditAction > and < bEditExit >.
INSERT < nInsertEvent > is an optional clause that enables the
inserting of an element into the array and editing the cell
items. < nInsertEvent > is a numeric value equivalent to an xbe*
event or keyboard value which has been defined in APPEVENT.CH.
For example, cell insertion will occur at the selected row of
the browse when < nEditEvent > is equal to xbeK_INS and the browse
is in focus and the INSERT key is pressed. < bInsertAction > is an
optional code block that is evaluated before a new element is
inserted in the array. < bInsertExit > is an optional code block
that is evaluated after exiting the cell editor. The Browse
Object is passed as a parameter when evaluating < bInsertAction >
and < bInsertExit >. INSMODE < nInsMode > is an additional optional
clause that can only be used with the INSERT clause. < nInsMode >
determines the behavior of insert mode.
< nInsMode > Description
----------- ------------------------------------
DCGUI_BROWSE_SUBMODE_1 Up/Down arrow keys are ignored.
Enter key on last column exits insert.
DCGUI_BROWSE_SUBMODE_2 Up/Down arrow key will move to previous
or next row respectively. If down arrow
pressed in last row, will append new
element.
APPEND < nAppendEvent > is an additional optional clause that can
only be used with the INSERT clause. < nAppendEvent > is a numeric
value equivalent to an xbe* event or keyboard value. This event
forces the insertion of the new element at the end of the array
rather than at the selected row. APPMODE < nAppMode > is an
additional optional clause that can only be used with the APPEND
clause. < nAppMode > determines the behavior of append mode.
< nAppMode > Description
----------- ------------------------------------
DCGUI_BROWSE_SUBMODE_1 Up/Down arrow keys are ignored.
Enter key on last column exits append.
DCGUI_BROWSE_SUBMODE_2 Up/Down arrow key will move to previous
or next row respectively. If down arrow
pressed in last row, will append new
element.
DELETE < nDeleteEvent > is an optional clause that enables the
deleting the current selected element (row) of an array or the
currently selected record. < nDeleteEvent > is a numeric value
equivalent to an xbe* event or keyboard value which has been
defined in APPEVENT.CH. For example, cell deletion will occur
at the selected row of the browse when < nEditEvent > is equal to
xbeK_DEL and the browse is in focus and the DELETE key is pressed.
< bDeleteAction > is an optional code-block that is evaluated before
the element is deleted. < bDeleteExit > is an optional code block
that is evaluated after the element is deleted. The Browse Object
is passed as a parameter when evaluating < bDeleteAction > and
< bDeleteExit >.
HANDLER < cEventHandler > is the name of a Function which points
to a custom event handler. The cell editor uses it's own, default
event handler to manage the objects during the running of the
program. The default event handler makes a call to the
custom event handler before processing it's default events.
The custom event handler uses Appevent() to get information
on the current event and passes the following parameters:
1. nEvent - The event type.
2. mp1 - The first event parameter.
3. mp2 - The second event parameter.
4. oXbp - A pointer to the object creating the event.
5. oDlg - A pointer to the main dialogue object.
6. aGetlist - A pointer to the GetList array.
7. aRef - A pointer to an optional Reference array.
The Function should look like this:
STATIC FUNCTION MyHandler ( nEvent, mp1, mp2, oXbp, oDlg,
aGetlist, aRef )
/* custom code */
RETURN DCGUI_NONE
The function must return a numeric value which controls the
behavior of the event loop as follows:
Return Value Behavior
------------ --------------------------------------------
DCGUI_NONE Continue processing the event
DCGUI_IGNORE Ignore event
DCGUI_CLEAR Ignore event and clear all events from queue
DCGUI_EXIT Exit the Cell editor
REFERENCE < aRef > is any array to pass to the custom event handler.
Programming dialogue systems that must manipulate many variables
is much simpler if all the variables are placed into a single
array and then passed to the dialogue system and its event
handler.
PRESENTATION < aPres > is a two-dimensional array. If specified,
this contains presentation parameters for the Browse object.
The first column of the array must contain #define constants
from the XBP.CH file starting with the prefix XBP_PP_. These
constants define the presentation parameters that can be set
for the object and include colors and fonts. The second column
of the array in < aPres > contains the value for each setting.
these are also generally set using #define constants from the
GRA.CH file.
CURSORMODE < nCursorMode > determines the browse cursor to be
displayed by the Browse object. #define constants from XBP.CH
must be used for this mode:
Constant Description
XBPBRW_CURSOR_NONE No visible cursor
XBPBRW_CURSOR_CELL Cell cursor (default)
XBPBRW_CURSOR_ROW Row cursor
PREEVAL < bPreEval > is a code block to be evaluated by the GUI
reader before the Xbase Parts object is created. The object is
passed to the code block.
EVAL < bEval > is a code block to be evaluated by the GUI reader
after the Xbase Parts object is created. The object is passed
to the code block.
CARGO < xCargo > is any kind of data you wish to to add to the
:cargo container for this object. The cargo may be accessed
at any time via the :cargo exported variable, however it will not
be stored in the same manner it is entered. The :cargo container
of DCDIALOG objects is an array of at least three elements:
[1] - A numeric value that is a pointer to the Getlist array
for this object.
[2] - A pointer to the GetList array.
[3] - The value of < xCargo >.
[4] and up - optional values added by the GUI reader.
COLOR < bncFGc >, < ncBGc > are foreground and background colors.
They may be character strings representing valid text-based
colors supported by SetColor() or they may be numeric constants
which begin with either the prefix GRA_CLR_ or the prefix
XBPSYSCLR_ as defined in GRA.CH or XBP.CH. IF < bncFGc > is a
code block is must return a 2-element array containing a
foreground and background color.
ITEMMARKED < bItemMarked > is a code block to evaluate when a data
row or a cell is highlighted in the browser. The code block
must be formatted as {| aRowCol, uNIL2, self | ... } where
< aRowCol > is a two-element array { nRowPos, nColPos } which
indicates the row and column position of the cell that is
clicked with the left mouse button.
ITEMSELECTED < bItemSelected > is a code block to evaluate when
a data row is selected with a double-click of the left mouse
button or by pressing the ENTER key in the browser. The code
block must be formatted as {| uNIL1, uNIL2, self | ... }.
MARK < nbMark > is a numeric value or a code block. A numeric
value is used to point to the array sub-element which contains
a logical value. When the mouse is double-clicked in a browse
column (item selected), the value in the sub-element is toggled
between .TRUE. and .FALSE. IF a code block is entered, then
a double-click will evaluate the code block. For example a
code block can be used to toggle the value of a logical field
in the selected record.
MKCOLOR < nbMarkEval > is an optional code block to evaluate
to display "marked" records or array elements. This code block
must return a LOGICAL value. When the value returned is .TRUE.,
the color of the entire row (all columns) is set to the < ncMFgC >
and < ncMBgC > colors. When the value returned is .FALSE., each
column in the row is displayed in the color established for that
individual row.
< ncMFgC >, < ncMBgC > are foreground and background colors that
are selected when < nbMarkEval > evaluates .TRUE. They may be
character strings representing valid text-based colors supported
by SetColor() or they may be numeric constants which begin with
either the prefix GRA_CLR_ or the prefix XBPSYSCLR_ as defined
in GRA.CH or XBP.CH.
ID < cId > is a unique identifier for this object. This ID is used
with functions like DC_GETORIGUPDATED() to determine the status
of a get object.
FREEZELEFT < aColsLeft > is an array of numeric values equal to
the position of the columns in the browse which should be frozen
at the left side of the browse window and prevented from
scrolling off the screen.
FREEZERIGHT < aColsRight > is an array of numeric values equal to
the position of the columns in the browse which should be frozen
at the right side of the browse window and prevented from
scrolling off the screen.
MESSAGE < bcMsg > is the message you want to display in the
message area of the dialogue screen defined by the DCMESSAGEBOX
command when the object is in focus. Optionally, INTO < oMsgBox >
will designate which message box to display the message into.
If the INTO clause is not used, then the last message box in the
GetList is the default. If < bcMsg > is a code-block, it must
return a character string.
HIDE < bHide > is a code block that is evaluated in the event loop.
This code block must return a logical value. If the value
returned is .TRUE. then the object will be hidden from view. If
the value returned is .FALSE. then the object will be displayed.
WHEN < bWhen > is a code block that is evaluated in the event loop.
This code block must return a logical value. If the value
returned is .FALSE. then the object will be disabled and grayed.
If the value returned is .TRUE. then the object will be enabled.
RBSELECT will cause the right button of the mouse to select a
browse cell in the same manner as the left button.
ACCELKEY < anAccel > is a numeric "hot-key" assignment that will set
focus to the checkbox object when the hot-key is pressed. The key
must be a valid key with the prefix xbeK_*. These keys are
defined in APPEVENT.CH. < anAccel > may also be an array of numeric
values to assign more than one key to the object.
GOTFOCUS < bGotFocus > is a code block that is evaluated when this
object receives input focus. < bGotFocus > := {|uNIL1,uNIL2,self|...}
LOSTFOCUS < bLostFocus > is a code block that is evaluated when this
object loses input focus. < bLostFocus > := {|uNIL1,uNIL2,self|...}
TABSTOP will cause the object (Xbase Part) to be set when using
the Tab key. Note: When logical groups are defined in a dialog
using TABGROUP < nTabGroup >, TABSTOP is usually set to .T. (true)
for the first dialog element in the group. This allows the first
dialog element of a group to be activated using the Tab key.
NOTABSTOP will cause the object (Xbase Part) to be ignored when
using the Tab key. This clause is needed only to override any
default setting of TabStop by the DCGETOPTIONS [TABSTOP] command.
TABGROUP < nTabGroup > allows objects (Xbase Parts) that are created
immediately after one another in the GetList to be combined into
logical groups. This allows the user to navigate within a dialog
from group to group by pressing the Tab key. Within a group of
dialog elements navigation is performed using the cursor keys.
Only constants defined in the XBP.CH file can be used as values
for this instance variable. The following table lists the
available constants:
#define constants for < nTabGroup >:
Constant Description
XBP_NO_GROUP *) Dialog element does not belong to a group
XBP_BEGIN_GROUP Dialog element is the first in a group
(this begins the definition of the group)
XBP_WITHIN_GROUP Dialog element is within a group
XBP_END_GROUP Dialog element is the last in a group
(this ends the definition of the group)
*) Default value
SCOPE is an optional argument that enables the browse to display only
the records that adhere to a previous scope that has been set by
DC_SetScope(). This feature utilizes the functions DC_dbGoTop(),
DC_dbGoBottom(), DC_dbSkipper(), DC_KeyCount() and DC_KeyNo() in the
navigation code blocks of the browse to stay in scope. In addition, the
vertical scrollbar will accurately show the record position within the
current scope.
If this argument is not used, the browse will utilize dbGoTop(),
dbGoBottom(), dbSkipper(), OrdKeyNo() and a modified RecCount() in the
navigation code blocks of the browse. These functions will disregard any
previous settings of DC_SetScope(). Additional filtering must be
accomplished by using SET FILTER or conditional indexes.
Note: When using the DBFNTX, DBFCDX or FOXCDX drivers,the eXPress++ scoping
system can slow performance therefore it is recommended that you do not use
it on large databases unless you also use the THUMBLOCK clause. The
eXPress++ scoping system has been designed for optimization, however, when
using third-party DBE's such as COMIX and Advantage Server and will
automatically detect that these drivers are being used. SCOPE also utilizes
the percentage method for determining the position of the scrollbar thumb by
using the DC_KeyNo() and DC_KeyCount() functions. If the database contains
more than 32000 records the thumb is scaled to compensate for the limitation
of the XbpScrollbar class to only 32k positions. DC_KeyNo() is enabled with
DC_KeyStat(.T.).
NOTE: If DC_KeyStat() is set to .FALSE. or a Filter is set on the
database, DC_KeyCount() will return a -1 thereby causing
the vertical scrollbar thumb to occupy the entire scroll
area. It is not possible to determine the key count
when a filter is set.
THUMBLOCK < nRecords > should be used on very large databases which are
indexed or on databases that have a filter. This option forces the
thumb to remain locked in the middle of the vertical scrollbar region
to prevent the user from forcing a skip request that can take a very
long time or to move to an incorrect record when a filter is set on
the database. If the database contains more than < nRecords > the
thumb will be locked however the user may still click above and below
the thumb for page up/page down respectively. The default is 32,000
records. NOTE: THUMBLOCK is ignored if the SCOPE clause is not used.
NOVSCROLL will suppress the vertical scroll bar.
NOHSCROLL will suppress the horizontal scroll bar.
NOSOFTTRACK will force movement of the scroll bars to automatically refresh
the browse while the bar is moving.
NOSIZECOLS will prevent the user from sizing columns.
VISIBLE determines whether the object is visible immediately after
the call to the method :create() . By default the object follows
the VISIBLE clause of the DCGETOPTIONS command. Use the
INVISIBLE clause to override the VISIBLE clause of DCGETOPTIONS
GROUP < cGroup > is a "group" name (case-sensitive) to assign to
this GetList object. Assignment to a group makes it possible to
perform operations only on GetList items which are members of a
specified group, using functions such as DC_GetRefresh() or
DC_ReadGui().
HEADLINES < nHeaderLines > is the number of lines (rows) to use
in the column headers. The default is 1. DELIMITER < cHeadDelim >
is the delimiter character(s) which are used to denote the start
of a new line in the HEADER clause of DCBROWSECOL. The default
delimiter is a semi-colon.
Example: DCBROWSECOL HEADER 'Street Address;City/State'
FOOTLINES < nFooterLines > is the number of lines (rows) to use
in the column footers. The default is 1. DELIMITER < cFootDelim >
is the delimiter character(s) which are used to denote the start
of a new line in the FOOTER clause of DCBROWSECOL. The default
delimiter is a semi-colon.
FIT will automatically size the WIDTH of the browse to the sum
of the widths of all the columns. CAUTION: this clause only
overrides the browse width, not the height. The SIZE clause must
still be used to set the browse height and width or a runtime error
will occur.
OPTIMIZE will enable a double-click in the header column to
resize the column to the optimum width so all items will fit in
the column with no truncated items. The OPTIMIZE clause will
only work when browsing an array.
TITLE < cTitle > is a title to assign to this object. The title
is not displayed on the screen but is simply a description of the
get object which is saved in the GetList.
AUTOREFRESH < nTimer > is used to set a timer event that automatically
refreshes the browse window (when it is visible) every
< nTimer >/100 seconds.
SORTSCOLOR < anSortedColorFG > [,< anSortedColorBG >] is used to set
the color of the column heading that is chosen as the controlling
sort order when click the mouse in the column heading. See the
SORT clause of DCBROWSECOL.
SORTUCOLOR < anUnSortedColorFG > [,< anUnSortedColorBG >] is used to
set the color of the column headings that are not the controlling
sort order.
SORTUPBITMAP < nBitmapSortUp > is used to set the bitmap that is used
in the column header of the sorted column when the controlling
order is "ascending".
SORTDOWNBITMAP < nBitmapSortDown > is used to set the bitmap that is used
in the column header of the sorted column when the controlling
order is "descending".
DESCENDING is used to set the controlling sort order to descending.
NOTE: The function DC_BrowseSort() is used to set the defaults
for the SORT* clauses.
Description:
The command @..DCBROWSE creates a new Browse definition and
adds it to the array named GETLIST which is later processed
by the DC_Read*() functions or by the DCREAD * commands.
The GETLIST array must be first declared and initialized to
the value of {}.
The command DCREAD GUI creates the DC_Xbp*() objects and
activates the edit mode for all definitions found in the
GetList array.
The command DCREAD HTML creates the DC_Html*() objects and
writes the HTML source code.
A Getlist object remains stored as long as it is referenced
in an array or by a variable. The commands CLEAR and
CLEAR GETS assign an empty array to the GetList variable.
This also occurs after the completion of the DCREAD command
if it is called without the SAVE option, causing all Get
objects referenced by the GetList array to be released.
A DCBROWSE object is a parent to DCBROWSECOL objects (the
columns of the browse). DCBROWSE is used to browse either
arrays or databases.
@..DCSAY..GET objects can be combined with any objects that
that use the DCDIALOG system, such as @..DCCHECKBOX,
@..DCRADIO, @..DCBUTTON, @..DCTABPAGE, @..DCTABLE or @..DCHTML*.
Notes:
Gui Applications :
The browse object created by @ DCBROWSE is an object of the
DC_XbpBrowse() class which inherits from the XbpBrowse()
class, therefore it can be manipulated with any iVar or
method supported by XbpBrowse().
The browse navigation system for arrays looks like this.
oXbp:skipBlock := {|n,o| SkipArray( n, o:cargo ) }
oXbp:goTopBlock := {|o| o:cargo[4] := 1 }
oXbp:goBottomBlock := {|o| o:cargo[4] := Len( o:cargo[5] ) }
oXbp:posBlock := {|o| o:cargo[4] }
oXbp:phyPosBlock := {|o| o:cargo[4] }
oXbp:lastPosBlock := {|o| Len( o:cargo[5] ) }
oXbp:firstPosBlock := {|| 1 }
The :cargo instance variable contains an array of pointers,
VALID, HIDE, WHEN and FREEZE information. When installing a custom
"skipper" system, use :cargo[3] as a complete cargo sub-system.
Here is the standard CARGO convention for all objects created by
DC_ReadGUI():
:cargo[1] is a pointer to the GetList number
:cargo[2] is a pointer to the Getlist array
:cargo[3] is USER-DEFINED cargo
:cargo[4] and up are reserved.
All custom skipper methods should use pointers in cargo[3]. A
custom skipper system would be installed after the objects were
created by DC_ReadGUI(). This can be accomplished by using the
EVAL clause in the DCREAD GUI command to call a user-defined
function.
Example:
oXbp:cargo[3] := Array(2)
oXbp:skipBlock := {|n,o| MySkipArray( n, o:cargo ) }
oXbp:goTopBlock := {|o| o:cargo[3,1] := 1 }
oXbp:goBottomBlock := {|o| o:cargo[3,1] := Len( o:cargo[3,2] ) }
oXbp:posBlock := {|o| o:cargo[3,1] }
oXbp:phyPosBlock := {|o| o:cargo[3,1] }
oXbp:lastPosBlock := {|o| Len( o:cargo[3,2] ) }
oXbp:firstPosBlock := {|| 1 }
/* ---------------------- */
STATIC FUNCTION MySkipArray( nWantSkip, aCargo )
LOCAL nDidSkip, nLastRec := Len( aCargo[3,2] )
IF aCargo[3,1] + nWantSkip <þ 1 // "BoF"
nDidSkip := 1 - aCargo[3,1]
ELSEIF aCargo[3,1] + nWantSkip þ> nLastRec // "EoF"
nDidSkip := nLastRec - aCargo[3,1]
ELSE
nDidSkip := nWantSkip
ENDIF
aCargo[3,1] += nDidSkip
RETURN nDidSkip
/* ------------------------- */
CAUTION: When overloading the Skipper system, you must also
overload the :itemSelected instance variable. The
default codeblock for :itemSelected refers to array
elements in :cargo which have been previously set-up
to work with the default Skipper. If the :cargo array
is modified, then a double-click on a browse column
will cause a runtime error.
------------------------------
HTML Applications :
The browse object created by @ DCBROWSE is an object of the
DC_HtmlBrowse() class.
Examples:
/*
This example demonstrates both a database browse and an
array browse in the same dialogue screen. The database
browse is on Tab Page 1 and the Array browse (directory
listing) is on Tab Page 2.
*/
#include "dcdialog.ch"
#include "xbp.ch"
PROCEDURE Xtest()
LOCAL GetList := {}, GetOptions, oTabPage1, oTabPage2, ;
oBrowse, cAlias, aDirectory, oDirectory
USE COLLECT NEW SHARED
/* ---- Tab Page #1 ---- */
@ 3,3 DCTABPAGE oTabPage1 CAPTION 'Browse' ;
SIZE 60,12
cAlias := "COLLECT"
@ 2,2 DCBROWSE oBrowse PARENT oTabPage1 ;
DATA cAlias SIZE 55,9 FREEZELEFT { 1, 2 }
DCBROWSECOL FIELD COLLECT->descrip ;
HEADER "Description" PARENT oBrowse
DCBROWSECOL FIELD COLLECT->type ;
HEADER "Type" PARENT oBrowse
DCBROWSECOL FIELD COLLECT->sub_type ;
HEADER "SubType" PARENT oBrowse
DCBROWSECOL FIELD COLLECT->location ;
HEADER "Location" PARENT oBrowse
DCBROWSECOL DATA {|a|a:={'Yes','No','Not Sure'},a[COLLECT->for_sale+1]} ;
HEADER "For Sale?" PARENT oBrowse
DCBROWSECOL FIELD COLLECT->date_orig ;
HEADER "Orig Date" PARENT oBrowse
DCBROWSECOL FIELD COLLECT->date_acqu ;
HEADER "Acqu Date" PARENT oBrowse
DCBROWSECOL FIELD COLLECT->orig_price ;
HEADER "Acqu Price" PARENT oBrowse
DCBROWSECOL FIELD COLLECT->appr_value ;
HEADER "Appr Value" PARENT oBrowse
DCBROWSECOL FIELD COLLECT->condition ;
HEADER "Condition" PARENT oBrowse
DCBROWSECOL DATA {||IIF(COLLECT->original,'Yes','No')} ;
HEADER "Orig Owner?" PARENT oBrowse
/* ---- Tab Page #2 ---- */
@ 0,0 DCTABPAGE oTabPage2 CAPTION 'Directory' ;
RELATIVE oTabPage1
aDirectory := Directory()
@ 2,2 DCBROWSE oDirectory PARENT oTabPage2 ;
DATA aDirectory SIZE 55,9
DCBROWSECOL ELEMENT 1 HEADER "Name" PARENT oDirectory WIDTH 10
DCBROWSECOL ELEMENT 2 HEADER "Size" PARENT oDirectory WIDTH 8
DCBROWSECOL ELEMENT 3 HEADER "Date" PARENT oDirectory WIDTH 8
DCBROWSECOL ELEMENT 4 HEADER "Time" PARENT oDirectory WIDTH 8
DCREAD GUI ;
TITLE "My COLLECTION" ;
FIT ;
ADDBUTTONS ;
EVAL {||oBrowse:hide(), oBrowse:show()}
RETURN
/*
This example demonstrates an array browse with source
written to HTML.
*/
FUNCTION XTest2()
LOCAL i, j, GetList[0], cHtml, oBrowse, aDir := Directory()
@ 0,0 DCBROWSE oBrowse SIZE 4,10 DATA aDir
DCBROWSECOL ELEMENT 1 HEADER 'File Name' PARENT oBrowse
DCBROWSECOL ELEMENT 2 HEADER 'File Size' PARENT oBrowse
DCBROWSECOL ELEMENT 3 HEADER 'File Date' PARENT oBrowse
DCBROWSECOL ELEMENT 4 HEADER 'File Time' PARENT oBrowse
DCREAD HTML TO cHtml
MemoWrit('TEST.HTM',cHtml)
RETURN nil
Source/Library:
DCDIALOG.CH
See Also:
DCBROWSECOL
dc_getbrowarray()
dc_browserow()
dc_htmlbrowse()
@ DCCHECKBOX
Create a CHECKBOX object for displaying with GUI reader
Syntax:
@ < nGetRow >,< nGetCol > DCCHECKBOX < uVar > ;
[DELIMVAR < cDelim >] ;
[PROMPT < bcPrompt >] ;
[PARENT < oParent >] ;
[PARENTID < cParentId >] ;
[DATALINK < bLink >] ;
[MESSAGE < bcMsg > [INTO < oMsgBox >]] ;
[COLOR < bncFgC > [,< ncBgC >] ] ;
[CARGO < xCargo >] ;
[WHEN < bWhen >] ;
[HIDE < bHide >] ;
[EDITPROTECT < bProtect >] ;
[FONT < bocFont >] ;
[SIZE < nWidth >,< nHeight >] ;
[PRESENTATION < aPres >] ;
[PIXEL] ;
[TOOLTIP < bcToolTip >] ;
[OBJECT < oObject >] ;
[CURSOR < naCursor >] ;
[PREEVAL < bPreEval >] ;
[EVAL < bEval,... >] ;
[RELATIVE < oRel >] ;
[ID < cId >] ;
[TITLE < cTitle >] ;
[ACCELKEY < anAccel >] ;
[GOTFOCUS < bGotFocus >] ;
[LOSTFOCUS < bLostFocus >] ;
[TABSTOP] ;
[NOTABSTOP] ;
[TABGROUP < nTabGroup >] ;
[VISIBLE] ;
[INVISIBLE] ;
[GROUP < cGroup >]
Arguments:
GUI applications:
< nRow > and < nCol > are the row and column of the screen.
Coordinates are always relative to position 0,0 ie. Top,Left
of the parent object, unless the RELATIVE < oRel > argument is
used. If no parent is assigned, then the parent is the Dialog
box. IF the PIXEL option is set to .TRUE. in DCGETOPTIONS,
then the numbers are in pixels otherwise they are in standard
text-based coordinates. You can also force the pixel
mode by including PIXEL as a command argument.
HTML applications:
< nRow > and < nCol > are the row number and column number of
the table if the parent of this object is a DCTABLE. The
text will be inserted in the cell of the table defined by
the row/column.
< lVar > is the variable to GET. This must be a initialized to
a logical value. It must not be a macro. The < lVar > is
automatically anchored via a Get-Set codeblock created by
DC_GetAnchorCB() unless < lVar > is a custom Get-Set code block.
Macros may be used in a custom Get-Set code block.
OBJECT < oObject > is the variable to use as a container for the
object after it is created by the GUI reader.
RELATIVE < oRel > is an optional object in the Getlist which
determines the start coordinates of this object. If this
option is used, then the < nSrow >, < nSCol > coordinates are
relative to the starting coordinates of < oRel > rather than
the parent object.
DELIMVAR < cDelim > is for text-based screens only and is
ignored when DC_GUI() is .TRUE. This is a three character
sequence to use for the checkbox - the default is (*).
PROMPT < bcPrompt > is the prompt to display immediately to
the right of the checkbox. It may be a character string or a
code block that returns a character string.
SIZE < nWidth >,< nHeight > is the width and height of the
prompt. If the PIXEL option is set to .TRUE. in DCGETOPTIONS,
then the numbers are in pixels otherwise they are in standard
text-based numbers.
MESSAGE < bcMsg > is the message you want to display in the
message area of the dialogue screen defined by the DCMESSAGEBOX
command when the object is in focus. Optionally, INTO < oMsgBox >
will designate which message box to display the message into.
If the INTO clause is not used, then the last message box in the
GetList is the default. < oMsgBox > may also be any object that
supports the :setCaption() method. If < bcMsg > is a code-block,
it must return a character string.
WHEN < bWhen > is a code block that is evaluated in the event loop.
This code block must return a logical value. If the value
returned is .FALSE. then the object will be disabled and grayed.
If the value returned is .TRUE. then the object will be enabled.
The object is passed as a parameter to the code block.
HIDE < bHide > is a code block that is evaluated in the event loop.
This code block must return a logical value. If the value
returned is .TRUE. then the object will be hidden from view. If
the value returned is .FALSE. then the object will be displayed.
The object is passed as a parameter to the code block.
EDITPROTECT < bProtect > is an optional condition tested during the
execution of the GUI gets by the DCREAD GUI command, before the
object receives input focus (before it is activated). When the
condition returns the value .T. (true), the object receives the
input focus. Otherwise, it is skipped. < bProtect > is a code
block that must return a logical value when evaluated. The code
block is evaluated prior to the object receiving input focus.
This clause behaves similar to the WHEN clause with the exception
that the object is not disabled (grayed out). The object is
passed as a parameter to the code block.
PARENT < oParent > is the name of the variable that was assigned to
the parent object for this object. Only use this clause if you
are placing this object onto another dialogue object. If this
argument is not passed then the parent will be the object set
with the DCSETPARENT command.
PARENTID < cParentID > may be used in lieu of the PARENT < oParent >
clause. This identifies the ID of the parent instead of the
parent's object variable name.
DATALINK < bLink > is an optional code block that is evaluated
every time Get/Set codeblock is evaluated, ie when the data
is read from the < uVar > into the object except when using
a user-defined Get/Set code block. < bLink > is also
evaluated when DC_GetRefresh() is called unless the < lDataLink >
parameter of DC_GetRefresh() is .FALSE.
FONT < cFont > is a character string defining an optional font.
The font string must conform to the Xbase++ standard, ie.
"10.Courier.Bold". It may also be a font object or a code block
that returns a character string or a font object to later
refresh with DC_GetRefresh().
PRESENTATION < aPres > is a two-dimensional array. If specified,
this contains presentation parameters for the CheckBox object.
The first column of the array must contain #define constants
from the XBP.CH file starting with the prefix XBP_PP_. These
constants define the presentation parameters that can be set
for the object and include colors and fonts. The second column
of the array in < aPres > contains the value for each setting.
These are also generally set using #define constants from the
GRA.CH file.
TOOLTIP < bcToolTip > is a character string which will display
as a "Tool Tip" next to the object when the cursor is passed
over the object. A semi-colon within the text indicates a new
line. If < bcToolTip > is a code-block, it must return a character
string. NOTE: The Tooltip painting method is run in another
thread, therefore the codeblock should not run code that points
to the current work area. It may however, contain local, public
or private variables.
CURSOR < naCursor > may be either a numeric value or an array of
3 elements which defines an optional mouse pointer to use for
this object. System mouse pointers start with
XBPWINDOW_POINTERTYPE_ and are defined in XPB.CH. The default
pointer is XBPWINDOW_POINTERTYPE_POINTER. < naCursor > may be a
numeric resource ID that points to a Bit-Map that has been
compiled with the resource compiler and linked to the .EXE.
< naCursor > may be a 3-element array described as follows:
Element Type Description
------- ---- ---------------------------------------------
[1] C Optional name of .DLL containing the pointer
resource.
[2] N The numeric resource ID of the pointer. If
element 1 is a NIL, then this resource must be
linked into the .EXE.
[3] N The type of resource as defined in XBP.CH.
PREEVAL < bPreEval > is a code block to be evaluated by the GUI
reader before the Xbase Parts object is created. The object is
passed to the code block.
EVAL < bEval > is a code block to be evaluated by the GUI reader
after the Xbase Parts object is created. The object is passed
to the code block.
COLOR < ncFGc >, < ncBGc > are foreground and background colors.
They may be character strings representing valid text-based
colors supported by SetColor() or they may be numeric constants
which begin with either the prefix GRA_CLR_ or the prefix
XBPSYSCLR_ as defined in GRA.CH or XBP.CH. IF < bncFGc > is a
code block is must return a 2-element array containing a
foreground and background color.
ID < cId > is a unique identifier for this object. This ID is used
with functions like DC_GETORIGUPDATED() to determine the status
of a get object.
CARGO < xCargo > is any kind of data you wish to to add to the
:cargo container for this object. The cargo may be accessed
at any time via the :cargo exported variable, however it will not
be stored in the same manner it is entered. The :cargo container
of DCDIALOG objects is an array of at least three elements:
[1] - A numeric value that is a pointer to the Getlist array
for this object.
[2] - A pointer to the GetList array.
[3] - The value of < xCargo >.
[4] and up - optional values added by the GUI reader.
TITLE < cTitle > is a title to assign to this object. The title
is not displayed on the screen but is simply a description of the
get object which is saved in the GetList.
ACCELKEY < anAccel > is a numeric "hot-key" assignment that will set
focus to the checkbox object when the hot-key is pressed. The key
must be a valid key with the prefix xbeK_*. These keys are
defined in APPEVENT.CH. < anAccel > may also be an array of numeric
values to assign more than one key to the object.
GOTFOCUS < bGotFocus > is a code block that is evaluated when this
object receives input focus. < bGotFocus > := {|uNIL1,uNIL2,self|...}
LOSTFOCUS < bLostFocus > is a code block that is evaluated when this
object loses input focus. < bLostFocus > := {|uNIL1,uNIL2,self|...}
TABSTOP will cause the object (Xbase Part) to be set when using
the Tab key. Note: When logical groups are defined in a dialog
using TABGROUP < nTabGroup >, TABSTOP is usually set to .T. (true)
for the first dialog element in the group. This allows the first
dialog element of a group to be activated using the Tab key.
NOTABSTOP will cause the object (Xbase Part) to be ignored when
using the Tab key. This clause is needed only to override any
default setting of TabStop by the DCGETOPTIONS [TABSTOP] command.
TABGROUP < nTabGroup > allows objects (Xbase Parts) that are created
immediately after one another in the GetList to be combined into
logical groups. This allows the user to navigate within a dialog
from group to group by pressing the Tab key. Within a group of
dialog elements navigation is performed using the cursor keys.
Only constants defined in the XBP.CH file can be used as values
for this instance variable. The following table lists the
available constants:
#define constants for < nTabGroup >:
Constant Description
XBP_NO_GROUP *) Dialog element does not belong to a group
XBP_BEGIN_GROUP Dialog element is the first in a group
(this begins the definition of the group)
XBP_WITHIN_GROUP Dialog element is within a group
XBP_END_GROUP Dialog element is the last in a group
(this ends the definition of the group)
*) Default value
GROUP < cGroup > is a "group" name (case-sensitive) to assign to
this GetList object. Assignment to a group makes it possible to
perform operations only on GetList items which are members of a
specified group, using functions such as DC_GetRefresh() or
DC_ReadGui().
VISIBLE determines whether the object is visible immediately after
the call to the method :create() . By default the object follows
the VISIBLE clause of the DCGETOPTIONS command. Use the
INVISIBLE clause to override the VISIBLE clause of DCGETOPTIONS
Description:
The command @..DCCHECKBOX creates a new Check Box definition
and it to the array named GETLIST which is later processed by
the DC_Read*() functions or by the DCREAD * commands. The
GETLIST array must be first declared and initialized to the
value of {}.
The command DCREAD GUI creates the DC_Xbp*() objects and
activates the edit mode for all definitions found in the
GetList array.
The command DCREAD HTML creates the DC_Html*() objects and
writes the HTML source code.
A Getlist object remains stored as long as it is referenced
in an array or by a variable. The commands CLEAR and
CLEAR GETS assign an empty array to the GetList variable.
This also occurs after the completion of the DCREAD command
if it is called without the SAVE option, causing all
objects referenced by the GetList array to be released.
@..DCCHECKBOX objects can be combined with any objects that
that use the DCDIALOG system, such as @..DCSAY..GET,
@..DCRADIO, @..DCTABLE, @..DCPUSHBUTTON or @..DCTABPAGE.
Notes:
GUI Applications :
The checkbox object created by @ DCCHECKBOX is an object of the
DC_XbpCheckBox() class which inherits from the XbpCheckBox()
class, therefore it can be manipulated with any iVar or method
supported by XbpCheckBox().
--------------------
HTML Applications :
The checkbox object created by @ DCCHECKBOX is an object
of the DC_HtmlCheckBox() class.
Examples:
/* (Simple Check Boxes in GUI) */
#include "dcdialog.ch"
PROCEDURE Xtest()
LOCAL lDict := .f., lSource := .t., lBackup := .f., ;
lPack := .t., GetList := {}
@ 5,10 DCCHECKBOX lDict PROMPT 'Save to Dictionary'
@ 5,40 DCCHECKBOX lSource PROMPT 'Save to Source Code'
@ 7,10 DCCHECKBOX lBackUp PROMPT 'Make a Backup file'
@ 7,40 DCCHECKBOX lPack PROMPT 'Pack the File'
DCREAD GUI FIT ADDBUTTONS
RETURN
/* Simple Checkboxes in HTML */
#include "dcdialog.ch"
#include "dchtml.ch"
FUNCTION Xtest()
LOCAL i, GetList[0], oForm, cHtml, oTable, lCheck1, lCheck2, lCheck3
DCFORM OBJECT oForm
DCTABLE OBJECT oTable PARENT oForm ROWS 3 COLUMNS 1
lCheck1 := .t.
lCheck2 := .f.
lCheck3 := .f.
@ 1,1 DCCHECKBOX lCheck1 PROMPT 'Check me first' PARENT oTable
@ 2,1 DCCHECKBOX lCheck2 PROMPT 'Check me second' PARENT oTable
@ 3,1 DCCHECKBOX lCheck3 PROMPT 'Check me third' PARENT oTable
DCREAD HTML TO cHtml
MemoWrit('TEST.HTM',cHtml)
RETURN cHtml
Source/Library:
DCDIALOG.CH I
See Also:
dc_htmlcheckbox()
dc_readgui()
dc_readhtml()
DCREAD GUI
DCREAD HTML
@ DCCOMBOBOX
Create a COMBOBOX object for displaying with GUI reader
Syntax:
@ < nRow >,< nCol > DCCOMBOBOX < uOutVar > LIST < aVar > ;
[TYPE < nType >] ;
[SIZE < nGetWidth > [,< nGetHeight >]] ;
[PIXEL] ;
[REFRESH] ;
[PARENT < oParent >] ;
[PARENTID < cParentId >] ;
[FONT < bocFont >] ;
[MESSAGE < bcMsg > [INTO < oMsgBox >]] ;
[WHEN < bWhen >] ;
[HIDE < bHide >] ;
[EDITPROTECT < bProtect >] ;
[VALID < bValid >] ;
[HELPCODE < cHelp >] ;
[PRESENTATION < aPres >] ;
[TOOLTIP < bcToolTip >] ;
[CURSOR < naCursor >] ;
[PREEVAL < bPreEval >] ;
[EVAL < bEval >] ;
[DATALINK < bLink >] ;
[OBJECT < oObject >] ;
[RELATIVE < oRel >] ;
[CARGO < xCargo >] ;
[COLOR < bncFgC > [,< ncBgC >] ] ;
[ID < cId >] ;
[TITLE < cTitle >] ;
[ACCELKEY < anAccel >] ;
[GOTFOCUS < bGotFocus >] ;
[LOSTFOCUS < bLostFocus >] ;
[TABSTOP] ;
[NOTABSTOP] ;
[TABGROUP < nTabGroup >] ;
[VISIBLE] ;
[INVISIBLE] ;
[GROUP < cGroup >
Arguments:
GUI applications:
< nRow > and < nCol > are the row and column of the screen.
Coordinates are always relative to position 0,0 ie. Top,Left
of the parent object, unless the RELATIVE argument is used.
If no parent is assigned, then the parent is the Dialog box.
IF the PIXEL option is set to .TRUE. in DCGETOPTIONS, then
the numbers are in pixels otherwise they are in standard
text-based coordinates. You can also force the pixel
mode by including PIXEL as a command argument.
HTML applications:
< nRow > and < nCol > are the row number and column number of
the table if the parent of this object is a DCTABLE. The
text will be inserted in the cell of the table defined by
the row/column.
< aVar > is a single-dimensional array of character strings
which is used as the list box of items.
< cOutVar > is the input/output variable. This should be
initialized to a character string. It must not be a macro,
however it may be a code block that contains a macro. The < uVar >
is automatically anchored via a Get-Set codeblock created by
DC_GetAnchorCB() unless < uVar > is a custom Get-Set code block.
TYPE < nType > is a numeric constant which is defined in the XBP.CH
file and are listed in the following table:
Constant Description
XBPCOMBO_SIMPLE List box is always dropped down
XBPCOMBO_DROPDOWN *) List box dropped down via a mouse click
XBPCOMBO_DROPDOWNLIST List box dropped down via a mouse click
and keyboard input in the entry field is
not allowed
*) Default value
SIZE < nWidth >,< nHeight > is the width and height of the
combobox. If the PIXEL option is set to .TRUE. in DCGETOPTIONS,
then the numbers are in pixels otherwise they are in standard
text-based numbers. Note: The height value determines the total
height of the combo box including the pull-down listbox.
PARENT < oParent > is the name of the variable that was assigned to
the parent object for this object. Only use this clause if you
are placing this object onto another dialogue object. If this
argument is not passed then the parent will be the object set
with the DCSETPARENT command.
PARENTID < cParentID > may be used in lieu of the PARENT < oParent >
clause. This identifies the ID of the parent instead of the
parent's object variable name.
REFRESH will force a refresh of the GetList each time an item is
chosen from the pick-list. Use this clause if other objects in
the GetList contain a WHEN or HIDE clause which is dependent on
the value picked.
OBJECT < oObject > is the variable to use as a container for the
object after it is created by the GUI reader.
FONT < cFont > is a character string defining an optional font.
The font string must conform to the Xbase++ standard, ie.
"10.Courier.Bold". It may also be a font object or a code block
that returns a character string or a font object to later
refresh with DC_GetRefresh().
MESSAGE < bcMsg > is the message you want to display in the
message area of the dialogue screen defined by the DCMESSAGEBOX
command when the object is in focus. Optionally, INTO < oMsgBox >
will designate which message box to display the message into.
If the INTO clause is not used, then the last message box in the
GetList is the default. < oMsgBox > may also be any object that
supports the :setCaption() method. < bcMsg > may be a code block
that returns a character value.
WHEN < bWhen > is a code block that is evaluated in the event loop.
This code block must return a logical value. If the value
returned is .FALSE. then the object will be disabled and grayed.
If the value returned is .TRUE. then the object will be enabled.
The object is passed as a parameter to the code block.
HIDE < bHide > is a code block that is evaluated in the event loop.
This code block must return a logical value. If the value
returned is .TRUE. then the object will be hidden from view. If
the value returned is .FALSE. then the object will be displayed.
the object is passed as a parameter to the code block.
EDITPROTECT < bProtect > is an optional condition tested during the
execution of the GUI gets by the DCREAD GUI command, before the
object receives input focus (before it is activated). When the
condition returns the value .T. (true), the object receives the
input focus. Otherwise, it is skipped. < bProtect > is a code
block that must return a logical value when evaluated. The code
block is evaluated prior to the object receiving input focus.
This clause behaves similar to the WHEN clause with the exception
that the object is not disabled (grayed out). The object is
passed as a parameter to the code block.
VALID < bValid > is an optional condition tested during the
execution of the GUI gets by the READ command before a Get
object loses input focus (before it is deactivated). When
the condition returns the value .T. (true), the Get object
loses the input focus. Otherwise, it remains active. < bValid >
is a code block that must return a logical value when it is
evaluated. The object passed as a parameter to the code block.
HELPCODE < cHelp > is a character string that is passed to the
DC_HelpF1() function if F1 is pressed or the HELP button
is clicked when this GET has focus. This HELPCODE allows
the Help system to override the passing of the Procedure and
Varname for more specific context-help.
PRESENTATION < aPres > is a two-dimensional array. If specified,
this contains presentation parameters for the ComboBox object.
The first column of the array must contain #define constants
from the XBP.CH file starting with the prefix XBP_PP_. These
constants define the presentation parameters that can be set
for the object and include colors and fonts. The second column
of the array in < aPres > contains the value for each setting.
These are also generally set using #define constants from the
GRA.CH file.
TOOLTIP < bcToolTip > is a character string which will display
as a "Tool Tip" next to the object when the cursor is passed
over the object. A semi-colon within the text indicates a new
line. If < bcToolTip > is a code-block, it must return a character
string. NOTE: The Tooltip painting method is run in another
thread, therefore the codeblock should not run code that points
to the current work area. It may however, contain local, public
or private variables.
CURSOR < naCursor > may be either a numeric value or an array of
3 elements which defines an optional mouse pointer to use for
this object. System mouse pointers start with
XBPWINDOW_POINTERTYPE_ and are defined in XPB.CH. The default
pointer is XBPWINDOW_POINTERTYPE_POINTER. < naCursor > may be a
numeric resource ID that points to a Bit-Map that has been
compiled with the resource compiler and linked to the .EXE.
< naCursor > may be a 3-element array described as follows:
Element Type Description
------- ---- ---------------------------------------------
[1] C Optional name of .DLL containing the pointer
resource.
[