C5 GET Class

Overview

     Provides objects for interactive editing of database fields and variables

Description

     A Get object is a general purpose mechanism for editing data.  It is
     used in CA-Clipper to implement the @...GET and READ commands.  Get
     objects provide a sophisticated architecture for formatting and editing
     data, including cursor navigation and data validation.  Data validation
     is performed via user-supplied code blocks, and display formatting can
     be controlled using standard picture strings.

     Normally, a Get object is associated with a particular variable
     (referred to as the Get variable).  The Get object does not directly
     access this variable; instead, the variable is manipulated by evaluating
     a supplied code block.  When a Get object is created using the standard
     @...GET command, a code block is automatically created which provides
     access to the variable named in the command.  For a Get object created
     with the GetNew() function, you must specify an appropriate code block.

     A Get object evaluates the supplied code block to retrieve the value of
     the Get variable.  The value is converted to displayable form and copied
     into a buffer referred to as the editing buffer.  You can display the
     editing buffer on the screen for editing.  Programmable behaviors allow
     the navigation of the editing buffer and subsequent copying of its
     contents back to the Get variable.

 Examples

     .  This example creates a new Get object, assigns some new
        attributes to its instance variables, then edits the Get with the
        READMODAL() function:

        LOCAL cVar := SPACE(10)
        //

        // Create a new Get object
        objGet := GetNew()
        //

        // Assign some instance variables
        objGet:row := 10
        objGet:col := 10
        //

        // Assign the name of the associated
        // variable and the block
        objGet:name := "cVar"
        objGet:block := { |cValue| IF(PCOUNT() > 0,;
                           cVar := cValue, cVar) }
        //
        objGet:picture := "@!"
        objGet:colorSpec := "BG+/B, W+/BG"
        objGet:postBlock := { |oGet| !EMPTY(oGet:varGet()) }
        //

        // Edit the single Get object
        READMODAL({objGet})

 Files:  Source file is Getsys.prg.


Class Function

     GetNew()        Create a new Get object
     GetNew([<nRow>], [<nCol>], [<bBlock>], [<cVarName>],
        [<cPicture>], [<cColorSpec>]) --> objGet

        Returns a new Get object with the row, col, block, picture, and
        colorSpec instance variables set from the supplied arguments.

More ...

See Also: @…GET READ READMODAL() READVAR() SETCOLOR()

 

C5 UI – GET Class

C5 UI – GET Class

Class Function :

GetNew() : Create a new Get object

     GetNew([<nRow>], [<nCol>], [<bBlock>], [<cVarName>],
        [<cPicture>], [<cColorSpec>]) --> objGet

Returns a new Get object with the row, col, block, picture, and colorSpec instance variables set from the supplied arguments.

Exported Instance Variables :

badDate : Indicates if the editing buffer contains an invalid date

Contains a logical value indicating the editing buffer does not represent a valid date. Get:badDate contains true (.T.) when the Get object is a date type and the date represented by the contents of the editing buffer is invalid. Get:badDate contains false (.F.) when the  date is valid or the Get is not editing a date value.

block : Code block to associate Get with a variable  (Assignable)

Contains a code block that associates the Get object with a variable.  The code block takes an optional argument that should assign the value of the argument to the variable. If the argument is omitted,  the code block should return the current value of the variable.

If the Get variable is an array element, Get:block always returns the base of the array. The subscript(s) in the expression are stored    internally. Thus, in the case of GETs on array elements, you cannot assign or retrieve the value of the array element by executing Get:block. Setting and getting may be done on array element GET  variables (and simple GET variables as well) by use of the varGet() and varPut() methods, defined below.

Note: Use of the varGet and varPut messages–instead of directly     evaluating the variable block in the get–is the preferred method of     accessing the Get variable.

buffer : Character value that defines the editing buffer  (Assignable)

Contains a character value which is the editing buffer used by the Get object. Get:buffer is meaningful only when the Get object has     input focus. At other times, it contains NIL and any attempts to     assign a new value are ignored.

cargo : User-definable variable  (Assignable)

Contains a value of any data type unused by the Get system. Get:cargo  is provided as a user-definable slot, allowing arbitrary information  to be attached to a Get object and retrieved later.

changed : Indicates whether the Get:buffer has changed

Contains a logical value indicating whether the Get:buffer has     changed since the Get received input focus. Get:changed contains true (.T.) if the buffer has changed; otherwise it contains false   (.F.)

clear : Indicates whether the editing buffer should be cleared  (Assignable)

Contains a logical value indicating whether the editing buffer should be cleared before any more values are entered. Get:clear is set true  (.T.) by Get:setFocus() and Get:undo() when the Get variable is a   numeric type or when Get:picture contains the “@K” picture function.   At all other times, it contains false (.F.).

col : Get column number (Assignable)

Contains a numeric value defining the screen column where the Get is  displayed.

