Construct_Object(integer img)
- Integer
Batch_State - Integer
Static_State - Integer
Init_From_Top_State - integer
Initial_Rowdflt refresh row
- integer
Initial_Columndflt refresh col
- Integer
Auto_Index_State - Integer
Read_Only_State - Integer
No_Relate_Stateoptimizer. Non_DS only
- boolean
pbReverseOrderingThis is the current index direction. If true, index is reversed
- Boolean
pbUseServerOrderingIf True, the DDO server is use if the DDO exists and it specifies an ordering. You usually set the
DDO ordering when you have constraints and you always want the optimal index. In such a case
it makes sense that the dbList or dbGrid should use this optimal index.
This is set false for historical reasons. True is actually a better setting.
- integer
private.Main_File - integer
pbPrivateOrderingindex order - private.. use ordering
- integer
Changing_Stateinternal
- integer
Line_Display_Stateinternal
- Integer
No_refresh_Stateinternal.optimizer
- Integer
Disable_No_refresh_StateThis disables no_refresh_state. This property is internal and
will probably go away (along the no_refresh_state)
don't mess with this
- Integer
Item_Index_stateinternal
- Integer
Find_Modeinternal non-ds
- integer
piLastDisplayableRows - oRecords : array
oRowIds stores the RowIds of each row. oRecords stores the status of each row. The status can be:
rsNewAtTop (-2), rsNewAtBottom (-1), rsCleared (0), or "active" >0 (1 if RowKey table, rencum is recnum table)
The pre-rowId table use a single array to store the record number and the status. To maintain compatibility we
oRecords will continue to do this if the table supports recnum. This means that any update in oRowIds must also
properly update oRecords. And, if the table is recnum based with a record, the record must be stored. Our of our
packages pay no attention the recnum value - we just look at status where >0 is the same as "Active". If a developer
happens to use the records for some purpose, their app will still work (but is should be changed). The old public messages
to use records is get/set record_number and get/set current_record. The get versions work, the set versions will generate
an error because you are probably trying to update the record array without updating the rowid array.
this used to be records. By changing the name, we will see any errors (messages sent to this private object)
- oRowIds : cRowIdArray
set(integer newval)
- INTEGER
Main_File()
- Integer
retval - Integer
obj#
Activating()
internal
as of 15.1 we changed all deactivating/activating signatures to not return values (see windows.pkg / ComboForm / Activating for more)
Returns Integer
- Integer
retval - Integer
srvr# - Integer
ordr# - Integer
Col# - Integer
i
Set(Integer row# RowID riNewval)
NOTE: Although Set record_rowId, Set RecordStatus, Set CurrentRowId and Set CurrentRecordStatus are all public
they should be used *very* carefully. A row is defined by its RowId and it's status. If you chnange one
your probably want to change both. RecordStatus also is overloaded for historical purposes. If the table is
is a recnum table it contains a recnum or a 0, top or bottom. If rowId it contains 1 or 0, top bottom.
If you mess with these methods you must handle this properly. Look at procedure display_row to see how this is done.
In general, you should never need to use these set messages. They are very low level and make it easy to break things.
- RowId
Record_RowId(integer row#)
set(integer row# integer newval)
- integer
RecordStatus(integer row#)
- RowId
CurrentRowId()
SET(RowId NewVal)
SET(integer iNewVal)
- Boolean
CurrentRowHasRecord()
returns true if current row has a RowId
- Boolean
RowHasRecord(integer iRow)
- boolean
IsRecnumTable(integer iFile)
- Boolean
bRecnumTable
display_row(integer row#)
note also sets base_Item and record_rowId
- Integer
oldlinedisp - Integer
iRec
clear_row(integer row#)
invoked by append_blank_row and insert_blank_row
- Integer
oldLDS
Insert_Row(integer row#)
insert row before specified row#
Insert_new_row(integer row#)
insert & display row before specified row#
Add_Row()
add row at end of item list
- Integer
iRow
append_new_row()
add row at end of item list & display
append_blank_row()
add blank row at end of item list
insert_blank_row(integer row#)
Delete_row(integer row#)
remove given row#
- Integer
lim - Integer
baseItem - Integer
counter - Integer
width - Integer
Dyn#
- Integer
Fill_next_row(Integer Row#)
Function: Fill_next_Row
Pass: Row# - The record for this row MUST be rsNewAtBottom or rsNewAtTop
-1 = find down, -2 = find up.
Return: 1 if found. if rsNewAtBottom or rsNewAtTop it is not found
New record and related in buffer
- Integer
lastRow - Integer
mode - Integer
Rec# - Integer
OldRec# - RowId
riOldRec
Down_Row()
- Integer
toitem - Integer
Lim - Integer
DynUpdt
Up_Row()
- Integer
toitem - Integer
Lim - Integer
OldDynUpdt
Beginning_of_Panel()
End_of_Panel()
Trim_Page()
force to fit within visible table
- Integer
Count - Integer
Drows - Integer
OldChg
Scroll(integer dir integer dist)
- Integer
retval - Integer
dynUpdt
- integer
Virtual_Scroll(Integer Direction Integer Dist)
private: only used by non-batch lists
- RowId
riCRrec - RowId
riRec - Integer
Col# - Integer
Row# - Integer
Dest_row# - Integer
Rowsadded - Integer
dRows - Integer
OldChg - Integer
Dyn#
empty_list()
created to empty list item data (aug'd by SelList)
Delete_Data()
- Integer
obj#
Clear()
created for Server support
notification of clear-record
Clear_All()
created for Server support
notification of clear-set
- Integer
oldDynUpdt
Display()
use of lineDisplayState is required because the list sends its Server
msgs Clear and Find when it only wants to affect the current row
- Integer
Row# - Integer
Col#
display_Line()
- Integer
oldDisp
Clear_Set()
created for Server support
notification of derived clear
Refresh_Page(integer Row# integer Col#)
Public:
refresh page will refresh the screen both up and down. Based on
the contents of the active record buffer.
This allows for proper multi-user refreshes
- Integer
C#
Fill_Page(integer Row# integer Col#)
Internal
Fill list around Row# Col# based on the current active record buffer
- Integer
hServer
- Integer
Load_Page(Integer Row#)
Load_Page: Load page starting at row#.
Internal
Pass: Row# to load from. MUST have starting record in buffer
Returns: The records new row (in case it got adjusted).
Will relocate if the top is not filled.
Note that the record is not in the buffer any more.
- Integer
dynUpdt - Integer
oldChg - Integer
dRows - Integer
whocares - Integer
BS - Integer
RowsAdded - RowId
riRec
- integer
Add_Rows(integer direction Integer NumRows)
Add_Rows: Load records into table
very internal
Pass: Direction and number of rows to add (to top or bottom).
Current top or bottom record must be in buffer.
Returns: number of rows actually added.
- Integer
mode - Integer
RowsAdded - Integer
BS
New_Entry_Set()
- integer
Row_Changing(integer from# integer to#)
Assume the From# comes pre-loaded with its current record
return with current record for the returned item (to#)
- Integer
lim - Integer
toRow - Integer
fromrow - Integer
dynUpdt - Integer
top - Integer
rec# - RowId
riRec - Integer
iOldCurrentItem - Integer
iOldTo - Integer
bToMoved - Integer
iRet
- integer
Item_Change(Integer iFromItem Integer iToItem)
- Integer
retval - Integer
t_Col# - Integer
newval
- Boolean
ServerOrderingOverride()
This returns true if the ordering should come from the DDO. This only
happens if the pbUseServerOrdering is T and there is a server with an
ordering property. If T, the ordering property will return the DDOs ordering.
Important: If DDO has no Ordering (it usually does not), this returns false indicating
that the ordering for the list is provided by the list
- Integer
hoServer
Reorder_list(Integer iNewCol)
Public: Reorder_list
Assign Index and refresh screen based.
Parameter: iNewCol is optional, if not passed use current column
If bacth or if the DDO controls the ordering, nothing happens
- Integer
iIndex - Integer
iRow - Integer
iCol - Integer
iItem - Integer
iNewOrder
Request_New_Index(Integer iIndex)
Set index to idex number iIndex and refresh.
- Integer
Col_Index(Integer Item#)
Function Col_Index public
return the best Index for this column or -1 if no choice is good
This is useful for override and augmentation. When the Auto_Reorder_List
message is invoked as part of iEntry this gets called. If we override it
we can do some custom selections for a choice of index.
- Integer
iFile - Integer
iField - Integer
fldNdx - Integer
mainfile - Integer
mainNdx - Integer
Ele - Integer
Itm
Fill_List()
Beg_End_Data(Integer Direction Integer NoSave)
Internal:
Fill from top or bottom of the table based on dir
If the table is empty then we will use the Initial_Column as our column.
If the table has lines. we use the current column position.
- Integer
rowcount - Integer
Newish - Integer
Col# - Integer
Lim
Beginning_of_Data(Integer NoSave)
- Integer
Ns
End_of_Data(Integer NoSave)
- Integer
Ns
Initialize_List()
Internal: for override
- Integer
rowCount - Integer
srvr - RowId
riRec
- integer
Item_Matching(string sSearch integer iItem)
This was changed in 8.1 to better handle incremental searches with non-bacth lists.
- Integer
hoServer - Integer
iFile - Integer
iField - Integer
iIndex - Integer
iMain - RowId
riRecord - Integer
iCol - Integer
iLen - Integer
iNewItem - Boolean
bFound - String
sLookStr - String
sSt
Scan_Servers()
Find_Current_Buffer()
Find_Current_Buffer: Public Message
find record that matches the record buffer, Current record should
be inactive --- Forces load buffer record..does not notify others.
Move_to_Column(Integer Col#)
Public:
Move to the selected column...
Find_RowId(RowId riRec)
Refind & relate the record in rec# by Main_file
Display_Other_UI()
--------------------------------------------------------------------
All record finding handled by these routines
--------------------------------------------------------------------
Procedure Display_UI
Procedure Display_Other_UI
Procedure Read_by_Recnum record
Procedure Establish_Find_Mode find_mode
Procedure Read_Next_Record
Procedure Find_Init Direction
Procedure Clear_Current_Record
Function File_record Returns Record
display other UI objects. If server only do this if the
deferred_state to false (also do a request assign).
if no server this is idea for override
JJT- Modify to never set no_refresh_state to true.
This was an optimzation that never should have
happened. By disabling this, display_other_ui acts exactly like
display_ui. So, this message might go away in the future.
- Integer
Old_RS
Display_UI()
display all UI objects. If server only do this if the
deferred_state to false (also do a request assign).
if no server just do the one object
- JJT Don't send request_assign if already assigned
- JJT Pass main_file with request_assign
- Integer
Srvr# - Integer
OldDisp - Integer
No_refrsh - Integer
mFile - Integer
row#
ReadByRowId(RowId riRec)
- Integer
srvr# - Integer
file#
- integer
FindMode(integer mode)
This handles translation of find modes to make reverse ordering
work. Pass the mode and return the mode, translated if reverse ordering is needed
Establish_Find_Mode(Integer eFindMode)
Establish finding direction
Pass: Mode
- Integer
hoServer - Integer
hoOwnerDD - Integer
iFile
Read_Next_Record()
Read_Next_Record
Return: FOUND, and record in and related
- Integer
hoServer - Integer
hoOwnerDD - Integer
iFile
Find_Init(Integer Dir)
- Integer
srvr# - Integer
file# - Integer
Ordr# - Integer
mode
Clear_Current_Record()
Replaced with proc below 03/27/95
procedure Clear_Current_Record
integer ser# //oldchg
get Server to ser#
//
// NOTE: Clear may cause problems with other tables on the same data_Set
//
If Ser# ne 0 Send Clear to ser#
else Send vClear (Main_File(self))
end_procedure
alternate better method for clearing file. If deferred or main-file
is not the same as the server then only the buffer should clear.
- Integer
ser# - Integer
File#
- RowId
FileRowId()
Function: FileRowId
Returns: The record number of the record currently in the buffer
Return FOUND if record is active
- Integer
iStat - Integer
iFile - RowId
riRec
- Integer
FileRecord()
- Integer
iStat - Integer
iFile - Integer
iRec
vFind_Init(Integer File# Integer ordr# Integer Dir)
------- Various direct file commands. Called when no server ----
vFind_Rec(Integer File# Integer Ordr# Integer Mode)
vReadRowId(integer iFile RowId riRec)
- Boolean
bFound
vRelate(integer File#)
vClear(integer File#)
- integer
isAutoFillFind()
private implementation: created post 8.2-JJT
Called by refresh (which is called by DDs) The purpose is to return true if the refresh is part
of a parent/child constrained autofill. When autofill is called the grid or dblist needs to refresh
based around an initial row and column (e.g. filling an order entry detail table). When not autofill
the refresh should be based around the current row and column (e.g. filling a dblist). The method for
determining if this is a DD based autofill is imperfect and might be changed in future revisions.
- Integer
hoServer
Refresh(integer notifyMode)
-------------------------------------------------------------------
- Integer
mainfile - Integer
row# - Integer
rowcount# - Integer
iRec
- integer
Prototype_Object()
added for dependent-items support
Auto_Reorder_List(integer item#)
This should only get called by an iEntry procedure
Goto_Top_Row()
Added to make this work like the old 3.01 data_list
Goto_Bottom_Row()
- Integer
lastRow
DoSetOrderingDirection(integer bReverse)
messages added to support reversing index ordering
DoToggleColumnOrdering(integer iCol)
Good for augmentation.
- Integer
iIndex
OnNewOrdering(integer iOrdering)
- integer
Ordering()
Augmented to return the DDOs server if the DDO
should provide this information.
- Integer
hoServer
set(integer iIndex)
Set is augmented to send OnNewOrdering when order changes. Can
be used to change the pbReverseOrdering property on a column by
column basis (by default this does nothing)
If the DDO determines the server, the set is canceled
- Integer
iCurrent
DoCheckDisplayableRows()
This is called in VDF when GuiSize changes. It is not called anywhere in character mode, but
it could be and it will work
If the number of displayable rows changes we need to refresh non-batch
list by sending display. This is called by set GuiSize and could be called
by other methods that affect the number of rows in a grid.
- Integer
iOld - Integer
iNew
AdjustGridRows(integer iOldMaxRows)
Adjust a current grid. This is called when the maximum number of rows changes in
a non batch grid. Rather than just doing a display to refresh the grid we add and
single rows as needed without changing the current row's data. This way you can resize
dbGrids with changed data without losing that data.
- Integer
iNewMaxRows - Integer
iRows - Integer
iCurRow - RowId
riRec - Integer
iChg - Integer
iDynUpdt
set(integer row# integer newval)
================================compatibility methods================
Set record_number/Current_record will generate errors because you should not set these
without setting the RowId array. If you are calling this you need to make code changes.
- integer
Record_Number(integer row#)
this can only be used with recnum tables. You are better off using
Get record_rowId (to get the real rowId) or Get RecordStatus (to check top or bottom) or RowHasRecord
- integer
Current_Record()
this can only be used with recnum tables. You are better off using
Get CurrentRowId (to get the real rowId) or Get CurrentRowHasRecord (to see if you have a record)
SET(integer newVal)
Read_By_Recnum(integer rec#)
Read_By_Recnum:
Pass: Rec# find from server or from direct file.
Returns: FOUND if record found and records in buffer & related
If you try this with a non-recnum table you will get a runtime error
- Integer
srvr# - Integer
file#
- Integer
File_Record()
If you try this with a non-recnum table you will get a runtime error
- Integer
iStat - Integer
iFile - Integer
iRec
vRead_rec(integer file# integer rec#)
If you try this with a non-recnum table you will get a runtime error
Read_record(integer Rec#)
Create this message because the old 3.01 data-list did it this
way. (Avoid this if possible - use Read_by_recnum. This might
go away).
If you try this with a non-recnum table you will get a runtime error
Find_Record(Integer rec#)
Refind & relate the record in rec# by Main_file.
If you try this with a non-recnum table you will get a runtime error