colorSpec : Display attributes string (Assignable)

Contains a character string defining the display attributes for the Get object. The string must contain two color specifiers. The first, called the unselected color, determines the color of the Get object when it does not have input focus. The second, called the selected     color, determines the color of the Get when it has input focus.

If no colors are specified, Get:colorSpec is initialized using the  current SETCOLOR() colors. The SETCOLOR() unselected and enhanced  colors are used as the Get object’s unselected and selected colors, respectively. See the SETCOLOR() entry in this chapter for more   information on color specifiers.

decPos : Decimal point position within the editing buffer

Contains a numeric value indicating the decimal point position within the editing buffer. Get:decPos is meaningful only when the value  being edited is numeric and the Get object has input focus.  Otherwise, it contains NIL.

exitState : Means by which the user exited the Get  (Assignable)

Contains a numeric value used in the Clipper version of Getsys.prg to record the means by which a Get object was exited.

Get Exit States
———————————————————————
  # Getexit.ch      Meaning
———————————————————————
0   GE_NOEXIT    No exit attempted, prepare Get for editing
1   GE_UP               Go to previous Get
2   GE_DOWN       Go to next Get
3   GE_TOP            Go to first Get
4   GE_BOTTOM Go to last Get
5   GE_ENTER     Get edit normal end
6   GE_WRITE     Terminate READ state with Get save
7   GE_ESCAPE  Terminate READ state without Get save
8   GE_WHEN      WHEN clause unsatisfied
———————————————————————

Getexit.ch contains manifest constants for the Get:exitState values.

hasFocus : Indicates whether or not the Get object has input focus

Contains a logical value that indicates if the Get object has input focus. Get:hasFocus contains true (.T.) if the Get object has input focus; otherwise it contains false (.F.).

minus : Indicates whether or not a minus sign has been entered (Assignable)

Contains a logical value indicating that a minus sign (-) has been  added to the editing buffer. Get:minus is set to true (.T.) only when the Get object is numeric type, the current value of the editing  buffer is zero and the last change to the editing buffer was the addition of the minus sign. It is cleared when any change is made to the buffer.

name : Get variable name (Assignable)

Contains a character string representing the name of the Get  variable. This value is optional and can be assigned at your  discretion. With Get objects created using the standard @…GET  command, Get:name always contains the Get variable name.

The Get object itself ignores this variable. It is used by the  standard READ command and READMODAL() function to implement the READVAR() function (see the READVAR() entry in this chapter).

original : Character string containing the original value of the Get

Contains a value of any data type that is a copy of the value in the Get variable at the time the Get object acquired input focus. This value implements the Get:undo message. Get:original is meaningful only while the Get has input focus. At all other times, it contains NIL.

picture : PICTURE string (Assignable)

Contains a character value defining the PICTURE string that controls formatting and editing for the Get object. See the @…GET entry in this chapter for more information on PICTURE strings.

pos : Current cursor position within the editing buffer

Contains a numeric value indicating the position of the cursor within the editing buffer. Get:pos is meaningful only when the Get object has input focus. At all other times, it contains NIL.

postBlock : Code block to validate a newly entered value (Assignable)

Contains an optional code block that validates a newly entered value.  If present, the Get:postBlock should contain an expression that  evaluates to true (.T.) for a legal value and false (.F.) for an  illegal value. For Get objects created with the standard  @…GET…VALID command, Get:postBlock is assigned the expression  specified in the VALID clause.

The Get object itself ignores this variable. It is used by the  standard READ command to implement the VALID clause.  During postvalidation the Get:postBlock is passed a reference to the  current Get object as an argument.

Note: This differs from the any other behavior where the  Get:postBlock was passed the updated value of the Get variable,  and a logical value representing whether the Get object had been  edited.

preBlock : Code block to decide if editing is permitted (Assignable)

Contains an optional code block that decides whether editing should be permitted. If present, the Get:preBlock should evaluate to true (.T.) if the cursor enters the editing buffer; otherwise, it should evaluate to false (.F.). For Get objects created with the standard @…GET…WHEN command, Get:preBlock is initialized with the expression specified in the WHEN clause.

The Get object itself ignores this variable. It is used by the standard READ command to implement the WHEN clause. During prevalidation, the Get:preBlock is passed a reference to the current Get object as an argument.

Note: This behavior differs from any other where no arguments were passed to Get:preBlock when it was run during prevalidation.

reader : Contains a block to affect READ behavior on a Get object

Contains a code block to implement special READ behaviors for any Get. If Get:reader contains a code block, READMODAL() evaluates that block to READ the Get (the Get object is passed as an argument to the block). The block may in turn call any desired function to provide custom editing of the Get object. If Get:reader does not contain a code block, READMODAL() uses a default read procedure (GetReader()) for the Get object.

Note that Get:reader allows particular Get objects to have specialized READ behaviors without changing the standard READMODAL() function. This preserves compatibility for Gets which are to be handled in the customary way and also eliminates potential conflicts between different extensions to the GET/READ system.

rejected : Indicates if last insert/overStrike character was rejected

Contains a logical value indicating whether the last character specified by a Get:insert or Get:overStrike message was placed in the editing buffer. Get:rejected contains true (.T.) if the last character was rejected; otherwise it contains false (.F.). Note that any subsequent text entry message resets this variable.

row : Get row number (Assignable)

Contains a numeric value defining the screen row where the Get  displays.

subscript : Information about array Get objects . (Assignable)

Contains an array of numeric values representing the subscripts of a  GET array element. Each element of Get:subscript represents a  dimension of the GET array. For example:

 @ 1,1 GET aTestA[4]    // Get:subscript contains {4}
 @ 1,1 GET aTestB[3,6]  // Get:subscript contains {3,6}

If the GET does not involve an array, Get:subscript contains NIL.

type : Get variable data type

Contains a single letter representing the data type of the Get variable. For more information on the values that represent data types, refer to the VALTYPE() entry in this chapter.

typeOut : Indicates attempt to move the cursor out of editing buffer

Contains a logical value indicating whether the most recent message attempted to move the cursor out of the editing buffer, or if there are no editable positions in the buffer. Get:typeOut contains true (.T.) if the last message satisfied this condition. Note, Get:typeOut is reset by any message that moves the cursor.

Exported Methods :

State Change Methods :

assign() : Assigns the editing buffer contents to the Get variable

assign() --> self

Assigns the value in the editing buffer to the Get variable by evaluating 
Get:block  with the buffer value supplied as its argument. This message is meaningful only when the Get object has input focus.

colorDisp() : Changes a Get object’s color and then redisplay it

colorDisp([<cColorString>]) --> self

Get:colorDisp() is a method that changes a Get object’s colors and redisplays it. It is exactly equivalent to assigning Get:colorSpec and issuing Get:display().

display() : Displays the Get on the screen .

display() --> self

Displays the Get on the screen. If the Get object has input focus, the Get:buffer is displayed in its selected color and the cursor is placed at the screen location corresponding to the current editing position within the buffer. If the Get does not have input focus, the Get:block is evaluated and the result displays in the Get unselected color with no cursor.

killFocus() : Takes input focus away from the Get object

killFocus() --> self

Takes input focus away from the Get object. Upon receiving this message, the Get object redisplays its editing buffer and discards its internal state information.

reset() : Resets the internal state information of the Get

reset() --> self

Resets the Get object’s internal state information. This includes resetting the editing buffer to reflect the current value of the Get variable and setting the cursor position to the first editable position within the buffer. This message has meaning only when the Get object has input focus.

setFocus() : Gives input focus to the Get object

setFocus() --> self

Gives input focus to the Get object. Upon receiving this message, the Get object creates and initializes its internal state information, including the exported instance variables: Get:buffer, Get:pos, Get:decPos, and Get:original. The contents of the editing buffer are then displayed in the Get’s selected color.

undo() : Sets the Get variable back to Get:original

undo() --> self

Sets the Get variable back to the value it had when the Get acquired input focus. This message has meaning only while the Get has input focus.

The effect of the Get:undo() message is equivalent to assigning the Get variable from the saved value in Get:original then sending the Get:reset() message.

unTransform() : Converts character value to its original data type

unTransform() --> xValue

Converts the character value in the editing buffer back to the data type of the original variable. Get:assign() is equivalent to Get:varPut (Get:unTransform()).

updateBuffer() : Updates the editing buffer and redisplays the Get

updateBuffer() --> self

Sets the editing buffer to reflect the current value of the Get variable, and redisplays the Get. This message has meaning only while the Get has input focus.

varGet() : Returns the current value of the Get variable

varGet() --> GetVarValue

Returns the current value of the Get variable. For simple Get variables this is equivalent to executing Get:block:

aGet:varGet() == EVAL(aGet:block)

However, if the Get variable is an array element, EVAL(aGet:block) will not return the value of the Get variable; in this case, you must use varGet(). An example of varGet() may be found in the READMODAL() function, defined in Getsys.prg.

varPut() : Sets the Get variable to the passed value

varPut() --> Value

Sets the Get variable to the passed value. For simple Get variables this is equivalent to executing Get:block with an argument:

aGet:varPut(aValue) == EVAL(aGet:block, aValue)

However, if the Get variable is an array element, EVAL(aGet:block, aValue) will not set the value of the Get variable; in this case use of varPut() is required.

Cursor Movement Methods :

end() : Moves the cursor to the rightmost position

end() --> self

Moves the cursor to the rightmost editable position within the editing buffer.

home() : Moves the cursor to the leftmost position

home() --> self

Moves the cursor to the leftmost editable position within the editing buffer.

left() : Moves the cursor left one character

left() --> self

Moves the cursor left to the nearest editable position within the editing buffer. If there is no editable position to the left, the cursor position is left unchanged.

right() : Moves the cursor right one character

right() --> self

Moves the cursor right to the nearest editable position within the editing buffer. If there is no editable position to the right, the cursor position is left unchanged.

toDecPos() : Moves the cursor to the immediate right of Get:decPos

toDecPos() --> self

Moves the cursor to the immediate right of the decimal point position in the editing buffer. This message is only meaningful when editing numeric values.

wordLeft() : Moves the cursor left one word

wordLeft() --> self

Moves the cursor one word to the left within the editing buffer. If the cursor is already at the leftmost editable position, it is left unchanged

wordRight() : Moves the cursor right one word

wordRight() --> self

Moves the cursor one word to the right within the editing buffer. If the cursor is already at the rightmost editable position, it is left unchanged.

Editing Methods :

backspace() : Moves the cursor to the left and deletes one character

backspace() --> self

Deletes the character to the left of the cursor moving the cursor one position to the left. If the cursor is already at the leftmost editable position in the editing buffer, this message has no effect.

delete() : Deletes the character under the cursor

delete() --> self

Deletes the character under the cursor.

delEnd() : Deletes from current cursor position to the end of the Get

delEnd() --> self

Deletes from the current character position to the end of the Get, inclusive.

delLeft() : Deletes the character to the left of the cursor

delLeft() --> self

Deletes the character to the left of the cursor.

delRight() : Deletes the character to the right of the cursor

delRight() --> self

Deletes the character to the right of the cursor.

delWordLeft() : Deletes the word to the left of the cursor

delWordLeft() --> self

Deletes the word to the left of the cursor.

delWordRight() : Deletes the word to the right of the cursor

delWordRight() --> self

Deletes the word to the right of the cursor.

Text Entry Methods :

insert() : Inserts characters into the editing buffer

insert(<cChar>) --> self

Inserts <cChar> into the editing buffer at the current cursor position, shifting the existing contents of the buffer to the right. The cursor is then placed one position to the right of the inserted string.

overStrike() : Overwrites characters in the editing buffer

overStrike(<cChar>) --> self

Puts <cChar> into the editing buffer at the current cursor position, overwriting the existing contents of the buffer. The cursor is placed one position to the right of the inserted string.

C5 UI Commands & Functions

C5 User Interface Commands and Functions

Global Settings :

SET CENTURY :

Modify the date format to include or omit century digits

SET CENTURY on | OFF | <xlToggle>

SET COLOR* :

Define screen colors

SET COLOR | COLOUR TO [[<standard>]
    [,<enhanced>] [,<border>] [,<background>]
    [,<unselected>]] | (<cColorString>)

SET CONFIRM :

Toggle required exit key to terminate GETs

SET CONFIRM on | OFF | <xlToggle>

SET CONSOLE :

Toggle console display to the screen

SET CONSOLE ON | off | <xlToggle>

SET CURSOR :

Toggle the screen cursor on or off

SET CURSOR ON | off | <xlToggle>

SET DATE :

Set the date format for input and display

SET DATE FORMAT [TO] <cDateFormat>
SET DATE [TO] AMERICAN | ansi | british | french
    | german | italian | japan | usa

SET DECIMALS :

Set the number of decimal places displayed

SET DECIMALS TO [<nDecimals>]

SET DELIMITERS :

Toggle or define GET delimiters

SET DELIMITERS on | OFF | <xlToggle>
SET DELIMITERS TO [<cDelimiters> | DEFAULT]

SET DEVICE :

Direct @…SAYs to the screen or printer

SET DEVICE TO SCREEN | printer

SET EPOCH :

Control the interpretation of dates with no century digits

SET EPOCH TO <nYear>

SET FIXED :

Toggle fixing of the number of decimal digits displayed

SET FIXED on | OFF | <xlToggle>

SETBLINK() :

Toggle asterisk (*) interpretation in SET COLOR

SETBLINK([<lToggle>]) --> lCurrentSetting

SETCOLOR() :

Return the current colors and optionally set new colors

SETCOLOR([<cColorString>]) --> cColorString

SETCURSOR() :

Set the cursor shape

SETCURSOR([<nCursorShape>]) --> nCurrentSetting

SETMODE() :

Change display mode to specified number of rows and columns

SETMODE(<nRows>, <nCols>) --> lSuccess

SETPOS() :

Move the cursor to a new position

SETPOS(<nRow>, <nCol>) --> NIL

User Input :

CLEAR TYPEAHEAD :

Empty the keyboard buffer

CLEAR TYPEAHEAD

INKEY() :

Extract a character from the keyboard buffer

 
INKEY( [ <nSeconds> ] ) --> nInkeyCode

KEYBOARD :

Stuff a string into the keyboard buffer

KEYBOARD <cString>

LASTKEY() :

Return the INKEY() value of the last key in the buffer

LASTKEY() --> nInkeyCode

NEXTKEY() :

Read the pending key in the keyboard buffer

NEXTKEY() --> nInkeyCode

SET TYPEAHEAD :

Set the size of the keyboard buffer

SET TYPEAHEAD TO <nKeyboardSize>

Basic :

?/?? :

Display one or more values to the console

? | ?? [<exp list>]

@…BOX :

Draw a box on the screen

@ <nTop>, <nLeft>, <nBottom>, <nRight>
  BOX <cBoxString> [COLOR <cColorString>]

@…CLEAR :

Clear a rectangular region of the screen

@ <nTop>, <nLeft> [CLEAR
  [TO <nBottom>, <nRight>]]

@…SAY :

Display data at a specified screen or printer row and column

@ <nRow>, <nCol>
    [SAY <exp>
    [PICTURE <cSayPicture>]
    [COLOR <cColorString>]]
    GET <idVar>
    [PICTURE <cGetPicture>]
    [COLOR <cColorString>]
    [WHEN <lPreExpression>]
    [RANGE* <dnLower>, <dnUpper>] |
    [VALID <lPostExpression>]

@…TO :

Draw a single or double line box

@ <nTop>, <nLeft>
    TO <nBottom>, <nRight> [DOUBLE] [COLOR
    <cColorString>]

ACCEPT :

Place keyboard input into a memory variable

ACCEPT [<expPrompt>] TO <idVar>

INPUT :

Enter the result of an expression into a variable

INPUT [<expPrompt>] TO <idVar>

 

ALERT() :

Display a simple modal dialog box

ALERT( <cMessage>, [<aOptions>] ) --> nChoice

CLEAR SCREEN :

Clear the screen and home the cursor

CLEAR [SCREEN] | CLS

COL() :

Return the screen cursor column position

COL() --> nCol

COLORSELECT()

                Activate attribute in current color settings

   COLORSELECT(<nColorIndex>) --> NIL

DEVOUT() :

Write a value to the current device

DEVOUT(<exp>, [<cColorString>]) --> NIL

DEVOUTPICT() :

Write a value to the current device using a picture clause

DEVOUTPICT(<exp>, <cPicture>, [<cColorString>]) --> NIL

           DEVPOS() :

Move the cursor or printhead to a new position depending on the

current device

        DEVPOS(<nRow>, <nCol>) --> NIL

DISPBEGIN() :

Begin buffering screen output

DISPBEGIN() --> NIL

DISPBOX() :

Display a box on the screen

DISPBOX(<nTop>, <nLeft>, <nBottom>, <nRight>,
    [<cnBoxString>], [<cColorString>]) --> NIL

DISPCOUNT() :

Return the number of pending DISPEND() requests

DISPCOUNT() --> nDispCount

DISPEND() :

Display buffered screen updates

DISPEND() --> NIL

DISPOUT() :

Write a value to the display

DISPOUT(<exp>, [<cColorString>]) --> NIL

OUTERR() :

Write a list of values to the standard error device

OUTERR(<exp list>) --> NIL

OUTSTD() :

Write a list of values to the standard output device

OUTSTD(<exp list>) --> NIL

QOUT() :

Display a list of expressions to the console

QOUT([<exp list>]) --> NIL
QQOUT([<exp list>]) --> NIL

RESTORE SCREEN* :

Display a saved screen

RESTORE SCREEN [FROM <cScreen>]

RESTSCREEN() :

Display a saved screen region to a specified location

RESTSCREEN([<nTop>], [<nLeft>],
    [<nBottom>], [<nRight>], <cScreen>) --> NIL

ROW() :

Return the screen row position of the cursor

ROW() --> nRow

SAVE SCREEN* :

Save current screen to a buffer or variable

SAVE SCREEN [TO <idVar>]

SAVESCREEN() :

Save a screen region for later display

SAVESCREEN([<nTop>], [<nLeft>],
    [<nBottom>], [<nRight>]) --> cScreen

SCROLL() :

Scroll a screen region up or down

SCROLL([<nTop>], [<nLeft>],
     [<nBottom>], [<nRight>], [<nVert>] [<nHoriz>])
 --> NIL

TYPE :

Display or print the contents of a text file

TYPE <xcFile> [TO PRINTER] [TO FILE <xcOutFile>]

Advanced :

ACHOICE() :

Execute a pop-up menu

ACHOICE(<nTop>, <nLeft>, <nBottom>, <nRight>,
    <acMenuItems>,
    [<alSelectableItems> | <lSelectableItems>],
    [<cUserFunction>],
    [<nInitialItem>],
    [<nWindowRow>]) --> nPosition

BROWSE()* :

Browse records within a window

BROWSE([<nTop>], [<nLeft>],
    [<nBottom>], [<nRight>]) --> lSuccess

DBEDIT() :

Browse records in a table format

DBEDIT( [<nTop>], [<nLeft>],
    [<nBottom>], <nRight>],
    [<acColumns>],
    [<cUserFunction>],
    [<acColumnSayPictures> | <cColumnSayPicture>],
    [<acColumnHeaders> | <cColumnHeader>],
    [<acHeadingSeparators> | <cHeadingSeparator>],
    [<acColumnSeparators> | <cColumnSeparator>],
    [<acFootingSeparators> | <cFootingSeparator>],
    [<acColumnFootings> | <cColumnFooting>]) --> NIL

DISPLAY :

Display records to the console

DISPLAY <exp list>
    [TO PRINTER] [TO FILE <xcFile>]
    [<scope>] [WHILE <lCondition>]
    [FOR <lCondition>] [OFF]

LIST :

List records to the console

LIST <exp list>
    [TO PRINTER] [TO FILE <xcFile>]
    [<scope>] [WHILE <lCondition>]
    [FOR <lCondition>] [OFF]

LABEL FORM :

Display labels to the console

LABEL FORM <xcLabel>
    [TO PRINTER] [TO FILE <xcFile>] [NOCONSOLE]
    [<scope>] [WHILE <lCondition>] [FOR <lCondition>]
    [SAMPLE]

REPORT FORM :

Display a report to the console

REPORT FORM <xcReport>
    [TO PRINTER] [TO FILE <xcFile>] [NOCONSOLE]
    [<scope>] [WHILE <lCondition>] [FOR <lCondition>]
    [PLAIN | HEADING <cHeading>] [NOEJECT] [SUMMARY]

TEXT :

Display a literal block of text

TEXT [TO PRINTER] [TO FILE <xcFile>]
    <text>...
ENDTEXT

GET System :

Standard :

@…GET :

Create a new Get object and display it on the screen

@ <nRow>, <nCol>
    [SAY <exp>
    [PICTURE <cSayPicture>]
    [COLOR <cColorString>]]
    GET <idVar>
    [PICTURE <cGetPicture>]
    [COLOR <cColorString>]
    [WHEN <lPreExpression>]
    [RANGE* <dnLower>, <dnUpper>] |
    [VALID <lPostExpression>]

CLEAR GETS :

Release Get objects from the current GetList array

CLEAR GETS

READ :

Activate full-screen editing mode using Get objects

READ [SAVE]

READEXIT() :

Toggle Uparrow and Downarrow as READ exit keys

READEXIT([<lToggle>]) --> lCurrentState

READINSERT() :

Toggle the current insert mode for READ and MEMOEDIT()

READINSERT([<lToggle>]) --> lCurrentMode

READKEY()* :

Determine what key was used to terminate a READ

READKEY() --> nReadkeyCode

READMODAL() :

Activate a full-screen editing mode for a GetList

READMODAL(<aGetList>) --> NIL

READVAR() :

Return the current GET/MENU variable name

READVAR() --> cVarName

SET ESCAPE :

Toggle Esc as a READ exit key

SET ESCAPE ON | off | <xlToggle>

SET FORMAT :

Activate a format when READ is executed

SET FORMAT TO [<idProcedure>[.<ext>]]

SET INTENSITY :

Toggle enhanced display of GETs and PROMPTs

SET INTENSITY ON | off | <xlToggle>

SET SCOREBOARD :

Toggle the message display from READ or MEMOEDIT()

SET SCOREBOARD ON | off | <xlToggle>

UPDATED() :

Determine if any GET changed during a READ

UPDATED() --> lChange

Getsys.prg Functions :

GETACTIVE() :

Return the currently active Get object

GETACTIVE() --> objGet

GETAPPLYKEY() :

Apply a key to a Get object from within a Get reader

GETAPPLYKEY(<oGet>, <nKey>) --> NIL

GETDOSETKEY() :

Process SET KEY during Get editing

GETDOSETKEY(<oGet>) --> NIL

GETPOSTVALIDATE() :

Postvalidate the current Get object

GETPOSTVALIDATE(<oGet>) --> lSuccess

GETPREVALIDATE() :

Prevalidate a Get object

GETPREVALIDATE(<oGet>) --> lSuccess

GETREADER() :

Execute standard READ behavior for a Get object

GETREADER(<oGet>) --> NIL

READFORMAT() :

Return, and optionally set, the format file code block

READFORMAT([<bFormat>]) --> bCurrentFormat

READKILL() :

Return, and optionally set, the READ terminate flag

READKILL([<lKillRead>]) --> lCurrentSetting

READUPDATED() :

Return, and optionally set, whether a Get changed

READUPDATED([<lChanged>]) --> lCurrentSetting

GET Class :

Class Function :

GetNew() : Create a new Get object

Exported Instance Variables :

badDate : Indicates if the editing buffer contains an invalid date
block : Code block to associate Get with a variable
buffer : Character value that defines the editing buffer
cargo : User-definable variable
changed : Indicates whether the Get:buffer has changed
clear : Indicates whether the editing buffer should be cleared
col : Get column number
colorSpec : Display attributes string
decPos : Decimal point position within the editing buffer
exitState : Means by which the user exited the Get
hasFocus : Indicates whether or not the Get object has input focus
minus : Indicates whether or not a minus sign has been entered
name : Get variable name
original : Character string containing the original value of the Get
picture : PICTURE string
pos : Current cursor position within the editing buffer
postBlock : Code block to validate a newly entered value
preBlock : Code block to decide if editing is permitted
reader : Contains a block to affect READ behavior on a Get object
rejected : Indicates if last insert/overStrike character was rejected
row : Get row number
subscript : Information about array Get objects .
type : Get variable data type
typeOut : Indicates attempt to move the cursor out of editing buffer

Exported Methods :

State Change Methods :

assign() : Assigns the editing buffer contents to the Get variable
colorDisp() : Changes a Get object’s color and then redisplay it
display() : Displays the Get on the screen .
killFocus() : Takes input focus away from the Get object
reset() : Resets the internal state information of the Get
setFocus() : Gives input focus to the Get object
undo() : Sets the Get variable back to Get:original
unTransform() : Converts character value to its original data type
updateBuffer() : Updates the editing buffer and redisplays the Get
varGet() : Returns the current value of the Get variable
varPut() : Sets the Get variable to the passed value

Cursor Movement Methods :

end() : Moves the cursor to the rightmost position
home() : Moves the cursor to the leftmost position
left() : Moves the cursor left one character
right() : Moves the cursor right one character
toDecPos() : Moves the cursor to the immediate right of Get:decPos
wordLeft() : Moves the cursor left one word
wordRight() : Moves the cursor right one word

Editing Methods :

backspace() : Moves the cursor to the left and deletes one character
delete() : Deletes the character under the cursor
delEnd() : Deletes from current cursor position to the end of the Get
delLeft() : Deletes the character to the left of the cursor
delRight() : Deletes the character to the right of the cursor
delWordLeft() : Deletes the word to the left of the cursor
delWordRight() : Deletes the word to the right of the cursor

Text Entry Methods :

insert() : Inserts characters into the editing buffer
overStrike() : Overwrites characters in the editing buffer

Menu System :

@…PROMPT :

Paint a menu item and define a message

@ <nRow>, <nCol> PROMPT <cMenuItem>
     [MESSAGE <cExpression>]

MENU TO :

Execute a lightbar menu for defined PROMPTs

     MENU TO <idVar>

          MENUMODAL :

Activate a top bar menu

         MENUMODAL(<oTopBar>, <nSelection>, <nMsgRow>,
             <nMsgLeft>, <nMsgRight>, <cMsgColor>) --> MenuID

SET MESSAGE :

Set the @…PROMPT message line row

SET MESSAGE TO [<nRow> [CENTER | CENTRE]]

SET INTENSITY :

Toggle enhanced display of GETs and PROMPTs

SET INTENSITY ON | off | <xlToggle>

SET WRAP :

Toggle wrapping of the highlights in MENUs

SET WRAP on | OFF | <xlToggle>

Browse Classes :

TBrowse :

Provides objects for browsing table-oriented data.

Description :

A TBrowse object is a general purpose browsing mechanism for table-oriented data. TBrowse objects provide a sophisticated architecture for acquiring, formatting, and displaying data. Data retrieval and file positioning are performed via user-supplied code blocks, allowing a high degree of flexibility and interaction between the browsing mechanism and the underlying data source. The format of individual data items can be precisely controlled via the TBColumn data retrieval code blocks; overall display formatting and attributes can be controlled by sending appropriate messages to the TBrowse object.

A TBrowse object relies on one or more TBColumn objects. A TBColumn object contains the information necessary to define a single column of the browse table (see TBColumn class in this chapter).

During operation, a TBrowse object retrieves data by evaluating code blocks. The data is organized into rows and columns and displayed within a specified rectangular region of the screen. The TBrowse object maintains an internal browse cursor. The data item on which the browse cursor rests is displayed in a highlighted color. (The actual screen cursor is also positioned to the first character of this data item.)

Initially, the browse cursor is placed on the data item at the top left of the browse display. Messages can then be sent to the TBrowse object to navigate the displayed data, causing the browse cursor to move. These messages are normally sent in response to user keystrokes.

New data is automatically retrieved as required by navigation requests. When navigation proceeds past the edge of the visible rectangle, rows or columns beyond that edge are automatically brought into view. When new rows are brought into view, the underlying data source is repositioned by evaluating a code block.

Note: TBrowse objects do not clear the entire window before output during redisplay operations. Part of the window may still be cleared when data from the existing display is scrolled.

Class Functions :

TBrowseNew() :

Create a new TBrowse object

 TBrowseNew(<nTop>, <nLeft>, <nBottom>, <nRight>)
 --> objTBrowse

Returns a new TBrowse object with the specified coordinate settings. The TBrowse object is created with no columns and no code blocks for data positioning. These must be provided before the TBrowse object can be used.

TBrowseDB() :

Create a new TBrowse object for browsing a database file

 TBrowseDB(<nTop>, <nLeft>, <nBottom>, <nRight>)
 --> objTBrowse

Returns a new TBrowse object with the specified coordinate settings and default code blocks for data source positioning within database files. The default code blocks execute the GO TOP, GO BOTTOM, and SKIP operations.

Note that TBrowseDB() creates an object with no column objects. To make the TBrowse object usable, you must add a column for each field to be displayed

Exported Instance Variables:

autoLite : Logical value to control highlighting
cargo : User-definable variable
colCount : Number of browse columns
colorSpec : Color table for the TBrowse display
colPos : Current cursor column position
colSep : Column separator character
footSep : Footing separator character
freeze : Number of columns to freeze
goBottomBlock : Code block executed by TBrowse:goBottom()
goTopBlock : Code block executed by TBrowse:goTop()
headSep : Heading separator character
hitBottom : Indicates the end of available data
hitTop : Indicates the beginning of available data
leftVisible : Indicates position of leftmost unfrozen column in display
nBottom : Bottom row number for the TBrowse display
nLeft : Leftmost column for the TBrowse display
nRight : Rightmost column for the TBrowse display
nTop : Top row number for the TBrowse display
rightVisible : Indicates position of rightmost unfrozen column in display
rowCount : Number of visible data rows in the TBrowse display
rowPos : Current cursor row position
skipBlock : Code block used to reposition data source
stable : Indicates if the TBrowse object is stable

Exported Methods:

Cursor Movement Methods :

down() : Moves the cursor down one row
end() : Moves the cursor to the rightmost visible data column
goBottom() : Repositions the data source to the bottom of file
goTop() : Repositions the data source to the top of file
home() : Moves the cursor to the leftmost visible data column
left() : Moves the cursor left one column
pageDown() : Repositions the data source downward
pageUp() : Repositions the data source upward
panEnd() : Moves the cursor to the rightmost data column
panHome() : Moves the cursor to the leftmost visible data column
panLeft() : Pans left without changing the cursor position
panRight() : Pans right without changing the cursor position
right() : Moves the cursor right one column
up() : Moves the cursor up one row

Miscellaneous Methods :

addColumn() : Adds a TBColumn object to the TBrowse object
colorRect() : Alters the color of a rectangular group of cells
colWidth() : Returns the display width of a particular column
configure() : Reconfigures the internal settings of the TBrowse object
deHilite() : Dehighlights the current cell
delColumn() : Delete a column object from a browse
forceStable() : Performs a full stabilization .
getColumn() : Gets a specific TBColumn object
hilite() : Highlights the current cell
insColumn() : Insert a column object in a browse
invalidate() : Forces redraw during next stabilization
refreshAll() : Causes all data to be refreshed during the next stabilize
refreshCurrent() : Causes the current row to be refreshed on next stabilize
setColumn() : Replaces one TBColumn object with another
stabilize() : Performs incremental stabilization

TBColumn :

Provides the column objects TBrowse objects.

Description :

A TBColumn object is a simple object containing the information needed to fully define one data column of a TBrowse object (see the TBrowse reference in this chapter). TBColumn objects have no methods, only exported instance variables.

Class Function :

TBColumnNew() :

Create a new TBColumn object.

TBColumnNew(<cHeading>, <bBlock>) --> objTBColumn

Exported Instance Variables :

block : Code block to retrieve data for the column
cargo : User-definable variable
colorBlock : Code block that determines color of data items
colSep : Column separator character
defColor : Array of numeric indexes into the color table
footing : Column footing
footSep : Footing separator character
heading : Column heading
headSep : Heading separator character
width : Column display width

Example :

This example is a code fragment that creates a TBrowse object and adds some TBColumn objects to it:

USE Customer NEW
//
// Create a new TBrowse object
objBrowse := TBrowseDB(1, 1, 23, 79)
//
// Create some new TBColumn objects and
// add them to the TBrowse object
objBrowse:addColumn(TBColumnNew( "Customer", ;
                    {|| Customer->Name} ))
objBrowse:addColumn(TBColumnNew( "Address", ;
                    {|| Customer->Address} ))
objBrowse:addColumn(TBColumnNew( "City", ;
                    {|| Customer->City} ))
.
. <statements to actually browse the data>
.
CLOSE Customer

For a simple and working sample look at here.