ultimatepp/bazaar/LinuxFrameBufferExample/test.qtf
zbych fe6bff974a Bazaar/LinuxFrameBuffer: frame buffer on top of VirtualGui
git-svn-id: svn://ultimatepp.org/upp/trunk@12646 f0d560ea-af0d-0410-9eb7-867de7ffcac7
2019-01-06 17:44:07 +00:00

2998 lines
No EOL
152 KiB
Text

[ $$0,0#00000000000000000000000000000000:Default]
[{_}
[s0;2 &]
[ {{10000t/25b/25@3 [s0; [*@(229)4 ArrayCtrl]]}}&]
[s0;i448;a25;kO9;2 &]
[s0; &]
[s0;*@3 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:class: [@(0.0.255) class]_[* ArrayCtrl]_:_[@(0.0.255) public
]_[*@3 Ctrl]&]
[s0;i448;a25;kKO9;2 &]
[s0;* &]
[s0;* &]
[s0; [* ArrayCtrl] implements basic grid functionality. It is typically
used for display and editing of arrays of values or (heterogeneous)
records. The records correspond to rows in the array, the individual
fields within each record can be either bound to columns or to
any generic [* Ctrl]`'s, thus supporting basic master`-detail functionality
with practically no additional cost.&]
[s0; &]
[s0; The standard derived classes extend various aspects of the ArrayCtrl
functionality. [* SqlArray] adds the nuts and bolts needed for
editing SQL`-based tables, whereas [* PopupTable] couples the ArrayCtrl
functionality with the drop`-down mechanism very similar to the
one used in popup menus. This opens the door for implementing
drop`-down controls like [* DropList] (aka [/ combo box]) or [* DropChoice]
(usually used together with a control of the [* EditField ]or [* DataPusher]
family to support coupling native data editing with drop`-down
selection, widely used for history or commonly used predefined
values. The [* ArrayPair] is, as its name implies, a pair of [* ArrayCtrl]`'s
with arrow buttons between them allowing to visually select subsets
of a certain set by moving its elements between the two lists.&]
[s0; &]
[s0; [*+117 The array data organization: indices and columns]&]
[s0; &]
[s0; There is a great deal of genericity supported by the ArrayCtrl
with respect both to its source data and its visual presentation.
Conceptually, the source array data is a matrix of [* Value]`'s.
There is a series of methods for accessing this source data,
the basic ones being [* Set] and [* Get]. The rows are addressed
by integer indices (zero based), the columns can be addressed
either by integer indices as well, or alternatively any source
column can be assigned an [* Id] identifier and addressed by it.
This is especially helpful in SQL`-based tables, where the table
column names can be used for the [* Id]`'s. A pair of methods,
[* GetPos] and [* GetId], can be used to translate these two column
addressing modes. In the code terminology, the columns in the
source data matrix are called [/ indices] whereas the visual (output)
columns are called simply [/ columns].&]
[s0; &]
[s0; The visual ArrayCtrl structure can be entirely independent of
the source data structure (although it`'s seldom helpful to make
the mapping completely arbitrary). Basically, each column can
have an arbitrary number of indices defining its source data.
Of course, the most common case is one index per column. This
is also simplest to address, because the column indices are equal
to the source data indices. However, many other combinations
are possible, each of which can be handy in certain situations:&]
[s0; &]
[s0;i150;O0; Index without a column: the most common of the `"special`"
cases is used mainly for row id`'s or other internally important
data without visual representation. The same behaviour can be
obtained by making a column invisible.&]
[s0;i150;O0; Column without an index (a [/ rownum column]): this less
common case can be used to display external data (not stored
in the table). &]
[s0;i150;O0; Multiple columns sharing the same index: this can be
used to display various aspects of a complex data object or to
display the same source data in multiple ways (e.g., a temperature
reading in Celsius and Fahrenheit degrees).&]
[s0;i150;O0; Column with multiple indices: can be used to display
information gathered from multiple source data columns. This
is used for instance in IconDes in TheIDE to display image identifiers
together with their sizes in the list. This is the most complicated
case because you have to implement a specific [* Display] for such
a multi`-index column.&]
[s0; &]
[s0; [* Note:] in the current U`+`+ version, the implementation of index`-less
columns (arrays with external data not stored in the source matrix)
is rather awkward. It is planned to enhance this feature in the
future by adding support for access to external data via a data
accessor interface object. &]
[s0; &]
[s0; [*+117 ArrayCtrl GUI: selection, editing, and local menu]&]
[s0; &]
[s0; Array rows can be selected using the mouse or keyboard. ArrayCtrl`'s
support both single`-selection (plain cursor) and multiselection
model. Of course, row selection can be controlled via the programmatic
array interface as well. The selection and cursor always spans
entire rows, it is not possible (without substantial patchwork)
to select only certain columns or individual cells.&]
[s0; &]
[s0; The ArrayCtrl rows can be inserted, edited and deleted either
programmatically, or via common GUI elements (mouse and keyboard
selection, local menu). It is possible to alter the standard
ArrayCtrl local menu using the [* WhenBar] callback.&]
[s0; &]
[s0; [* Note:] it is worth noting that the standard editing keys ([* Insert]
`= row insertion, [* Ctrl`+Enter] `= editing and [* Ctrl`+Delete]
`= deletion) are not hardcoded in the ArrayCtrl`'s [* Key] method,
they are mere hotkeys for the relevant local menu items. When
you change the ArrayCtrl`'s local menu, the editing hotkeys change
accordingly.&]
[s0; &]
[s0; A special but rather important case of array editing is [/ sorting]:
there is no specific standard GUI for that. If you aren`'t content
with programmatic sorting (e.g. after opening a dialog or after
loading the array data), you have to implement some GUI for that
as well. In certain cases, it is cool to use the [* HeaderCtrl]
[* WhenAction] method to allow sorting the array by clicking on
the header columns; alternatively you can add a sort function
to the array local menu or possibly somewhere else (like a standalone
button in the dialog).&]
[s0; &]
[s0; [* Insertion tricks: before, after, and the secrets of the AppendLine]&]
[s0; &]
[s0; In todays text editors, when you type a new letter, it is trivial
to see where in the text will the new letter go. This is so because
the caret is always positioned between a pair of successive letters
and thus is well defines the insertion spot. Additionally, the
caret can be placed in front of the first letter or after the
last letter, which naturally allows typing some text at the very
beginning or end.&]
[s0; &]
[s0; When inserting new rows into the array controls, things are
a bit more tricky. This is so because, unlike in the text editor,
the cursor is not placed [/ between] two successive rows, but [/ over]
a certain row. This is of course necessary to make row editing
possible (note that in the aforementioned text editor analogy,
a single letter is an atomic object whereas in the array it is
a potentially complex structure consisting of many columns and
data items). However, when it comes to row insertion, it has
two main troubles as its implication:&]
[s0; &]
[s0;i150;O9; [* 1.]-|It is necessary to decide somehow whether the new
row will go [/ above] or [/ below] the cursor row.&]
[s0;i150;O9; [* 2.]-|In an array with [/ n] rows, there are [/ n`+1] possible
locations for a new row (before the row #0, #1 ... #([/ n`-1])
and after the last row), but only [/ n] distinct cursor locations.&]
[s0; &]
[s0; Over the years, during the development of U`+`+, we experimented
with multiple ways to overcome these logical problems. As a result
of this, the ArrayCtrl supports a few methods allowing to fine`-tune
the row insertion mechanism. It is also worth noting that there
are cases, like in the case of SQL`-based tables, where the row
ordering is arbitrary or implicit and the exact `'location`'
of a new row doesn`'t make any sense. In such cases, it is possible
to replace array [/ insertion] function with the [/ append] function
emphasizing the fact that the visual row order is unimportant
and that insertion means merely adding a new record to the record
set.&]
[s0; &]
[s0; For arrays in which the order is important, there are two ways
to solve the [/ n`+1] row positions dilemma:&]
[s0; &]
[s0;i150;O9; [* 1.]-|Replacing the Insert function with a pair of functions
for inserting a new row [/ before] / [/ after] the current row.&]
[s0;i150;O9; [* 2.]-|Visually extending the array by adding a pseudo`-row
with no real data at its end; this creates the [/ n`+1]`-th cursor
position necessary to denote all the available row insertion
locations.&]
[s0; &]
[s0; In the first case, it is also possible to select which of the
insertion functions (before / after) takes precedence (which
of the two actions should be bound to the standard [* Insert] hotkey).
This corresponds to the [* BeforeAfterInserting] and [* AfterBeforeInserting]
methods. The second case is called the [* AppendLine] and is activated
by setting the property with the same name.&]
[s0; &]
[s0; To make all this even more interesting, a special mechanism
called [* InsertAppend] is available to make array filling as easy
as possible. When activated and the user appends a new row at
the table end, after pressing [* Enter] (to commit the inserted
row) another row is automatically added after it and opened for
editing. This mechanism is turned on by default, but it can be
disable by setting the [* NoInsertAppend] property to true.&]
[s0;0 &]
[s0; &]
[s0; &]
[ {{10000t/25b/25@3 [s0; [*@(229)4 Categorized method summary]]}}&]
[s0;b42; [2 The following table summarizes ArrayCtrl methods according
to the aspect of functionality they support together with a very
brief description. For more thorough documentation of the individual
methods see below.]&]
[s0; &]
[ {{2337:7663-1 [s0; [* Initialization and configuration]]
:: [s0; ]
:: [s0; Reset]
:: [s0; clears column `& index definition and restores all ArrayCtrl
default properties]
:: [s0; IsEdit]
:: [s0; true `= array state automaton is currently in row editing mode]
:: [s0; IsInsert]
:: [s0; true `= array state automaton is currently in row insertion
mode]
:: [s0; SetLineCy]
:: [s0; sets array row height (global or individual for a single row)]
:: [s0; GetLineCy]
:: [s0; returns logical array row height (value set by preceding SetLineCy)]
:: [s0; GetLineY]
:: [s0; returns [/ y] position of given row (relative to table beginning)]
:: [s0; `[No`]AppendLine]
:: [s0; `[do not`] display an additional pseudo`-row used for row insertion]
:: [s0; IsAppendLine]
:: [s0; returns actual value of the [* AppendLine] property]
:: [s0; ShowAppendLine]
:: [s0; scrolls the table view to display the appending line]
:: [s0; `[No`]Inserting]
:: [s0; `[do not`] allow inserting new rows]
:: [s0; IsInserting]
:: [s0; returns actual value of the [* Inserting] property]
:: [s0; BeforeAfterInserting]
:: [s0; allow inserting rows before / after current row (default `=
before)]
:: [s0; AfterBeforeInserting]
:: [s0; allow inserting rows before / after current row (default `=
after)]
:: [s0; NoInsertAppend]
:: [s0; do not autoinsert another row after committing last row insertion]
:: [s0; IsEditing]
:: [s0; true `= (at least one column of the) ArrayCtrl supports editing]
:: [s0; `[No`]Duplicating]
:: [s0; `[do not`] allow row duplication]
:: [s0; IsDuplicating]
:: [s0; returns actual value of the [* Duplicating] property]
:: [s0; Appending]
:: [s0; allow appending new row at the table end]
:: [s0; IsAppending]
:: [s0; returns actual state of the [* Appending] property]
:: [s0; AutoAppending]
:: [s0; allow appending new row at the table end, Enter appends another
one]
:: [s0; IsAutoAppending]
:: [s0; returns actual state of [* AutoAppending] property]
:: [s0; `[No`]Removing]
:: [s0; `[do not`] allow table row removing]
:: [s0; IsRemoving]
:: [s0; returns actual state of the [* Removing] property]
:: [s0; `[No`]AskRemove]
:: [s0; `[do not`] prompt user to confirm row removal]
:: [s0; IsAskRemove]
:: [s0; returns actual state of the [* AskRemove] property]
:: [s0; Moving]
:: [s0; allow row swapping (moving a row before / after neighbouring
row)]
:: [s0; IsMoving]
:: [s0; returns actual state of the [* Moving] property]
:: [s0; `[No`]Header]
:: [s0; `[do not`] display table header]
:: [s0; `[No`]Track]
:: [s0; `[do not`] animate tracking table column widths]
:: [s0; `[No`]VertGrid]
:: [s0; `[do not`] display column breaks]
:: [s0; `[No`]HorzGrid]
:: [s0; `[do not`] display row breaks]
:: [s0; `[No`]Grid]
:: [s0; `[do not`] display both grids (VertGrid `+ HorzGrid)]
:: [s0; GridColor]
:: [s0; set grid line color]
:: [s0; EvenRowColor]
:: [s0; background color for even rows]
:: [s0; OddRowColor]
:: [s0; background color for odd rows]
:: [s0; RowFormat]
:: [s0; formats menu items substituting given word for the term `'row`']
:: [s0; RowName]
:: [s0; sets the context`-relevant word to substitute for `'row`' in
the local menu texts]
:: [s0; NoCursor]
:: [s0; do not highlight cursor row]
:: [s0; `[No`]MouseMoveCursor]
:: [s0; automatically move cursor as the mouse moves (used e.g. in PopupTable)]
:: [s0; `[No`]AutoHideSb]
:: [s0; `[do not`] display scroll bar only when necessary]
:: [s0; MultiSelect]
:: [s0; enable selecting multiple rows at the same time]
:: [s0; ColumnWidths]
:: [s0; sets logical column widths using a formatted string, e.g. `"1
5 10 10 5 1`"]}}&]
[s0; &]
[ {{2337:7663-1 [s0; [* Array index `& column structure management]]
:: [s0; ]
:: [s0; IndexInfo]
:: [s0; returns the [* IdInfo] structure describing an index (see below)]
:: [s0; AddIndex]
:: [s0; adds a new index to the source data matrix]
:: [s0; GetIndexCount]
:: [s0; returns number of index columns (columns in the source data
matrix)]
:: [s0; GetId]
:: [s0; returns identifier of a given index (given by its integral index)]
:: [s0; GetPos]
:: [s0; returns integral index of source matrix column ([/ index]) identified
by an [* Id]]
:: [s0; SetId]
:: [s0; sets the [* Id] identifier for a given index (column of the source
matrix)]
:: [s0; AddKey]
:: [s0; sets up the first index to act as primary key (often used for
SQL tables)]
:: [s0; GetKeyId]
:: [s0; returns primary key identifier (equal to [* GetId(0)])]
:: [s0; AddColumn]
:: [s0; adds a column`-index pair to the table (one data column, one
output column)]
:: [s0; AddColumnAt]
:: [s0; adds a column bound to a given index]
:: [s0; AddRowNumColumn]
:: [s0; adds a column without an index (used for external data)]
:: [s0; GetColumnCount]
:: [s0; returns number of (visual) columns in the table]
:: [s0; FindColumnWithPos]
:: [s0; locates table column according to given index number]
:: [s0; FindColumnWithId]
:: [s0; locates table column according to index identifier]
:: [s0; ColumnAt]
:: [s0; returns the [* ArrayCtrl`::Column] structure describing given column]
:: [s0; HeaderTab]
:: [s0; returns the [* HeaderCtrl`::Column] structure for the given column]
:: [s0; HeaderObject]
:: [s0; returns a reference to the [* HeaderCtrl] object for this table]
:: [s0; SerializeHeader]
:: [s0; serialize header layout information (column widths etc.)]
:: [s0; AddCtrl]
:: [s0; adds an outer control`-index pair to the table (one data column,
one outer Ctrl)]
:: [s0; AddCtrlAt]
:: [s0; adds an outer control bound to a given index]
:: [s0; AddRowNumCtrl]
:: [s0; adds an outer control without an index `- used ([/ seldom]) for
external data]
:: [s0; SetDisplay]
:: [s0; sets display for a given table column or cell]
:: [s0; GetDisplay]
:: [s0; returns column / cell display]
:: [s0; SetCtrl]
:: [s0; sets a [* Ctrl] object for custom editing of a given cell]
:: [s0; GetTotalCy]
:: [s0; returns total row height]
:: [s0; GetLineAt]
:: [s0; locate table row when given an [/ y] position (relative to table
top)]
:: [s0; GetClickColumn]
:: [s0; returns column number of last clicked column (Null if clicked
outside existing rows)]
:: [s0; GetClickRow]
:: [s0; returns row number of last clicked row (Null if clicked outside
existing rows)]
:: [s0; GetClickPos]
:: [s0; returns Point(GetClickColumn(), GetClickRow())]}}&]
[s0; &]
[ {{2337:7663-1 [s0; [* Data setting `& retrieval]]
:: [s0; ]
:: [s0; SetCount]
:: [s0; sets number of rows in the array]
:: [s0; SetVirtualCount]
:: [s0; sets number of rows in the array with external data]
:: [s0; GetCount]
:: [s0; returns number of rows]
:: [s0; Clear]
:: [s0; clears array data, identical to [* SetCount(0)]]
:: [s0; Shrink]
:: [s0; shrinks source data matrix to the minimum necessary size]
:: [s0; Get]
:: [s0; returns given Value element of the source data matrix]
:: [s0; GetOriginal]
:: [s0; returns given element of source data matrix before editing]
:: [s0; Set]
:: [s0; sets given element of the source data matrix]
:: [s0; GetKey]
:: [s0; returns given primary key (column #0 in the data matrix)]
:: [s0; GetOriginalKey]
:: [s0; returns `'old`' value of primary key before editing]
:: [s0; GetColumn]
:: [s0; returns value of a given output column (according to its index
mapping)]
:: [s0; GetConvertedColumn]
:: [s0; returns value of a given output column after applying its [* Convert]]
:: [s0; ReadRow]
:: [s0; returns a row of the source data matrix]
:: [s0; Add]
:: [s0; adds a new row at the end of table]
:: [s0; Insert]
:: [s0; inserts a new row into the table]
:: [s0; Remove]
:: [s0; removes a given table row]
:: [s0; SwapUp]
:: [s0; exchanges a table row with the preceding row]
:: [s0; SwapDown]
:: [s0; exchanges a table row with the next row]
:: [s0; Sort]
:: [s0; sorts table rows using a given predicate]
:: [s0; ClearCache]
:: [s0; clears data conversion cache]
:: [s0; InvalidateCache]
:: [s0; invalidates given table row in the conversion cache]}}&]
[s0; &]
[ {{2337:7663-1 [s0; [* Cursor `& selection management]]
:: [s0; ]
:: [s0; GetSelectCount]
:: [s0; returns number of currently selected rows]
:: [s0; IsSelection]
:: [s0; checks whether any rows are selected (identical to [* GetSelectCount()
> 0])]
:: [s0; Select]
:: [s0; selects / unselects given row or a series of rows]
:: [s0; IsSelected]
:: [s0; checks whether given row is selected]
:: [s0; ClearSelection]
:: [s0; clears the current selection]
:: [s0; SetCursor]
:: [s0; moves array cursor to a new row]
:: [s0; KillCursor]
:: [s0; removes the cursor away from the table]
:: [s0; CancelCursor]
:: [s0; cancels editing of current row]
:: [s0; IsCursor]
:: [s0; checks whether cursor is in the table (identical to [* GetCursor()
>`= 0])]
:: [s0; GetCursor]
:: [s0; returns current cursor row, `-1 when none]
:: [s0; GoBegin]
:: [s0; moves the cursor to the first table row]
:: [s0; GoEnd]
:: [s0; moves the cursor to the last table row]
:: [s0; GetCursorSc]
:: [s0; returns the location of the cursor row within the table view
area]
:: [s0; ScCursor]
:: [s0; scrolls the table to move the cursor row to given location within
the table view]
:: [s0; CenterCursor]
:: [s0; scrolls the table to move cursor into the middle of the current
view]
:: [s0; ScrollInto]
:: [s0; scrolls the table by minimum amount necessary to make given
row visible]
:: [s0; ScrollIntoCursor]
:: [s0; scrolls the table by minimum amount necessary to make cursor
row visible]
:: [s0; GetScroll]
:: [s0; returns current table scrollbar location]
:: [s0; ScrollTo]
:: [s0; sets table scrollbar location]
:: [s0; Find]
:: [s0; locates table row containing a given element]
:: [s0; FindSetCursor]
:: [s0; moves the cursor to table row containing a given element]}}&]
[s0; &]
[s0; &]
[s0; &]
[ {{2337:7663-1 [s0; [* GUI elements]]
:: [s0; ]
:: [s0; StdBar]
:: [s0; the default array local menu]
:: [s0; IsModified]
:: [s0; checks modification state of given array cell]
:: [s0; StartEdit]
:: [s0; open current array row for editing]
:: [s0; GetEditColumn]
:: [s0; returns the column being currently edited]
:: [s0; DoEdit]
:: [s0; corresponds to the local menu `'Edit`' function]
:: [s0; DoInsert]
:: [s0; corresponds to the local menu `'Insert`' function]
:: [s0; DoInsertBefore]
:: [s0; corresponds to the local menu `'Insert before`' function]
:: [s0; DoInsertAfter]
:: [s0; corresponds to the local menu `'Insert after`' function]
:: [s0; DoAppend]
:: [s0; corresponds to the local menu `'Append`' function]
:: [s0; DoRemove]
:: [s0; corresponds to the local menu `'Remove`' function]
:: [s0; DoDuplicate]
:: [s0; corresponds to the local menu `'Duplicate`' function]
:: [s0; DoSelectAll]
:: [s0; selects the entire array]
:: [s0; AcceptEnter]
:: [s0; commits the currently edited row and possibly begins insertion
of another row]}}&]
[s0; &]
[ {{2337:7663-1 [s0; [* Notification callbacks]]
:: [s0; ]
:: [s0; WhenLeftClick]
:: [s0; left mouse click within the array]
:: [s0; WhenLeftDouble]
:: [s0; left mouse doubleclick within the array]
:: [s0; WhenSel]
:: [s0; called when cursor or selection status of widget changes]
:: [s0; WhenCursor]
:: [s0; called whenever the cursor location changes [/ (deprecated, use
WhenSel)]]
:: [s0; WhenKillCursor]
:: [s0; called when the cursor moves away from the table [/ (deprecated,
use WhenSel)]]
:: [s0; WhenSelection]
:: [s0; called whenever current selection changes [/ (deprecated, use
WhenSel)]]
:: [s0; WhenEnterRow]
:: [s0; called whenever the cursor moves to a new row [/ (deprecated,
use WhenSel)]]
:: [s0; WhenUpdateRow]
:: [s0; called after updating a row]
:: [s0; WhenAcceptRow]
:: [s0; additional row validation callback]
:: [s0; WhenStartEdit]
:: [s0; called after initiating row editing]
:: [s0; WhenAcceptEdit]
:: [s0; called after accepting changes to a given row]
:: [s0; WhenArrayAction]
:: [s0; called whenever array source data changes (after insert / delete
/ edit)]
:: [s0; WhenBar]
:: [s0; can be used to supply custom local menu for the array]
:: [s0; WhenCtrlsAction]
:: [s0; called by [* WhenAction] callbacks of internally created controls]}}&]
[s0;0 &]
[s0; &]
[s0; &]
[s0; &]
[ {{10000t/25b/25@3 [s0; [*@(229)4 Detailed method description]]}}&]
[s0; &]
[s0; [* Initialization and configuration]&]
[s0;0 &]
[s0; &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Reset`(`): [@(0.0.255)2 void][2 _][*2 Reset][2 ()]&]
[s0;l288; [2 Clears table rows and resets all array properties to their
default values.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:ShowAppendLine`(`): [@(0.0.255)2 void][2 _][*2 ShowAppendLi
ne][2 ()]&]
[s0;l288; [2 Show an additional pseudo`-row at the table end. When
clicked, a new row is appended to the array.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:IsEdit`(`)const: [@(0.0.255)2 bool][2 _][*2 IsEdit][2 ()_][@(0.0.255)2 c
onst]&]
[s0;l288; [2 Checks whether the array is currently being edited.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 true][2 `= a
row is currently open for editing, ][*2 false][2 `= array is in
normal browsing mode]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:IsInsert`(`)const: [@(0.0.255)2 bool][2 _][*2 IsInsert][2 ()_
][@(0.0.255)2 const]&]
[s0;l288; [2 Checks whether a new row is currently being inserted.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 true][2 `= newly
inserted row is currently being edited, ][*2 false][2 when not]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:SetLineCy`(int`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 SetLineCy][2 (][@(0.0.255)2 int][2 _][*@3;2 cy][2 )]&]
[s0;l288; [2 Sets the (default) array row height. For certain rows,
this can be overriden by the two`-parameter version of this method.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 cy][2 -|row height in pixels]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:SetLineCy`(int`,int`): [@(0.0.255)2 void][2 _][*2 SetLineCy
][2 (][@(0.0.255)2 int][2 _][*@3;2 i][2 , ][@(0.0.255)2 int][2 _][*@3;2 cy][2 )]&]
[s0;l288; [2 Sets row height for a given row. This overrides the default
value set by the one`-parameter version of this method.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 i][2 -|row index (zero based)]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 cy][2 -|row height in pixels,
][*2 Null][2 `= use default row height]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GetLineCy`(`)const: [@(0.0.255)2 int][2 _][*2 GetLineCy][2 ()
_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns default array row height.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|row height in pixels]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GetLineY`(int`)const: [@(0.0.255)2 int][2 _][*2 GetLineY][2 (
][@(0.0.255)2 int][2 _][*@3;2 i][2 )_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns ][/2 y][2 position of given array row (the pixel
distance between the top of first array row and ][/2 i][2 `-th row,
i.e. sum of heights of all rows above this row).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 i][2 -|row index (zero based)]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|Vertical position
of row top in pixels (relative to array beginning)]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GetLineCy`(int`)const: [@(0.0.255)2 int][2 _][*2 GetLineCy][2 (
][@(0.0.255)2 int][2 _][*@3;2 i][2 )_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns the height of a given row (either the row`-specific
row height, or, when Null, the default row height).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 i][2 -|row index (zero based)]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|row height in pixels]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:AppendLine`(bool`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 AppendLine][2 (][@(0.0.255)2 bool][2 _][*@3;2 b][2 _`=_][@(0.0.255)2 true][2 )]&]
[s0;l288; [2 The AppendLine property controls whether the array displays
an additional `'append`' row after its last (real) row. ]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 b][2 -|][*2 true][2 `= display appending
row, ][*2 false][2 `= hide it]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:NoAppendLine`(`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 NoAppendLine][2 ()]&]
[s0;l288; [2 Hide the appending line (identical to ][*2 AppendLine(false)][2 ).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:IsAppendLine`(`)const: [@(0.0.255)2 bool][2 _][*2 IsAppendL
ine][2 ()_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns current state of the ][*2 AppendLine][2 property.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 true][2 `= display
appending pseudo`-row at the end of the array]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Inserting`(bool`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 Inserting][2 (][@(0.0.255)2 bool][2 _][*@3;2 b][2 _`=_][@(0.0.255)2 true][2 )]&]
[s0;l288; [2 Enable / disable inserting new rows in the array (no matter
which insertion mechanism is selected).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 b][2 -|][*2 true][2 `= enable insertion,
][*2 false][2 `= disable it]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:NoInserting`(`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 NoInserting][2 ()]&]
[s0;l288; [2 Disables row insertion (identical to ][*2 Inserting(false)][2 ).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:IsInserting`(`)const: [@(0.0.255)2 bool][2 _][*2 IsInsertin
g][2 ()_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns current state of the ][*2 Inserting][2 property.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 true][2 `= row
insertion is enabled, ][*2 false][2 when not]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Appending`(bool`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 Appending][2 (][@(0.0.255)2 bool][2 _][*@3;2 b][2 _`=_][@(0.0.255)2 true][2 )]&]
[s0;l288; [2 Enable / disable adding new rows at the table end.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 b][2 -|][*2 true][2 `= enable row
appending, ][*2 false][2 `= disable it]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:IsAppending`(`)const: [@(0.0.255)2 bool][2 _][*2 IsAppendin
g][2 ()_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns current state of the ][*2 Appending][2 property.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 true][2 `= appending
rows is enabled, ][*2 false][2 when not.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:AutoAppending`(bool`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 AutoAppending][2 (][@(0.0.255)2 bool][2 _][*@3;2 b][2 _`=_][@(0.0.255)2 true][2 )]&]
[s0;l288; [2 Same as ][*2 Appending][2 but Enter pressed when editing
a new row accepts it and adds another one at the table end.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 b][2 -|][*2 true ][2 to enable the
mode]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:IsAutoAppending`(`)const: [@(0.0.255)2 bool][2 _][*2 IsAuto
Appending][2 ()_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns current state of ][*2 AutoAppending][2 property.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 true][2 `= ][*2 AutoAppending
][2 is active]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:BeforeAfterInserting`(int`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 BeforeAfterInserting][2 (][@(0.0.255)2 int][2 _][*@3;2 q][2 _`=_][@3;2 1][2 )]&]
[s0;l288; [2 Activate before / after row insertion mechanism (][*2 Insert][2
hotkey `= before).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:AfterBeforeInserting`(int`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 AfterBeforeInserting][2 (][@(0.0.255)2 int][2 _][*@3;2 q][2 _`=_][@3;2 2][2 )]&]
[s0;l288; [2 Activate before / after row insertion mechanism (][*2 Insert][2
hotkey `= after)]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Duplicating`(bool`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 Duplicating][2 (][@(0.0.255)2 bool][2 _][*@3;2 b][2 _`=_][@(0.0.255)2 true][2 )]&]
[s0;l288; [2 Enable / disable row duplication. Note that this property
only controls whether the `'Duplicate`' item should be present
in the array local menu. Of course, nothing can prevent you from
supporting duplication in some other way, or from calling the
][*2 DoDuplicate][2 method as you see fit.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 b][2 -|][*2 true][2 `= enable duplication,
][*2 false][2 `= disable it]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:NoDuplicating`(`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 NoDuplicating][2 ()]&]
[s0;l288; [2 Disable row duplication (identical to ][*2 Duplicating(false)][2 ).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:IsDuplicating`(`)const: [@(0.0.255)2 bool][2 _][*2 IsDuplic
ating][2 ()_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns the state of the ][*2 Duplicating][2 property.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 true][2 `= local
menu offers row duplication, ][*2 false][2 when not]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:NoInsertAppend`(bool`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 NoInsertAppend][2 (][@(0.0.255)2 bool][2 _][*@3;2 b][2 _`=_][@(0.0.255)2 true][2 )]&]
[s0;l288; [2 Enables / disables the auto`-append mechanism (see above
section on inserting rows).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 b][2 -|][*2 true][2 `= disable InsertAppend
mechanism, ][*2 false][2 `= enable it (the default)]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:IsEditing`(`)const: [@(0.0.255)2 bool][2 _][*2 IsEditing][2 (
)_][@(0.0.255)2 const]&]
[s0;l288; [2 Checks whether at least one array column supports editing
(whether it is possible to ][/2 open][2 a row for editing).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 true][2 `= row
editing is possible, ][*2 false][2 when not]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Removing`(bool`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 Removing][2 (][@(0.0.255)2 bool][2 _][*@3;2 b][2 _`=_][@(0.0.255)2 true][2 )]&]
[s0;l288; [2 Enable / disable deleting rows from the table.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 b][2 -|][*2 true][2 `= enable deletion,
][*2 false][2 `= disable it]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:NoRemoving`(`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&][2 _
][*2 NoRemoving][2 ()]&]
[s0;l288; [2 Disable deleting table rows (identical to ][*2 Removing(false)][2 ).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:IsRemoving`(`)const: [@(0.0.255)2 bool][2 _][*2 IsRemoving][2 (
)_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns current state of the ][*2 Removing][2 property.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 true][2 `= row
deletion is enabled, ][*2 false ][2 when not]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:AskRemove`(bool`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 AskRemove][2 (][@(0.0.255)2 bool][2 _][*@3;2 b][2 _`=_][@(0.0.255)2 true][2 )]&]
[s0;l288; [2 Sets whether the user must manually confirm array row
deletion. When set to ][*2 true][2 , every time a row is to be deleted,
a confirmation dialog pops up. When set to ][*2 false][2 , rows are
deleted automatically without any further confirmation.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 b][2 -|][*2 true][2 `= prompt user
to confirm row deletion, ][*2 false][2 `= delete rows instantly]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:NoAskRemove`(`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 NoAskRemove][2 ()]&]
[s0;l288; [2 Disables user confirmation of row deletion (equivalent
to ][*2 AskRemove(false)][2 ).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:IsAskRemove`(`)const: [@(0.0.255)2 bool][2 _][*2 IsAskRemov
e][2 ()_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns current state of the ][*2 AskRemove][2 property.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 true][2 `= user
confirmation is needed to delete rows, ][*2 false][2 `= rows are
deleted immediately]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Moving`(bool`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&][2 _
][*2 Moving][2 (][@(0.0.255)2 bool][2 _][*@3;2 b][2 _`=_][@(0.0.255)2 true][2 )]&]
[s0;l288; [2 Enable / disable row swapping. When set to ][*2 true][2 ,
it is possible to move an array row up and down by swapping it
with the previous / next row. This can be used to reorder array
rows in a visually straightforward manner.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 b][2 -|][*2 true][2 `= offer row
moving in the local menu, ][*2 false][2 `= don`'t]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:IsMoving`(`)const: [@(0.0.255)2 bool][2 _][*2 IsMoving][2 ()_
][@(0.0.255)2 const]&]
[s0;l288; [2 Returns current state of the ][*2 Moving][2 property.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 true][2 `= local
menu supports row swapping, ][*2 false][2 `= it doesn`'t]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Header`(bool`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&][2 _
][*2 Header][2 (][@(0.0.255)2 bool][2 _][*@3;2 b][2 _`=_][@(0.0.255)2 true][2 )]&]
[s0;l288; [2 Show / hide the ][*^topic`:`/`/CtrlLib`/src`/HeaderCtrl`$en`-us^2 HeaderCtrl
][2 object for this table.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 b][2 -|][*2 true][2 `= show table
header, ][*2 false][2 `= hide it]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:NoHeader`(`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&][2 _
][*2 NoHeader][2 ()]&]
[s0;l288; [2 Hide table header (equivalent to ][*2 Header(false)][2 ).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Track`(bool`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&][2 _
][*2 Track][2 (][@(0.0.255)2 bool][2 _][*@3;2 b][2 _`=_][@(0.0.255)2 true][2 )]&]
[s0;l288; [2 Animate array column resizing. This is equivalent to setting
the ][*^topic`:`/`/CtrlLib`/src`/HeaderCtrl`$en`-us`#`:`:HeaderCtrl`:`:Track`(bool`)^2 T
rack][2 property in the array HeaderCtrl.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 b][2 -|][*2 true][2 `= repaint the
array repeatedly while dragging column widths, ][*2 false][2 `=
regenerate everything only after drag `& drop is finished.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:NoTrack`(`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&][2 _][*2 N
oTrack][2 ()]&]
[s0;l288; [2 Do not animate array column resizing (equivalent to ][*2 Track(false)][2 ).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:VertGrid`(bool`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 VertGrid][2 (][@(0.0.255)2 bool][2 _][*@3;2 b][2 _`=_][@(0.0.255)2 true][2 )]&]
[s0;l288; [2 Show / hide vertical array grid lines (separating array
columns).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 b][2 -|][*2 true][2 `= show vertical
grid lines, ][*2 false][2 `= hide them]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:NoVertGrid`(`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&][2 _
][*2 NoVertGrid][2 ()]&]
[s0;l288; [2 Hide vertical grid lines (equivalent to ][*2 VertGrid(false)][2 ).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:HorzGrid`(bool`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 HorzGrid][2 (][@(0.0.255)2 bool][2 _][*@3;2 b][2 _`=_][@(0.0.255)2 true][2 )]&]
[s0;l288; [2 Show / hide horizontal grid lines (separating array rows).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 b][2 -|][*2 true][2 `= show horizontal
grid lines, ][*2 false][2 `= hide them]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:NoHorzGrid`(`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&][2 _
][*2 NoHorzGrid][2 ()]&]
[s0;l288; [2 Hide horizontal grid lines (equivalent to ][*2 HorzGrid(false)][2 ).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Grid`(bool`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&][2 _
][*2 Grid][2 (][@(0.0.255)2 bool][2 _][*@3;2 b][2 _`=_][@(0.0.255)2 true][2 )]&]
[s0;l288; [2 Show / hide both horizontal and vertical grid lines (equivalent
to ][*2 HorzGrid(b).VertGrid(b)][2 ).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 b][2 -|][*2 true][2 `= show grid
line matrix, ][*2 false][2 `= hide all grid lines]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:NoGrid`(`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&][2 _][*2 N
oGrid][2 ()]&]
[s0;l288; [2 Hide horizontal and vertical grid lines (equivalent to
][*2 Grid(false)][2 ).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GridColor`(Color`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 GridColor][2 (][_^Color^2 Color][2 _][*@3;2 c][2 )]&]
[s0;l288; [2 Sets the color for grid lines.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 c][2 -|new grid line color]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:EvenRowColor`(Color`,Color`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 EvenRowColor][2 (][_^Color^2 Color][2 _][*@3;2 paper][2 _`=_Blend(SColorMark,
SColorPaper, ][@3;2 220][2 ), ][_^Color^2 Color][2 _][*@3;2 ink][2 _`=_SColorText)]&]
[s0;l288; [2 Sets the paper and ink (background and foreground) color
for even array rows. In certain cases setting a different background
color for odd and even rows helps to simplify visual orientation
in the arrays (especially when the array has many columns).]&]
[s0;l288; [*2 Note:][2 the even / odd row terminology refers to the natural
array row numbering, so first array row is ][/2 odd][2 and the second
is ][/2 even][2 . This is in contrast to the zero`-baesd integral
row indexing, where the first array row has index 0.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 paper][2 -|background color to
use for second, fourth, sixth etc. array row]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 ink][2 -|foreground color for
even rows]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:OddRowColor`(Color`,Color`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 OddRowColor][2 (][_^Color^2 Color][2 _][*@3;2 paper][2 _`=_SColorInfo,
][_^Color^2 Color][2 _][*@3;2 ink][2 _`=_SColorText)]&]
[s0;l288; [2 Sets the paper and ink (background and foreground) color
for odd array rows.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 paper][2 -|background color to
use for first, third, fifth etc. array row]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 ink][2 -|foreground color for
odd rows]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:NoCursor`(bool`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 NoCursor][2 (][@(0.0.255)2 bool][2 _][*@3;2 b][2 _`=_][@(0.0.255)2 true][2 )]&]
[s0;l288; [2 Turns on / off highlighting cursor row.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 b][2 -|][*2 true][2 `= do not highlight
cursor row, ][*2 false][2 `= default behaviour (cursor row is shown
in inverse colors)]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:MouseMoveCursor`(bool`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 MouseMoveCursor][2 (][@(0.0.255)2 bool][2 _][*@3;2 b][2 _`=_][@(0.0.255)2 true][2 )]&]
[s0;l288; [2 Enables / disables automatical cursor row switching as
the mouse cursor moves over the array rows.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 b][2 -|][*2 true][2 `= automatically
switch cursor row, ][*2 false][2 `= only upon clicks and keyboard
navigation]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:NoMouseMoveCursor`(`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 NoMouseMoveCursor][2 ()]&]
[s0;l288; [2 Disable automatical cursor row switching (equivalent to
][*2 MouseMoveCursor(false)][2 ).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:AutoHideSb`(bool`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 AutoHideSb][2 (][@(0.0.255)2 bool][2 _][*@3;2 b][2 _`=_][@(0.0.255)2 true][2 )]&]
[s0;l288; [2 When set to ][*2 true][2 , the vertical scrollbar at the right
array edge is displayed only when the total row height exceeds
the array view height. When set to ][*2 false][2 , the scrollbar
is shown all the time.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 b][2 -|][*2 true][2 `= show / hide
the scrollbar as necessary, ][*2 false][2 `= display it unconditionally]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:NoAutoHideSb`(`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 NoAutoHideSb][2 ()]&]
[s0;l288; [2 Display vertical scrollbar all the time (equivalent to
][*2 AutoHideSb(false)][2 ).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:HideSb`(bool`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&][2 _
][*2 HideSb][2 (][@(0.0.255)2 bool][2 _][*@3;2 b][2 _`=_][@(0.0.255)2 true][2 )]&]
[s0;l288; [2 Hides vertical scrollbar (even if it would be needed).]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:AutoHideHorzSb`(bool`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 AutoHideHorzSb][2 (][@(0.0.255)2 bool][2 _][*@3;2 b][2 _`=_][@(0.0.255)2 true][2 )]&]
[s0;l288; [2 Makes horizontal scroll bar (active if HeaderCtrl is in
absolute mode only) to autohide. Default is on.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:NoAutoHideHorzSb`(`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 NoAutoHideHorzSb][2 ()]&]
[s0;l288; [2 Same as AutoHideHorzSb(false).]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:HideHorzSb`(bool`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 HideHorzSb][2 (][@(0.0.255)2 bool][2 _][*@3;2 b][2 _`=_][@(0.0.255)2 true][2 )]&]
[s0;l288; [2 Unconditionally hides horizontal scrollbar (active if
HeaderCtrl is in absolute mode only).]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:MultiSelect`(bool`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 MultiSelect][2 (][@(0.0.255)2 bool][2 _][*@3;2 b][2 _`=_][@(0.0.255)2 true][2 )]&]
[s0;l288; [2 Enable / disable multiple row selection. ]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 b][2 -|][*2 true][2 `= allow selecting
multiple rows at the same time, ][*2 false][2 `= only one row at
a time]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:IsMultiSelect`(`)const: [@(0.0.255)2 bool][2 _][*2 IsMultiS
elect][2 ()_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns true if ArrayCtrl is in multiselect mode.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:NoBackground`(bool`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 NoBackground][2 (][@(0.0.255)2 bool][2 _][*@3;2 b][2 _`=_][@(0.0.255)2 true][2 )]&]
[s0;l288; [2 Sets the widget into transparent mode `- background is
not painted and Transparent is activated `- a result, anything
painted behind the widget is visible, allowing client code to
provide any background it needs.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:PopUpEx`(bool`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 PopUpEx][2 (][@(0.0.255)2 bool][2 _][*@3;2 b][2 _`=_][@(0.0.255)2 true][2 )]&]
[s0;l288; [2 Activates showing small popup windows with cell content
when mouse is over and cell is to big to fit current dimensions.
Default is activated.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:NoPopUpEx`(`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&][2 _
][*2 NoPopUpEx][2 ()]&]
[s0;l288; [2 Same as PopUpEx(false).]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:NoFocusSetCursor`(`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 NoFocusSetCursor][2 ()]&]
[s0;l288; [2 Normally, when ArrayCtrl gets a focus and no cursor is
set (and cursor is allowed and there is at least one line), ArrayCtrl
a sets the cursor to the first line. This modifier deactivates
this feature.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:MovingHeader`(bool`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 MovingHeader][2 (][@(0.0.255)2 bool][2 _][*@3;2 b][2 )]&]
[s0;l288; [2 Activates dragging columns in header. Default is active.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:NoMovingHeader`(`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 NoMovingHeader][2 ()]&]
[s0;l288; [2 Same as MovingHeader(false).]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:ColumnSortFindKey`(bool`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 ColumnSortFindKey][2 (][@(0.0.255)2 bool][2 _][*@3;2 b][2 _`=_][@(0.0.255)2 true][2 )]&]
[s0;l288; [2 Before ColumnSort orders the ArrayCtrl, the key of current
row (with cursor) is stored and after sorting, it is restored.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:AllSorting`(`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&][2 _
][*2 AllSorting][2 ()]&]
[s0;l288; [2 If set, Sorting() is invoked for all columns (added either
before or after this modifier is called).]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:ColumnSortSecondary`(const ArrayCtrl`:`:Order`&`): [_^ArrayCtrl^2 A
rrayCtrl][@(0.0.255)2 `&][2 _][*2 ColumnSortSecondary][2 (][@(0.0.255)2 const][2 _][_^ArrayCtrl`:`:Order^2 O
rder][@(0.0.255)2 `&][2 _][*@3;2 order][2 )]&]
[s0;l288; [2 Sets secondary sorting predicate for column sorts (see
ColumnSort, Sorting) `- if two cells are equal when performing
sort by column, they are ordered by this predicate.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:NoColumnSortSecondary`(`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 NoColumnSortSecondary][2 ()]&]
[s0;l288; [2 Same as ColumnSortSecondary(false).]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:ColumnWidths`(const char`*`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 ColumnWidths][2 (][@(0.0.255)2 const][2 _][@(0.0.255)2 char][2 _`*][*@3;2 s][2 )]&]
[s0;l288; [2 Initializes column widths based on a text string containing
blank`-separated decimal numbers, e.g. `"1 4 6 4 1`".]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 s][2 -|control string defining
column widths]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GetColumnWidths`(`): [_^String^2 String][2 _][*2 GetColumnW
idths][2 ()]&]
[s0;l288; [2 Returns current column widths in format compatible with
ColumnWidths.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:CursorOverride`(const Image`&`): [_^ArrayCtrl^2 ArrayCt
rl][@(0.0.255)2 `&][2 _][*2 CursorOverride][2 (][@(0.0.255)2 const][2 _][_^Image^2 Image][@(0.0.255)2 `&
][2 _][*@3;2 arrow][2 )]&]
[s0;l288; [2 Overrides mouse cursor to ][*@3;2 arrow][2 . Setting Null
ends override.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:NoCursorOverride`(`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 NoCursorOverride][2 ()]&]
[s0;l288; [2 Same as CursorOverride(Null).]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:RowFormat`(const char`*`): [_^String^2 String][2 _][*2 RowF
ormat][2 (][@(0.0.255)2 const][2 _][@(0.0.255)2 char][2 _`*][*@3;2 s][2 )]&]
[s0;l288; [2 Formats a text by substituting ][*2 %s][2 with the array`-specific
term for `'row`' (as set by the ][*2 RowName][2 property). This
is used for array local menu items.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 s][2 -|][*2 Format][2 `-like string
to substitute.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:RowName`(const char`*`): [_^ArrayCtrl^2 ArrayCtrl][@(0.0.255)2 `&
][2 _][*2 RowName][2 (][@(0.0.255)2 const][2 _][@(0.0.255)2 char][2 _`*][*@3;2 s][2 )]&]
[s0;l288; [2 Sets the array`-specific term for `'row`'. This can be
used to customize the local menu terminology according to the
logical content of the array. For instance, when you have an
array with the list of employees, you can call ][*2 RowName(`"employee`")][2
and the menu items will then read ][/2 `'Insert new employee`',
`'Delete employee`'][2 etc.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 s][2 -|the term to substitute
for `'array row`' in menu items]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;* &]
[s0; [* Column structure programming]&]
[s0;0 &]
[s0; &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:IndexInfo`(int`): [_^ArrayCtrl`:`:IdInfo^2 IdInfo][@(0.0.255)2 `&
][2 _][*2 IndexInfo][2 (][@(0.0.255)2 int][2 _][*@3;2 ii][2 )]&]
[s0;l288; [2 Returns a reference to the ][*2 IdInfo][2 structure describing
a given array index (column in the source data matrix).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 ii][2 -|zero`-based ordinal number
of the array index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|IdInfo reference
for the given index]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:IndexInfo`(const Id`&`): [_^ArrayCtrl`:`:IdInfo^2 IdInf
o][@(0.0.255)2 `&][2 _][*2 IndexInfo][2 (][@(0.0.255)2 const ][_^Id^2 Id][2 `&_][*@3;2 id][2 )]&]
[s0;l288; [2 Returns a reference to the ][*2 IdInfo][2 structure describing
a given array index.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 id][2 -|the ][*2 Id][2 index identifier]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|IdInfo reference
for the given index]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:AddIndex`(const Id`&`): [_^ArrayCtrl`:`:IdInfo^2 IdInfo
][@(0.0.255)2 `&][2 _][*2 AddIndex][2 (][@(0.0.255)2 const][2 ][_^Id^2 Id][2 `&_][*@3;2 id][2 )]&]
[s0;l288; [2 Adds a new index to the array and assign it a given ][*2 Id][2
identifier.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 id][2 -|new index identifier]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|A reference to
the ][*2 IdInfo ][2 structure describing the newly added index. The
reference can be used to set additional index properties.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:AddIndex`(`): [_^ArrayCtrl`:`:IdInfo^2 IdInfo][@(0.0.255)2 `&
][2 _][*2 AddIndex][2 ()]&]
[s0;l288; [2 Adds a new index (without an identifier) to the array.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|A reference to
the ][*2 IdInfo][2 structure describing the newly added index.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GetIndexCount`(`)const: [@(0.0.255)2 int][2 _][*2 GetIndexC
ount][2 ()_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns number of indices in the array.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|index count]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GetId`(int`)const: [_^Id^2 Id][2 _][*2 GetId][2 (][@(0.0.255)2 i
nt][2 _][*@3;2 ii][2 )_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns the identifier of a given index (addresses by
its zero`-based ordinal number).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 ii][2 -|zero`-based ordinal number
of the queried index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|index identifier
or ][*2 Null][2 if the index has no identifier]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GetPos`(const Id`&`)const: [@(0.0.255)2 int][2 _][*2 GetPos
][2 (][@(0.0.255)2 const ][_^Id^2 Id][2 `&_][*@3;2 id][2 )_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns the zero`-based positional number of the array
index with a given identifier.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 id][2 -|array index identifier]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|zero`-based index
number, `-1 when not found]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:SetId`(int`,const Id`&`): [_^ArrayCtrl`:`:IdInfo^2 IdIn
fo][@(0.0.255)2 `&][2 _][*2 SetId][2 (][@(0.0.255)2 int][2 _][*@3;2 ii][2 , ][@(0.0.255)2 const
][_^Id^2 Id][2 `&_][*@3;2 id][2 )]&]
[s0;l288; [2 Sets the identifier for a given array index. This can
be used to set or modify the identifier for a previously added
index.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 ii][2 -|zero`-based ordinal number
of the index to set the identifier for]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 id][2 -|new index identifier (][*2 Null][2
when none)]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|A reference to
the ][*2 IdInfo][2 descriptive structure for the ][/2 ii][2 `-th index.
The reference can be used to set additional properties of the
altered index.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:AddKey`(const Id`&`): [_^ArrayCtrl`:`:IdInfo^2 IdInfo][@(0.0.255)2 `&
][2 _][*2 AddKey][2 (][@(0.0.255)2 const ][_^Id^2 Id][2 `&_][*@3;2 id][2 )]&]
[s0;l288; [2 Adds a ][/2 primary key][2 index to the table. The ][/2 primary
key][2 is just another name for the first index (index with ordinal
number 0). This is just a handy convention often used for SQL`-based
tables. ][*2 AddKey][2 must be called only once after array initialization
or ][*2 Reset][2 and before calling any other functions adding indices
(like ][*2 AddIndex][2 , ][*2 AddColumn][2 or ][*2 AddCtrl][2 ). When ][*2 GetIndexCount()
> 0 ][2 before the call to this function, this method fails with
an ][*2 ASSERT][2 .]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 id][2 -|primary key identifier]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|A reference to
the descriptive ][*2 IdInfo][2 structure for the primary key index.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:AddKey`(`): [_^ArrayCtrl`:`:IdInfo^2 IdInfo][@(0.0.255)2 `&
][2 _][*2 AddKey][2 ()]&]
[s0;l288; [2 Adds a primary key index without an identifier to the
table. This is equivalent to ][*2 AddKey(Null)][2 .]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|A reference to
the ][*2 IdInfo][2 structure describing the primary key index.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GetKeyId`(`)const: [_^Id^2 Id][2 _][*2 GetKeyId][2 ()_][@(0.0.255)2 c
onst]&]
[s0;l288; [2 Returns primary key identifier for this table. This is
equivalent to calling ][*2 GetId(0)][2 .]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|primary key index
identifier]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:AddColumn`(const char`*`,int`): [_^ArrayCtrl`:`:Column^2 C
olumn][@(0.0.255)2 `&][2 _][*2 AddColumn][2 (][@(0.0.255)2 const][2 _][@(0.0.255)2 char][2 _`*][*@3;2 t
ext][2 _`=_NULL, ][@(0.0.255)2 int][2 _][*@3;2 w][2 _`=_][@3;2 0][2 )]&]
[s0;l288; [2 Add a new column`-index pair to the table. The function
adds a (source) index and an (output) column and sets the index
as the data source for the column. This is the most common method
for adding columns to the array.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 text][2 -|column name (displayed
in the array header)]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 w][2 -|logical relative column
width]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|A reference to
the ][*2 Column][2 structure describing the newly added column.
This can be used to set additional properties for the newly added
column and the corresponding header tab.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:AddColumn`(const Id`&`,const char`*`,int`): [_^ArrayCtrl`:`:Column^2 C
olumn][@(0.0.255)2 `&][2 _][*2 AddColumn][2 (][@(0.0.255)2 const ][_^Id^2 Id][2 `&_][*@3;2 id][2 ,
][@(0.0.255)2 const][2 _][@(0.0.255)2 char][2 _`*][*@3;2 text][2 , ][@(0.0.255)2 int][2 _][*@3;2 w][2 _
`=_][@3;2 0][2 )]&]
[s0;l288; [2 Adds a new column`-index pair to the table. This is equivalent
to the above two`-parameter version but, in addition, the method
sets the ][*2 Id][2 identifier for the newly created index.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 id][2 -|new index identifier]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 text][2 -|column name (displayed
in the header)]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 w][2 -|logical relative column
width]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|A reference to
the ][*2 Column][2 structure describing the newly added array column.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:AddColumnAt`(int`,const char`*`,int`): [_^ArrayCtrl`:`:Column^2 C
olumn][@(0.0.255)2 `&][2 _][*2 AddColumnAt][2 (][@(0.0.255)2 int][2 _][*@3;2 ii][2 ,
][@(0.0.255)2 const][2 _][@(0.0.255)2 char][2 _`*][*@3;2 text][2 , ][@(0.0.255)2 int][2 _][*@3;2 w][2 _
`=_][@3;2 0][2 )]&]
[s0;l288; [2 Adds a new column to the table and binds it to a given
source data index.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 ii][2 -|zero`-based ordinal number
of the index to use as source for this column]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 text][2 -|column name (displayed
in the header)]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 w][2 -|logical relative column
width]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|A reference to
the ][*2 Column][2 structure describing the newly added array column.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:AddColumnAt`(const Id`&`,const char`*`,int`): [_^ArrayCtrl`:`:Column^2 C
olumn][@(0.0.255)2 `&][2 _][*2 AddColumnAt][2 (][@(0.0.255)2 const ][_^Id^2 Id][2 `&_][*@3;2 id][2 ,
][@(0.0.255)2 const][2 _][@(0.0.255)2 char][2 _`*][*@3;2 text][2 , ][@(0.0.255)2 int][2 _][*@3;2 w
][2 _`=_][@3;2 0][2 )]&]
[s0;l288; [2 Adds a new column to the table and binds it to a given
source data index.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 id][2 -|identifier of the index
to use as source for the newly added column]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 text][2 -|column name (displayed
in the header)]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 w][2 -|logical relative column
width]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|A reference to
the ][*2 Column][2 structure describing the newly added array column.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:AddRowNumColumn`(const char`*`,int`): [_^ArrayCtrl`:`:Column^2 C
olumn][@(0.0.255)2 `&][2 _][*2 AddRowNumColumn][2 (][@(0.0.255)2 const][2 _][@(0.0.255)2 char][2 _
`*][*@3;2 text][2 , ][@(0.0.255)2 int][2 _][*@3;2 w][2 _`=_][@3;2 0][2 )]&]
[s0;l288; [2 Adds a new column to the table. The newly added column
has no source index, it is assumed to have an external data source.
Instead of the source data ][*2 Value][2 object, the current zero`-based
row number is passed to the column`'s ][*2 Convert][2 / ][*2 Display][2 .
This allows the host application to decode somehow the external
data based on the row number. In the current U`+`+ version, the
][/2 RowNum columns][2 cannot be edited (using the standard array
inline editing mechanism).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 text][2 -|column name (displayed
in the header)]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 w][2 -|logical relative column
width]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|A reference to
the ][*2 Column][2 structure describing the newly added array column.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:AddCtrl`(Ctrl`&`): [_^ArrayCtrl`:`:IdInfo^2 IdInfo][@(0.0.255)2 `&
][2 _][*2 AddCtrl][2 (][_^Ctrl^2 Ctrl][@(0.0.255)2 `&][2 _][*@3;2 ctrl][2 )]&]
[s0;l288; [2 Adds a new index`-control pair to the table; the index
keeps the source data and the external control is used to edit
it. The ArrayCtrl handles data transfer between the source data
matrix and the external control. The method returns a reference
the ][*2 IdInfo][2 descriptive structure for the newly added index.]&]
[s0;l288; [*2 Note:][2 it is good to keep in mind that there are a few
differences between the ordinary array cell editors and the freestanding
edit controls. In contrast with the cell editors, which appear
only when the row is opened for editing, the freestanding controls
are present all the time. For instance, the ArrayCtrl automatically
disables the controls when the cursor moves away from the table
(using ][*2 KillCursor][2 ) and re`-enables them after it comes back.
This is important e.g. if you want to implement an additional
logic enabling some of the controls only depending on the circumstances;
in such case, you have to use one of the notification callbacks
(like ][*2 WhenEnterRow][2 ) to force your additional behaviour
on the controls.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 ctrl][2 -|control to attach to
the given index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|a reference to
the IdInfo structure describing the newly added index]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:AddCtrl`(const Id`&`,Ctrl`&`): [_^ArrayCtrl`:`:IdInfo^2 I
dInfo][@(0.0.255)2 `&][2 _][*2 AddCtrl][2 (][@(0.0.255)2 const ][_^Id^2 Id][2 `&_][*@3;2 id][2 ,
][_^Ctrl^2 Ctrl][@(0.0.255)2 `&][2 _][*@3;2 ctrl][2 )]&]
[s0;l288; [2 Adds a new index`-control pair to the table. This is identical
to the above version with the only difference that the newly
added index is assigned an ][*2 Id][2 identifier at the same time.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 id][2 -|the identifier to assign
to the newly created index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 ctrl][2 -|freestanding control
used to edit the given index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|a reference to
the IdInfo structure describing the newly added index]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:AddCtrlAt`(int`,Ctrl`&`): [@(0.0.255)2 void][2 _][*2 AddCtr
lAt][2 (][@(0.0.255)2 int][2 _][*@3;2 ii][2 , ][_^Ctrl^2 Ctrl][@(0.0.255)2 `&][2 _][*@3;2 ctrl][2 )]&]
[s0;l288; [2 Adds a new control to the table and binds it to the index
with given ordinal number. You can use this method to create
the binding between the control and an arbitrary source index.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 ii][2 -|zero`-based ordinal number
of the index to bind to this control]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 ctrl][2 -|freestanding control
used to edit the ][/2 ii][2 `-th data index]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:AddCtrlAt`(const Id`&`,Ctrl`&`): [@(0.0.255)2 void][2 _][*2 A
ddCtrlAt][2 (][@(0.0.255)2 const ][_^Id^2 Id][2 `&_][*@3;2 id][2 , ][_^Ctrl^2 Ctrl][@(0.0.255)2 `&
][2 _][*@3;2 ctrl][2 )]&]
[s0;l288; [2 Adds a new control to the table and binds it to the index
with given identifier.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 id][2 -|identifier of the index
to bind to this control]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 ctrl][2 -|freestanding control
used to edit the index with identifier ][/2 id]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:AddRowNumCtrl`(Ctrl`&`): [@(0.0.255)2 void][2 _][*2 AddRowN
umCtrl][2 (][_^Ctrl^2 Ctrl][@(0.0.255)2 `&][2 _][*@3;2 ctrl][2 )]&]
[s0;l288; [2 Adds a new freestanding control to the table. The control
is not bound to any source data index. During cursor movement
in the array, array uses the control`'s ][*2 SetData][2 method to
set it to the current row number. The control must be ready for
that and it can use the row number value to decode some externally
located data for display. In the current U`+`+ version, such
controls cannot be used for editing (there is currently no clean
way to store the edited data back to its external storage).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 ctrl][2 -|][/2 RowNum][2 `-based freestanding
editor control]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GetColumnCount`(`)const: [@(0.0.255)2 int][2 _][*2 GetColum
nCount][2 ()_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns the current number of (output) columns in the
array.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|number of columns]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:FindColumnWithPos`(int`)const: [@(0.0.255)2 int][2 _][*2 Fi
ndColumnWithPos][2 (][@(0.0.255)2 int][2 _][*@3;2 pos][2 )_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns the zero`-based index of a column based on its
source data index.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 pos][2 -|ordinal number of the
source index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|ordinal number
of the column having the given index as its source, `-1 when
not found]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:FindColumnWithId`(const Id`&`)const: [@(0.0.255)2 int][2 _
][*2 FindColumnWithId][2 (][@(0.0.255)2 const ][_^Id^2 Id][2 `&_][*@3;2 id][2 )_][@(0.0.255)2 con
st]&]
[s0;l288; [2 Returns the zero`-based index of a column based on its
source data index.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 id][2 -|source index identifier]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|ordinal number
of the column having the given index as its source, `-1 when
not found]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:ColumnAt`(int`): [_^ArrayCtrl`:`:Column^2 Column][@(0.0.255)2 `&
][2 _][*2 ColumnAt][2 (][@(0.0.255)2 int][2 _][*@3;2 i][2 )]&]
[s0;l288; [2 Returns the ][*2 Column][2 structure describing a given column.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 i][2 -|zero`-based column index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|a reference to
the ][*2 Column][2 structure describing the given column]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:ColumnAt`(const Id`&`): [_^ArrayCtrl`:`:Column^2 Column
][@(0.0.255)2 `&][2 _][*2 ColumnAt][2 (][@(0.0.255)2 const ][_^Id^2 Id][2 `&_][*@3;2 id][2 )]&]
[s0;l288; [2 Returns the ][*2 Column][2 structure describing a given column.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 i][2 -|zero`-based column index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|a constant reference
to the ][*2 Column][2 structure describing the given column]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:ColumnAt`(int`)const: [@(0.0.255)2 const][2 _][_^ArrayCtrl`:`:Column^2 C
olumn][@(0.0.255)2 `&][2 _][*2 ColumnAt][2 (][@(0.0.255)2 int][2 _][*@3;2 i][2 )_][@(0.0.255)2 cons
t]&]
[s0;l288; [2 Returns the ][*2 Column][2 structure describing a column
with given source index. This is merely the const version of
the above method; it can be used to query properties for the
column.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 id][2 -|identifier of the index
used as source for the column]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|a reference to
the ][*2 Column][2 structure describing the given column]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:ColumnAt`(const Id`&`)const: [@(0.0.255)2 const][2 _][_^ArrayCtrl`:`:Column^2 C
olumn][@(0.0.255)2 `&][2 _][*2 ColumnAt][2 (][@(0.0.255)2 const ][_^Id^2 Id][2 `&_][*@3;2 id][2 )_][@(0.0.255)2 c
onst]&]
[s0;l288; [2 Returns a constant reference to the ][*2 Column][2 structure
describing a column with given source index. This is the constant
version of the above method; it can be used to query properties
for the column.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 id][2 -|identifier of the index
used as source for the column]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|a constant reference
to the ][*2 Column][2 structure describing the given column]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:HeaderTab`(int`): [_^HeaderCtrl`:`:Column^2 HeaderCtrl`:
:Column][@(0.0.255)2 `&][2 _][*2 HeaderTab][2 (][@(0.0.255)2 int][2 _][*@3;2 i][2 )]&]
[s0;l288; [2 Returns the ][*^topic`:`/`/CtrlLib`/src`/HeaderCtrl`$en`-us`#`:`:HeaderCtrl`:`:Column`:`:Min`(int`)^2 H
eaderCtrl`::Column][2 descriptive structure for the given column.
The correspondence between the array columns and the header tabs
is 1:1, so that the indices of both are always the same (][*2 array.GetColumnCount()
`=`= array.HeaderObject().GetCount()][2 holds all the time).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 i][2 -|zero`-based column index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|a reference to
the ][*2 HeaderCtrl`::Column][2 structure. This can be used to set
additional properties of the header column (e.g. column width
constraints, font and icon for the column title etc.)]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:HeaderTab`(int`)const: [@(0.0.255)2 const][2 _][_^HeaderCtrl`:`:Column^2 H
eaderCtrl`::Column][@(0.0.255)2 `&][2 _][*2 HeaderTab][2 (][@(0.0.255)2 int][2 _][*@3;2 i][2 )_][@(0.0.255)2 c
onst]&]
[s0;l288; [2 Returns a constant reference to the ][*2 HeaderCtrl`::Column][2
structure for the given column.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 i][2 -|zero`-based column index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|a reference to
the ][*2 HeaderCtrl`::Column][2 structure. This can be used to set
additional properties of the header column (e.g. column width
constraints, font and icon for the column title etc.)]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:HeaderTab`(const Id`&`): [_^HeaderCtrl`:`:Column^2 Head
erCtrl`::Column][@(0.0.255)2 `&][2 _][*2 HeaderTab][2 (][@(0.0.255)2 const
][_^Id^2 Id][2 `&_][*@3;2 id][2 )]&]
[s0;l288; [2 Returns the ][*2 HeaderCtrl`::Column][2 descriptive structure
for the column bound to a given source index.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 id][2 -|identifier of the index
used as source for the column]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|a reference to
the ][*2 HeaderCtrl`::Column][2 structure]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:HeaderTab`(const Id`&`)const: [@(0.0.255)2 const][2 _][_^HeaderCtrl`:`:Column^2 H
eaderCtrl`::Column][@(0.0.255)2 `&][2 _][*2 HeaderTab][2 (][@(0.0.255)2 const
][_^Id^2 Id][2 `&_][*@3;2 id][2 )_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns a constant reference to the ][*2 HeaderCtrl`::Column][2
descriptive structure for the column bound to a given source
index.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 id][2 -|identifier of the index
used as source for the column]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|a constant reference
to the ][*2 HeaderCtrl`::Column][2 structure]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:HeaderObject`(`)const: [@(0.0.255)2 const][2 _][_^HeaderCtrl^2 H
eaderCtrl][@(0.0.255)2 `&][2 _][*2 HeaderObject][2 ()_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns a non`-constant reference to the ][*2 HeaderCtrl][2
object for this table. The reference can be further used to alter
properties of the table header (tab visibility, header visual
mode and so on).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|A non`-constant
reference to the table HeaderCtrl object.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:HeaderObject`(`): [_^HeaderCtrl^2 HeaderCtrl][@(0.0.255)2 `&
][2 _][*2 HeaderObject][2 ()]&]
[s0;l288; [2 This is just the constant version of the above method;
when called on a constant ][*2 ArrayCtrl][2 reference, it returns
a constant reference to its underlying HeaderCtrl object which
can be then used to query additional header information.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|A constant reference
to the table HeaderCtrl object.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:SerializeHeader`(Stream`&`): [@(0.0.255)2 void][2 _][*2 Ser
ializeHeader][2 (][_^Stream^2 Stream][@(0.0.255)2 `&][2 _][*@3;2 s][2 )]&]
[s0;l288; [2 Serializes all information pertaining to the array header
(mainly the user`-set column widths). This is equivalent to calling
][*2 HeaderObject().Serialize(s)][2 . The main purpose of this function
is to allow storing header configuration to be restored upon
opening the dialog or the application for the next time. This
function is now deprecated in favor of SerializeSettings.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 s][2 -|the ][*^topic`:`/`/Core`/src`/Stream`$en`-us^2 S
tream][2 object to serialize the header to/from]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:SerializeSettings`(Stream`&`): [@(0.0.255)2 void][2 _][*2 S
erializeSettings][2 (][_^Stream^2 Stream][@(0.0.255)2 `&][2 _][*@3;2 s][2 )]&]
[s0;l288; [2 Serializes all information pertaining to the array header
(mainly the user`-set column widths) and the setting of sort
column. The main purpose of this function is to allow storing
configuration to be restored upon opening the dialog or the application
for the next time.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:SetDisplay`(int`,int`,const Display`&`): [@(0.0.255)2 v
oid][2 _][*2 SetDisplay][2 (][@(0.0.255)2 int][2 _][*@3;2 i][2 , ][@(0.0.255)2 int][2 _][*@3;2 col][2 ,
][@(0.0.255)2 const][2 _][_^Display^2 Display][@(0.0.255)2 `&][2 _][*@3;2 d][2 )]&]
[s0;l288; [2 Sets the ][*2 Display][2 object for a given array cell.]&]
[s0;l288;*2 &]
[s0;l288; [*2 Note:][2 the ownership to the Display object is not transferred
by this call. The ArrayCtrl stores a mere pointer to it and it
is the responsibility of the programmer to keep the Display object
alive as long as necessary (until the array is shut down or the
cell display changed via another call to SetDisplay). In fact,
most Display`-based objects don`'t support data copying at all.
In any case, copying Displays is not a very good practice and
is very prone to slicing (as most actual Displays are actually
derived classes with additional data members).]&]
[s0;l288;2 &]
[s0;l288; [2 In many cases it would be relatively safe to assume that
the Display is not used unless the array is actually painted
(e.g., when the control is not bound to a parent or when its
view has zero size), but it is not a very wise practice and it
can fail in very weird ways under special circumstances (like
making screenshots or graphical exports from the array control).]&]
[s0;l288;2 &]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 i][2 -|zero`-based row index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 j][2 -|zero`-based column index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 d][2 -|display to use]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GetDisplay`(int`,int`): [@(0.0.255)2 const][2 _][_^Display^2 D
isplay][@(0.0.255)2 `&][2 _][*2 GetDisplay][2 (][@(0.0.255)2 int][2 _][*@3;2 row][2 ,
][@(0.0.255)2 int][2 _][*@3;2 col][2 )]&]
[s0;l288; [2 Returns a reference to the Display object for the given
array cell.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 row][2 -|zero`-based row index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 col][2 -|zero`-based column index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|a reference to
the Display object.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GetDisplay`(int`): [@(0.0.255)2 const][2 _][_^Display^2 Dis
play][@(0.0.255)2 `&][2 _][*2 GetDisplay][2 (][@(0.0.255)2 int][2 _][*@3;2 col][2 )]&]
[s0;l288; [2 Returns a reference to the Display object for the given
array column.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 col][2 -|zero`-based column index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|constant reference
to the column Display]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:SetCtrl`(int`,int`,Ctrl`&`,bool`): [@(0.0.255)2 void][2 _
][*2 SetCtrl][2 (][@(0.0.255)2 int][2 _][*@3;2 i][2 , ][@(0.0.255)2 int][2 _][*@3;2 col][2 ,
][_^Ctrl^2 Ctrl][@(0.0.255)2 `&][2 _][*@3;2 ctrl][2 , ][@(0.0.255)2 bool][2 _][*@3;2 value][2 _`=_][@(0.0.255)2 t
rue][2 )]&]
[s0;l288; [2 Sets an external control to use as the editor for a single
array cell. Naturally, the same Ctrl object cannot be used as
the editor for multiple array cells. If the position of Ctrl
is equivalent to `'SetRect(0, 0, 0, 0)`', which is the default
value, Ctrl is resized to fit the ArrayCtrl cell accurately,
otherwise the position represents the position within the cell.
If ][*@3;2 value][2 is true, then the Ctrl represents the value
of the cell, otherwise it is independent of it.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GetTotalCy`(`)const: [@(0.0.255)2 int][2 _][*2 GetTotalCy][2 (
)_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns total height of the array (sum of the individual
line heights for all array rows)]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|array height in
pixels]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GetLineAt`(int`)const: [@(0.0.255)2 int][2 _][*2 GetLineAt][2 (
][@(0.0.255)2 int][2 _][*@3;2 y][2 )_][@(0.0.255)2 const]&]
[s0;l288; [2 Locates the array row according to given ][/2 y][2 coordinate
(such array row ][/2 r][2 for which ][*2 GetLineY(r) <`= y `&`& GetLineY(r)
`+ GetLineCy(r) > y][2 ).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 y][2 -|vertical pixel coordinate
to locate]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|zero`-based row
number or `-1 when not found]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GetClickColumn`(`)const: [@(0.0.255)2 int][2 _][*2 GetClick
Column][2 ()_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns column index of the last clicked column in the
array. If the click happens past the last row of array, returns
Null.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|zero`-based index
of the relevant column]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GetClickRow`(`)const: [@(0.0.255)2 int][2 _][*2 GetClickRow
][2 ()_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns column index of the last clicked row in the array.
If the click happens past the last row of array, returns Null.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|zero`-based index
of the relevant column]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GetClickPos`(`)const: [_^Point^2 Point][2 _][*2 GetClickPos
][2 ()_][@(0.0.255)2 const]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 Point(GetClickColumn(),
GetClickRow())][2 .]&]
[s0;0 &]
[s0;* &]
[s0; [* Data setting and retrieval]&]
[s0;0 &]
[s0; &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:SetCount`(int`): [@(0.0.255)2 void][2 _][*2 SetCount][2 (][@(0.0.255)2 i
nt][2 _][*@3;2 c][2 )]&]
[s0;l288; [2 Sets the number of rows in the array. This extends or
trims the source matrix as necessary. When using the Ctrl`-based
individual cell editors, as a side`-effect of this call some
controls can be constructed or destroyed.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 c][2 -|new row count]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:SetVirtualCount`(int`): [@(0.0.255)2 void][2 _][*2 SetVirtu
alCount][2 (][@(0.0.255)2 int][2 _][*@3;2 c][2 )]&]
[s0;l288; [2 Sets the number of rows in an array with external data.
This makes sense only when all the ][/2 Column`'s][2 and ][/2 Ctrl`'s][2
of the array are ][/2 rownum][2 `-based. The function doesn`'t physically
allocate any source data matrix space, it just makes the array
`'think`' it has ][/2 c][2 rows (this is of course necessary for
the Paint routine, for cursor / selection management and so on).]&]
[s0;l288; [*2 Note:][2 in the current implementation, selection flags
for the individual rows are kept in the row objects. Therefore
it is not very wise to use multiselection for arrays with external
data, because as soon as the last row is selected, all row storage
structures are allocated as a side effect to keep the selection
flags.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 c][2 -|new `'virtual`' number
of rows]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GetCount`(`)const: [@(0.0.255)2 int][2 _][*2 GetCount][2 ()_][@(0.0.255)2 c
onst]&]
[s0;l288; [2 Returns the number of rows in the array. In fact, this
returns the maximum of the number of `'real`' source matrix rows
(as set by the SetCount / Add / Insert methods) and the `'virtual`'
row count (as se by SetVirtualCount). By checking the implementation
of this method, you can easily find that, simply,]&]
[s0;l288;2 &]
[s0;l288; [C2 int ArrayCtrl`::GetCount() const `{]&]
[s0;l288; [C2 -|-|return max(virtualcount, array.GetCount());]&]
[s0;l288; [C2 `}]&]
[s0;l288;2 &]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|Number of rows
in the array.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Clear`(`): [@(0.0.255)2 void][2 _][*2 Clear][2 ()]&]
[s0;l288; [2 Clears the array source data matrix and sets the virtual
row count to 0.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Shrink`(`): [@(0.0.255)2 void][2 _][*2 Shrink][2 ()]&]
[s0;l288; [2 Shrinks the source data array, i.e. reallocates the data
to the minimum required memory space.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Get`(int`,int`)const: [_^Value^2 Value][2 _][*2 Get][2 (][@(0.0.255)2 i
nt][2 _][*@3;2 i][2 , ][@(0.0.255)2 int][2 _][*@3;2 ii][2 )_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns the value at a given location in the source data
matrix.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 i][2 -|zero`-based row number]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 ii][2 -|zero`-based index ordinal
number]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|value at the given
location in the source data matrix]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Get`(int`,const Id`&`)const: [_^Value^2 Value][2 _][*2 Get][2 (
][@(0.0.255)2 int][2 _][*@3;2 i][2 , ][@(0.0.255)2 const ][_^Id^2 Id][2 `&_][*@3;2 id][2 )_][@(0.0.255)2 c
onst]&]
[s0;l288; [2 Returns the value at a given location in the source data
matrix. In this version, the source indices are addressed by
their identifiers.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 i][2 -|zero`-based row number]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 id][2 -|source index identifier]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|value at the given
location in the source data matrix]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Get`(int`)const: [_^Value^2 Value][2 _][*2 Get][2 (][@(0.0.255)2 i
nt][2 _][*@3;2 ii][2 )_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns the value of a given source index at the currently
active cursor row. This is equivalent to ][*2 Get(GetCursor(),
ii)][2 . When the row is currently being edited, the function returns
the `'new`' value (the current value of the respective editor
control, i.e. potentially edited).]&]
[s0;l288; [*2 Note:][2 when the cursor row is not set (when ][*2 !IsCursor()][2 ),
the function fails with an ][*2 ASSERT][2 .]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 ii][2 -|zero`-based index ordinal
number]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|value at a given
location in the cursor row]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Get`(const Id`&`)const: [_^Value^2 Value][2 _][*2 Get][2 (][@(0.0.255)2 c
onst ][_^Id^2 Id][2 `&_][*@3;2 id][2 )_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns the value of a given source index at the currently
active cursor row. This is equivalent to ][*2 Get(GetCursor(),
id)][2 .]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 id][2 -|source index identifier]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|value at the given
location in the cursor row]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GetOriginal`(int`)const: [_^Value^2 Value][2 _][*2 GetOrigi
nal][2 (][@(0.0.255)2 int][2 _][*@3;2 ii][2 )_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns the `'original`' value of a given source index
at the currently active cursor row. When the row is open for
editing, this function returns the `'old`' value before any editing
took place.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 ii][2 -|zero`-based index ordinal
number]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|value at the given
location in the cursor row]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GetOriginal`(const Id`&`)const: [_^Value^2 Value][2 _][*2 G
etOriginal][2 (][@(0.0.255)2 const ][_^Id^2 Id][2 `&_][*@3;2 id][2 )_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns the `'original`' value (i.e., without any editing
changed applied) of a given source index at the currently active
cursor row.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 id][2 -|source index identifier]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|value at the given
location in the cursor row]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GetKey`(`)const: [_^Value^2 Value][2 _][*2 GetKey][2 ()_][@(0.0.255)2 c
onst]&]
[s0;l288; [2 Returns the value of the current row`'s primary key. This
is equivalent to ][*2 Get(0)][2 .]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|value at the index
#0 in the cursor row]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GetOriginalKey`(`)const: [_^Value^2 Value][2 _][*2 GetOrigi
nalKey][2 ()_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns the original value of the current row`'s primary
key. During editing, the function returns the value at the time
of opening the row for editing, i.e. without any editing changes
applied. This is equivalent to ][*2 GetOriginal(0)][2 .]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|value at the index
#0 in the cursor row]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Set`(int`,int`,const Value`&`): [@(0.0.255)2 void][2 _][*2 S
et][2 (][@(0.0.255)2 int][2 _][*@3;2 i][2 , ][@(0.0.255)2 int][2 _][*@3;2 ii][2 ,
][@(0.0.255)2 const][2 _][_^Value^2 Value][@(0.0.255)2 `&][2 _][*@3;2 v][2 )]&]
[s0;l288; [2 Sets the value at a given location in the source data
matrix.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 i][2 -|zero`-based row number]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 ii][2 -|zero`-based index ordinal
number]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 v][2 -|value to set to the given
cell]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Set`(int`,const Id`&`,const Value`&`): [@(0.0.255)2 voi
d][2 _][*2 Set][2 (][@(0.0.255)2 int][2 _][*@3;2 i][2 , ][@(0.0.255)2 const ][_^Id^2 Id][2 `&_][*@3;2 i
d][2 , ][@(0.0.255)2 const][2 _][_^Value^2 Value][@(0.0.255)2 `&][2 _][*@3;2 v][2 )]&]
[s0;l288; [2 Sets the value at a given location in the source data
matrix. ]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 i][2 -|zero`-based row number]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 id][2 -|source index identifier]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 v][2 -|value to set to the given
cell]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Set`(int`,const Value`&`): [@(0.0.255)2 void][2 _][*2 Set][2 (
][@(0.0.255)2 int][2 _][*@3;2 ii][2 , ][@(0.0.255)2 const][2 _][_^Value^2 Value][@(0.0.255)2 `&][2 _
][*@3;2 v][2 )]&]
[s0;l288; [2 Modifies the value at a given location in the cursor row.
When the row is open for editing, the function immediately changes
the value in the appropriate editor control.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 ii][2 -|zero`-based index ordinal
number]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 v][2 -|value to set]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Set`(const Id`&`,const Value`&`): [@(0.0.255)2 void][2 _][*2 S
et][2 (][@(0.0.255)2 const ][_^Id^2 Id][2 `&_][*@3;2 id][2 , ][@(0.0.255)2 const][2 _][_^Value^2 Va
lue][@(0.0.255)2 `&][2 _][*@3;2 v][2 )]&]
[s0;l288; [2 Modifies the value at a given location in the cursor row.
This overloaded version uses the ][*2 Id][2 identifier to address
the relevant index.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 id][2 -|index identifier]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 v][2 -|value to set]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GetColumn`(int`,int`)const: [_^Value^2 Value][2 _][*2 GetCo
lumn][2 (][@(0.0.255)2 int][2 _][*@3;2 row][2 , ][@(0.0.255)2 int][2 _][*@3;2 col][2 )_][@(0.0.255)2 c
onst]&]
[s0;l288; [2 Returns the value of a given column. This depends on the
column`-index mapping established when adding columns to the
table. When the column is a ][/2 rownum][2 type (it is bound to
no source indices), the function just returns the ][/2 row][2 parameter.
For columns with a single source index, the function returns
the value of the mapped source index. For columns with multiple
source indices, the function returns a ][*2 ValueArray ][2 containing
the values of its source indices.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 row][2 -|zero`-based row index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 col][2 -|zero`-based column index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|value of the given
column]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GetConvertedColumn`(int`,int`): [_^Value^2 Value][2 _][*2 G
etConvertedColumn][2 (][@(0.0.255)2 int][2 _][*@3;2 row][2 , ][@(0.0.255)2 int][2 _][*@3;2 col][2 )
]&]
[s0;l288; [2 Returns the value of a given column after application
of its ][*2 Convert][2 . For performance reasons, the values obtained
by calls to the ][*2 Convert`::Format][2 methods are cached internally
within the ArrayCtrl object. You can manipulate the conversion
cache using the methods ][*^topic`:`/`/CtrlLib`/src`/ArrayCtrl`$en`-us`#`:`:ArrayCtrl`:`:ClearCache`(`)^2 C
learCache][2 and][*2 ][*^topic`:`/`/CtrlLib`/src`/ArrayCtrl`$en`-us`#`:`:ArrayCtrl`:`:InvalidateCache`(int`)^2 I
nvalidateCache][2 .]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 row][2 -|zero`-based row index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 col][2 -|zero`-based column index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|the converted cell
value]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:ReadRow`(int`)const: [_^Vector^2 Vector][2 <][_^Value^2 Val
ue][2 >_][*2 ReadRow][2 (][@(0.0.255)2 int][2 _][*@3;2 i][2 )_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns a ][*2 Vector][2 containing the values of all source
indices in the given row. Invariantly, the ][*2 GetCount()][2 of
the returned array is equal to the ][*2 GetIndexCount()][2 of the
source ArrayCtrl.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 i][2 -|zero`-based row index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|an array of all
source values in the given row]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Set`(int`,const Vector`<Value`>`&`): [@(0.0.255)2 void][2 _
][*2 Set][2 (][@(0.0.255)2 int][2 _][*@3;2 i][2 , ][@(0.0.255)2 const][2 _][_^Vector^2 Vector][2 <][_^Value^2 V
alue][2 >`&_][*@3;2 v][2 )]&]
[s0;l288; [2 Modified a given row by setting all source index values
to values passed in the parameter ][/2 v][2 .]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 i][2 -|zero`-based row index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 v][2 -|an array of values to set
to the source data matrix row]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Add`(`): [@(0.0.255)2 void][2 _][*2 Add][2 ()]&]
[s0;l288; [2 Adds an empty row to the source data matrix.]&]
[s0;l288; [*2 Note:][2 the ][*2 InsertValue][2 property of the ][*2 IdInfo][2
structure defines a method to generate / retrieve default values
for newly inserted rows. However, these values are only used
during the GUI`-based ][*2 DoInsert][2 method and do not apply to
the ][*2 Add][2 method. If you need to set the newly added source
matrix row to some non`-null defaults, you have to modify the
relevant cells manually.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Add`(const Vector`<Value`>`&`): [@(0.0.255)2 void][2 _][*2 A
dd][2 (][@(0.0.255)2 const][2 _][_^Vector^2 Vector][2 <][_^Value^2 Value][2 >`&_][*@3;2 v][2 )]&]
[s0;l288; [2 Adds a new row at the end of the source data matrix. The
][*^topic`:`/`/Core`/src`/Vector`$en`-us^2 Vector][2 parameter contains
the values to be used to initialize the new row of the matrix.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 v][2 -|new matrix row]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Set`(int`,const VectorMap`<String`,Value`>`&`): [@(0.0.255)2 v
oid][2 _][*2 Set][2 (][@(0.0.255)2 int][2 _][*@3;2 i][2 , ][@(0.0.255)2 const][2 _][_^VectorMap^2 Vec
torMap][2 <][_^String^2 String][2 , ][_^Value^2 Value][2 >`&_][*@3;2 m][2 )]&]
[s0;l288; [2 Sets the row based on map. Keys are matched to row Ids,
keys that are not found are ignored, those found are assigned
correspoding map values.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Set`(int`,const ValueMap`&`): [@(0.0.255)2 void][2 _][*2 Se
t][2 (][@(0.0.255)2 int][2 _][*@3;2 i][2 , ][@(0.0.255)2 const][2 _][_^ValueMap^2 ValueMap][@(0.0.255)2 `&
][2 _][*@3;2 m][2 )]&]
[s0;l288; [2 Sets the row based on map. Keys are matched to row Ids,
keys that are not found are ignored, those found are assigned
correspoding map values.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Add`(const VectorMap`<String`,Value`>`&`): [@(0.0.255)2 v
oid][2 _][*2 Add][2 (][@(0.0.255)2 const][2 _][_^VectorMap^2 VectorMap][2 <][_^String^2 String][2 ,
][_^Value^2 Value][2 >`&_][*@3;2 m][2 )]&]
[s0;l288; [2 Adds the row based on map. Keys are matched to row Ids,
keys that are not found are ignored, those found are assigned
correspoding map values.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Add`(const ValueMap`&`): [@(0.0.255)2 void][2 _][*2 Add][2 (][@(0.0.255)2 c
onst][2 _][_^ValueMap^2 ValueMap][@(0.0.255)2 `&][2 _][*@3;2 m][2 )]&]
[s0;l288; [2 Adds the row based on map. Keys are matched to row Ids,
keys that are not found are ignored, those found are assigned
correspoding map values.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Add`(const Value`&`[`,const Value`&`]`.`.`.`): [@(0.0.255)2 v
oid][2 _][*2 Add][2 (][@(0.0.255)2 const][2 _][_^Value^2 Value][@(0.0.255)2 `&][2 _`[,
][@(0.0.255)2 const][2 _][_^Value^2 Value][@(0.0.255)2 `&][2 _`]...)]&]
[s0;l288; [2 Adds a new row at the bottom of the source data matrix.
This is in fact a series of functions (generated automatically
using the ][*2 Expand][2 macro) which takes an arbitrary number
of arguments. Its arguments are used to initialize the source
indices in the newly added row.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Add`(const Nuller`&`): [@(0.0.255)2 void][2 _][*2 Add][2 (][@(0.0.255)2 c
onst][2 _][_^Nuller^2 Nuller][@(0.0.255)2 `&][2 _][*@3;2 null][2 )]&]
[s0;l288; [2 This is helper method required for correct overloading
resolution of Add(Null).]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Insert`(int`): [@(0.0.255)2 void][2 _][*2 Insert][2 (][@(0.0.255)2 i
nt][2 _][*@3;2 i][2 )]&]
[s0;l288; [2 Inserts a new row into the source array. All indices are
initialized to ][*2 Null][2 values. The ][*2 InsertValue][2 property
doesn`'t apply; if you need to set the newly created row to some
non`-trivial values, you have to do so manually.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 i][2 -|zero`-based position of
the newly created row]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Insert`(int`,const Vector`<Value`>`&`): [@(0.0.255)2 vo
id][2 _][*2 Insert][2 (][@(0.0.255)2 int][2 _][*@3;2 i][2 , ][@(0.0.255)2 const][2 _][_^Vector^2 Vect
or][2 <][_^Value^2 Value][2 >`&_][*@3;2 v][2 )]&]
[s0;l288; [2 Inserts a new row into the array at a given position.
The second parameter, ][/2 v][2 , is used to initialize the source
indices of the newly created row.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 i][2 -|zero`-based row index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 v][2 -|a vector of values used
to initialize the source indices of the given row]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Remove`(int`): [@(0.0.255)2 void][2 _][*2 Remove][2 (][@(0.0.255)2 i
nt][2 _][*@3;2 i][2 )]&]
[s0;l288; [2 Removes the given source data row.]&]
[s0;l288; [*2 Note:][2 the ][*2 AskRemove][2 property of the ][*2 ArrayCtrl][2
object tells whether a confirmation dialog should pop up every
time the user wants to remove a row. However, this method applies
only to the GUI`-based row removal; the ][*2 Remove][2 method always
removes the requested row unconditionally without popping up
any confirmation dialog.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 i][2 -|zero`-based index of the
row to remove]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:SwapUp`(`): [@(0.0.255)2 void][2 _][*2 SwapUp][2 ()]&]
[s0;l288; [2 Exchanges the cursor row with the preceding row, effectively
moving it up.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:SwapDown`(`): [@(0.0.255)2 void][2 _][*2 SwapDown][2 ()]&]
[s0;l288; [2 Exchanges the cursor row with following row, effectively
moving it down.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Sort`(const ArrayCtrl`:`:Order`&`): [@(0.0.255)2 void][2 _
][*2 Sort][2 (][@(0.0.255)2 const][2 _][_^ArrayCtrl`:`:Order^2 ArrayCtrl`::Order][@(0.0.255)2 `&
][2 _][*@3;2 order][2 )]&]
[s0;l288; [2 Sorts the array rows according to a given ordering predicate.
The ][*2 ArrayCtrl`::Order][2 object defines the ordering predicate;
its ][*2 operator ()][2 should return ][*2 true][2 whenever its first
parameter (a vector containing the values of all source indices
in a row) is less than its second parameter.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 order][2 -|]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Sort`(int`,int`,const ArrayCtrl`:`:Order`&`): [@(0.0.255)2 v
oid][2 _][*2 Sort][2 (][@(0.0.255)2 int][2 _][*@3;2 from][2 , ][@(0.0.255)2 int][2 _][*@3;2 count][2 ,
][@(0.0.255)2 const][2 _][_^ArrayCtrl`:`:Order^2 ArrayCtrl`::Order][@(0.0.255)2 `&][2 _][*@3;2 o
rder][2 )]&]
[s0;l288; [2 Sorts a portion of the array using a given ordering predicate.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 from][2 -|zero`-based index of
the first row to sort]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 count][2 -|number of rows to be
sorted]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 order][2 -|the ordering predicate
object. The object should be derived from ][*2 ArrayCtrl`::Order][2
and should override the ][*2 operator ()][2 method. This method
should return ][*2 true ][2 whenever its first parameter (a vector
containing all source index values for a certain row) is less
than its second parameter.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Sort`(int`(`*`)`(const Vector`<Value`>`&v1`,const Vector`<Value`>`&v2`)`): [@(0.0.255)2 v
oid][2 _][*2 Sort][2 (][@(0.0.255)2 int][2 _(`*][*@3;2 compare][2 )(][@(0.0.255)2 const][2 _Vector<
Value>`&_v1, ][@(0.0.255)2 const][2 _Vector<Value>`&_v2))]&]
[s0;l288; [2 Sorts the array rows according to the order defined by
the specified ordering predicate ][/2 compare][2 . This is supposed
to be a global function returning ][*2 true][2 whenever its first
parameter (][/2 v1][2 , an array consisting of all source indices
within a row) is less than the second parameter ][/2 v2][2 (according
to the desired ordering).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 compare][2 -|the ordering predicate;
_the function is supposed to return ][*2 true][2 whenever its first
parameter (][/2 v1][2 ) is less than the second parameter (][/2 v2][2 )
according to the desired ordering.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Sort`(int`,int`(`*`)`(const Value`&v1`,const Value`&v2`)`): [@(0.0.255)2 v
oid][2 _][*2 Sort][2 (][@(0.0.255)2 int][2 _][*@3;2 ii][2 , ][@(0.0.255)2 int][2 _(`*][*@3;2 compare][2 )
(][@(0.0.255)2 const][2 _Value][@(0.0.255)2 `&][2 _v1, ][@(0.0.255)2 const][2 _Value][@(0.0.255)2 `&
][2 _v2)_`=_StdValueCompare)]&]
[s0;l288; [2 Sorts the array rows according to the given ordering predicate
for the source index with a given ordinal number. When not explicitly
specified, the ][*2 StdValueCompare][2 function is used as the default
comparison predicate.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 ii][2 -|zero`-based ordinal number
of the source index used for sorting]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 compare][2 -|the sorting predicate
function: the function is supposed to return ][*2 true][2 whenever
its first parameter (][/2 v1][2 ) is less than the second parameter
(][/2 v2][2 ) according to the desired ordering.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Sort`(const Id`&`,int`(`*`)`(const Value`&v1`,const Value`&v2`)`): [@(0.0.255)2 v
oid][2 _][*2 Sort][2 (][@(0.0.255)2 const ][_^Id^2 Id][2 `&_][*@3;2 id][2 , ][@(0.0.255)2 int][2 _(`*
][*@3;2 compare][2 )(][@(0.0.255)2 const][2 _Value][@(0.0.255)2 `&][2 _v1,
][@(0.0.255)2 const][2 _Value][@(0.0.255)2 `&][2 _v2)_`=_StdValueCompare)]&]
[s0;l288; [2 Sorts the array rows according to the given ordering predicate
for the source index with a given identifier. When not explicitly
specified, the ][*2 StdValueCompare][2 function is used as the default
comparison predicate.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 id][2 -|identifier of the source
index used for sorting]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 compare][2 -|the sorting predicate
function: the function is supposed to return ][*2 true][2 whenever
its first parameter (][/2 v1][2 ) is less than the second parameter
(][/2 v2][2 ) according to the desired ordering .]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Sort`(`): [@(0.0.255)2 void][2 _][*2 Sort][2 ()]&]
[s0;l288; [2 Sorts the array according to the default ordering predicate
for the first source index. This is equivalent to calling ][*2 Sort(0)][2 .]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:ColumnSort`(int`,const ValueOrder`&`): [@(0.0.255)2 voi
d][2 _][*2 ColumnSort][2 (][@(0.0.255)2 int][2 _][*@3;2 column][2 , ][@(0.0.255)2 const][2 _][_^ValueOrder^2 V
alueOrder][@(0.0.255)2 `&][2 _][*@3;2 order][2 )]&]
[s0;l288; [2 Sorts by the column. Note that this is different from
Sort, because the final converted value of column is used (which
can even be combination of more indexes).]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:SetSortColumn`(int`,bool`): [@(0.0.255)2 void][2 _][*2 SetS
ortColumn][2 (][@(0.0.255)2 int][2 _][*@3;2 ii][2 , ][@(0.0.255)2 bool][2 _][*@3;2 descending][2 _`=
_][@(0.0.255)2 false][2 )]&]
[s0;l288; [2 Sets the `"sorting`" column and calls DoColumnSort. This
setting is used by DoColumnSort.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:ToggleSortColumn`(int`): [@(0.0.255)2 void][2 _][*2 ToggleS
ortColumn][2 (][@(0.0.255)2 int][2 _][*@3;2 ii][2 )]&]
[s0;l288; [2 Similar to SetSortColumn, but if the column is already
set, descending flag is inverted; otherwise descending flag is
set to false (indicating ascending sort).]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:DoColumnSort`(`): [@(0.0.255)2 void][2 _][*2 DoColumnSort][2 (
)]&]
[s0;l288; [2 Sorts the array by sorting column and indicates it by
setting an image in the header.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:ClearCache`(`): [@(0.0.255)2 void][2 _][*2 ClearCache][2 ()]&]
[s0;l288; [2 Invalidates the whole ][/2 convert cache][2 . The convert
cache keeps the results of the ][*2 Convert`::Format][2 method applied
to individual array data cells for performance reasons. Whenever
you call the ][*2 ClearCache][2 method, all cache entries are marked
as obsolete and the ][*2 Convert][2 `'s ][*2 Format][2 method will be
called as soon as the converted value of a table cell is required
(usually during the next ][*2 Paint][2 ).]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:InvalidateCache`(int`): [@(0.0.255)2 void][2 _][*2 Invalida
teCache][2 (][@(0.0.255)2 int][2 _][*@3;2 i][2 )]&]
[s0;l288; [2 Invalidates a given row in the ][/2 convert cache][2 . For
performance reasons, the results of the ][*2 Convert`::Format][2
method applied to the individual data cells are kept in a cache.
This function marks a given row of the cache as obsolete; this
means the next time the converted values are to be used (usually
within the ][*2 Paint][2 routine or when setting up the row editor
controls), the ][*2 Convert][2 objects are used again to generate
the actualized output values.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 i][2 -|zero`-based row index]&]
[s0;0 &]
[s0; &]
[s0; [* Cursor and selection management]&]
[s0;0 &]
[s0; &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:ScrollUp`(`): [@(0.0.255)2 void][2 _][*2 ScrollUp][2 ()]&]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:ScrollDown`(`): [@(0.0.255)2 void][2 _][*2 ScrollDown][2 ()]&]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:ScrollPageUp`(`): [@(0.0.255)2 void][2 _][*2 ScrollPageUp][2 (
)]&]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:ScrollPageDown`(`): [@(0.0.255)2 void][2 _][*2 ScrollPageDo
wn][2 ()]&]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:ScrollEnd`(`): [@(0.0.255)2 void][2 _][*2 ScrollEnd][2 ()]&]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:ScrollBegin`(`): [@(0.0.255)2 void][2 _][*2 ScrollBegin][2 ()
]&]
[s0;l288; [2 Scrolls the content of ArrayCtrl.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GetSelectCount`(`)const: [@(0.0.255)2 int][2 _][*2 GetSelec
tCount][2 ()_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns the number of selected row within the table.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|number of selected
records (in the range ][/2 `[0 .. GetCount()`]][2 )]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:IsSelection`(`)const: [@(0.0.255)2 bool][2 _][*2 IsSelectio
n][2 ()_][@(0.0.255)2 const]&]
[s0;l288; [2 Checks whether any rows are selected. Equivalent to ][*2 GetSelectCount()
> 0][2 .]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 true][2 `= there
is at least one selected row, ][*2 false][2 `= there is none.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Select`(int`,bool`): [@(0.0.255)2 void][2 _][*2 Select][2 (][@(0.0.255)2 i
nt][2 _][*@3;2 i][2 , ][@(0.0.255)2 bool][2 _][*@3;2 sel][2 _`=_][@(0.0.255)2 true][2 )]&]
[s0;l288; [2 Selects / unselects a given row.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 i][2 -|zero`-based row index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 sel][2 -|][*2 true][2 `= add row
to the current selection, ][*2 false][2 `= remove row from selection]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Select`(int`,int`,bool`): [@(0.0.255)2 void][2 _][*2 Select
][2 (][@(0.0.255)2 int][2 _][*@3;2 i][2 , ][@(0.0.255)2 int][2 _][*@3;2 count][2 ,
][@(0.0.255)2 bool][2 _][*@3;2 sel][2 _`=_][@(0.0.255)2 true][2 )]&]
[s0;l288; [2 Selects / unselects a given row range.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 i][2 -|zero`-based index of the
first row to select / unselect]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 count][2 -|number of rows to select
/ unselect]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 sel][2 -|][*2 true][2 `= select the
rows, ][*2 false][2 `= unselect the rows]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:IsSelected`(int`)const: [@(0.0.255)2 bool][2 _][*2 IsSelect
ed][2 (][@(0.0.255)2 int][2 _][*@3;2 i][2 )_][@(0.0.255)2 const]&]
[s0;l288; [2 Checks whether a given row is selected. For tables without
the multiselection option, this is equal to the check ][*2 GetCursor()
`=`= i][2 .]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 i][2 -|zero`-based row index to
check for selection]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 true][2 `= row
is selected, ][*2 false][2 `= not selected]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:IsSel`(int`)const: [@(0.0.255)2 bool][2 _][*2 IsSel][2 (][@(0.0.255)2 i
nt][2 _][*@3;2 i][2 )_][@(0.0.255)2 const]&]
[s0;l288; [2 If there is selection in the widget, returns true if ][*@3;2 i][2
is selected, otherwise returns true if cursor is at ][*@3;2 i][2 .]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:ClearSelection`(`): [@(0.0.255)2 void][2 _][*2 ClearSelecti
on][2 ()]&]
[s0;l288; [2 Clears the current selection (unselects all selected rows).]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:IsCursor`(`)const: [@(0.0.255)2 bool][2 _][*2 IsCursor][2 ()_
][@(0.0.255)2 const]&]
[s0;l288; [2 Checks whether the cursor is within the table. This is
equivalent to ][*2 GetCursor()_>`=_0][2 .]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:SetCursor`(int`): [@(0.0.255)2 bool][2 _][*2 SetCursor][2 (][@(0.0.255)2 i
nt][2 _][*@3;2 i][2 )]&]
[s0;l288; [2 Sets the current cursor row. When an array row is open
for editing, the function first commits the edited row, then
moved the cursor to the new row. When the edited row cannot be
commited, the function returns ][*2 false][2 and doesn`'t change
the cursor location.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 i][2 -|zero`-based row index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 true][2 `= cursor
has been moved, ][*2 false ][2 when not (when committing the previously
edited row failed)]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:KillCursor`(`): [@(0.0.255)2 bool][2 _][*2 KillCursor][2 ()]&]
[s0;l288; [2 Moves the cursor away from the array. When an array row
is open for editing, the function first commits the edited row,
then moved the cursor away from the array. When the edited row
cannot be commited, the function returns ][*2 false][2 and doesn`'t
change the cursor location.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 true][2 `= cursor
has been moved away from the array, ][*2 false][2 when not (when
committing the previously edited row failed)]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:CancelCursor`(`): [@(0.0.255)2 void][2 _][*2 CancelCursor][2 (
)]&]
[s0;l288; [2 Cancels editing of the row being currently edited. All
changes made in the individual column editors are rejected.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GetCursor`(`)const: [@(0.0.255)2 int][2 _][*2 GetCursor][2 ()
_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns the current cursor row, `-1 when none.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|zero`-based cursor
row index, `-1 `= cursor is not in the array]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GoBegin`(`): [@(0.0.255)2 void][2 _][*2 GoBegin][2 ()]&]
[s0;l288; [2 Moves the cursor to the first row in the array (equivalent
to ][*2 SetCursor(0)][2 ).]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GoEnd`(`): [@(0.0.255)2 void][2 _][*2 GoEnd][2 ()]&]
[s0;l288; [2 Moves the cursor to the last array row (equivalent to
][*2 SetCursor(GetCount() `- 1)][2 ).]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GetCursorSc`(`)const: [@(0.0.255)2 int][2 _][*2 GetCursorSc
][2 ()_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns the visual vertical position of the cursor row
relative to the current view. This method, in combination with
][*2 ScCursor][2 , can be used to reposition the cursor row while
maintaining the same visual position of the row within the array
view.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|an integer describing
the vertical position of the cursor row relative to the array
view]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:ScCursor`(int`): [@(0.0.255)2 void][2 _][*2 ScCursor][2 (][@(0.0.255)2 i
nt][2 _][*@3;2 a][2 )]&]
[s0;l288; [2 Modifies the scrollbar position so that the current cursor
row appears at a given vertical position relative to the array
view. By doing the following sequence of operations: ][*2 GetCursorSc][2 ,
then reposition the cursor row, then ][*2 ScCursor][2 , you can achieve
cursor relocation while maintaining its visual location within
the array view.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 a][2 -|an integer describing the
vertical position of the cursor row (typically a number returned
by a previous call to ][*2 GetCursorSc][2 )]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:CenterCursor`(`): [@(0.0.255)2 void][2 _][*2 CenterCursor][2 (
)]&]
[s0;l288; [2 Modifies the scrollbar position so that the current cursor
row appears in the middle of the array view.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:ScrollInto`(int`): [@(0.0.255)2 void][2 _][*2 ScrollInto][2 (
][@(0.0.255)2 int][2 _][*@3;2 line][2 )]&]
[s0;l288; [2 Moves the scrollbar by the least possible amount in order
to make the given array row visible. When the given array row
is already visible, the function does nothing.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 line][2 -|zero`-based row index
of the array row to make visible]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:ScrollIntoCursor`(`): [@(0.0.255)2 void][2 _][*2 ScrollInto
Cursor][2 ()]&]
[s0;l288; [2 Moves the scrollbar by the least possible amount in order
to make the cursor row visible. This is equivalent to ][*2 ScrollInto(GetCursor())][2 .
]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GetCursor`(`)const: [@(0.0.255)2 int][2 _][*2 GetCursor][2 ()
_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns the current vertical scrollbar position.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|Pixel position
of the vertical scrollbar. Position 0 is at the very top (the
top row of the array is fully visible).]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:ScrollTo`(int`): [@(0.0.255)2 void][2 _][*2 ScrollTo][2 (][@(0.0.255)2 i
nt][2 _][*@3;2 sc][2 )]&]
[s0;l288; [2 Moves the vertical array scrollbar to a given position.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 sc][2 -|Pixel position of the
scrollbar. The visible portion of the array can be obtained conceptually
by taking the stack of array rows with its top aligned at the
top of the view and moving it ][/2 sc][2 pixels upwards.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Find`(const Value`&`,int`,int`)const: [@(0.0.255)2 int][2 _
][*2 Find][2 (][@(0.0.255)2 const][2 _][_^Value^2 Value][@(0.0.255)2 `&][2 _][*@3;2 v][2 ,
][@(0.0.255)2 int][2 _][*@3;2 ii][2 _`=_][@3;2 0][2 , ][@(0.0.255)2 int][2 _][*@3;2 from][2 _`=_][@3;2 0
][2 )_][@(0.0.255)2 const]&]
[s0;l288; [*C@3;2 v][2 -|value to look for in the given source index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 ii][2 -|zero`-based ordinal number
of the source index to search]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 from][2 -|zero`-based row index
to start the search from]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|zero`-based number
of the matched row, `-1 when none]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Find`(const Value`&`,const Id`&`,int`)const: [@(0.0.255)2 i
nt][2 _][*2 Find][2 (][@(0.0.255)2 const][2 _][_^Value^2 Value][@(0.0.255)2 `&][2 _][*@3;2 v][2 ,
][@(0.0.255)2 const ][_^Id^2 Id][2 `&_][*@3;2 id][2 , ][@(0.0.255)2 int][2 _][*@3;2 from][2 _`=_][@3;2 0
][2 )_][@(0.0.255)2 const]&]
[s0;l288; [2 Locates the row (using linear search beginning at the
row ][/2 from][2 ) in which the source index value identified by
][/2 id][2 equals ][/2 val][2 . If such a row is found, the function
returns its zero`-based index. When not matched, the function
returns `-1.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 v][2 -|value to look for in the
given source index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 id][2 -|source index identifier]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 from][2 -|zero`-based row index
to start the search from]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|zero`-based number
of the matched row, `-1 when none]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:FindSetCursor`(const Value`&`,int`,int`): [@(0.0.255)2 b
ool][2 _][*2 FindSetCursor][2 (][@(0.0.255)2 const][2 _][_^Value^2 Value][@(0.0.255)2 `&][2 _][*@3;2 v
al][2 , ][@(0.0.255)2 int][2 _][*@3;2 ii][2 _`=_][@3;2 0][2 , ][@(0.0.255)2 int][2 _][*@3;2 from][2 _`=
_][@3;2 0][2 )]&]
[s0;l288; [2 Locates the row (using linear search beginning at the
row ][/2 from][2 ) in which the source index value identified by
its ordinal number ][/2 ii][2 equals ][/2 val][2 . If such a row is
found, the ][*2 SetCursor][2 is called automatically to move the
cursor to such a row.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 val][2 -|value to look for in
the given source index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 ii][2 -|zero`-based ordinal number
of the source index to search]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 from][2 -|zero`-based row index
to start the search from]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|zero`-based number
of the matched row, `-1 when none]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:FindSetCursor`(const Value`&`,const Id`&`,int`): [@(0.0.255)2 b
ool][2 _][*2 FindSetCursor][2 (][@(0.0.255)2 const][2 _][_^Value^2 Value][@(0.0.255)2 `&][2 _][*@3;2 v
al][2 , ][@(0.0.255)2 const ][_^Id^2 Id][2 `&_][*@3;2 id][2 , ][@(0.0.255)2 int][2 _][*@3;2 from][2 _
`=_][@3;2 0][2 )]&]
[s0;l288; [2 Locates the row (using linear search beginning at the
row ][/2 from][2 ) in which the source index value identified by
][/2 id][2 equals ][/2 val][2 . If such a row is found, the ][*2 SetCursor][2
is called automatically to move the cursor to such a row.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 val][2 -|value to look for in
the given source index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 id][2 -|source index identifier]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 from][2 -|zero`-based row index
to start the search from]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 true][2 `= the
desired row was found (and the cursor set), ][*2 false][2 when not]&]
[s0;0 &]
[s0;* &]
[s0; [* User interface elements]&]
[s0;0 &]
[s0; &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:StdBar`(Bar`&`): [@(0.0.255)2 void][2 _][*2 StdBar][2 (][_^Bar^2 B
ar][@(0.0.255)2 `&][2 _][*@3;2 menu][2 )]&]
[s0;l288; [2 The default array local menu. The default local menu consists
of the standard editing actions (inserting / appending / duplicating
a row, editing a row, removing a row, moving a row, select all
rows) filtered by the array properties enabling / disabling the
various GUI elements (item insertion / deletion etc.). ]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 menu][2 -|the ][*2 Bar][2 object
representing the menu being generated]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:IsModified`(int`)const: [@(0.0.255)2 bool][2 _][*2 IsModifi
ed][2 (][@(0.0.255)2 int][2 _][*@3;2 ii][2 )_][@(0.0.255)2 const]&]
[s0;l288; [2 Checks a source index in the currently edited row for
changes.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 ii][2 -|zero`-based row index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 true][2 `= the
index has been modified, ][*2 false][2 `= the index is in its original
state]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:IsModified`(const Id`&`)const: [@(0.0.255)2 bool][2 _][*2 I
sModified][2 (][@(0.0.255)2 const ][_^Id^2 Id][2 `&_][*@3;2 id][2 )_][@(0.0.255)2 const]&]
[s0;l288; [2 Checks a source index in the currently edited array row
for changes.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 id][2 -|source index identifier]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 true][2 `= the
source index has been modified, ][*2 false ][2 when not]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:StartEdit`(int`): [@(0.0.255)2 bool][2 _][*2 StartEdit][2 (][@(0.0.255)2 i
nt][2 _][*@3;2 d][2 _`=_][@3;2 0][2 )]&]
[s0;l288; [2 Opens the current cursor row for editing and sets focus
to the ][/2 d][2 `-th column.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 d][2 -|zero`-based column index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 true][2 `= editing
successfully initiated, ][*2 false][2 when not (when the array is
in ][*2 ReadOnly][2 mode or it has no editable columns)]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:GetEditColumn`(`)const: [@(0.0.255)2 int][2 _][*2 GetEditCo
lumn][2 ()_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns the column being currently edited.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|zero`-based index
of the column being edited, `-1 `= none]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:DoEdit`(`): [@(0.0.255)2 void][2 _][*2 DoEdit][2 ()]&]
[s0;l288; [2 Opens the current cursor row for editing.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:DoInsert`(int`): [@(0.0.255)2 void][2 _][*2 DoInsert][2 (][@(0.0.255)2 i
nt][2 _][*@3;2 cursor][2 )]&]
[s0;l288; [2 Begins the GUI insertion of a new row at a given location.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 cursor][2 -|zero`-based location
of the new row]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:DoInsertBefore`(`): [@(0.0.255)2 void][2 _][*2 DoInsertBefo
re][2 ()]&]
[s0;l288; [2 Begins the GUI insertion of a new row above the current
row.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:DoInsertAfter`(`): [@(0.0.255)2 void][2 _][*2 DoInsertAfter
][2 ()]&]
[s0;l288; [2 Begins the GUI insertion of a new row below the current
row.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:DoAppend`(`): [@(0.0.255)2 void][2 _][*2 DoAppend][2 ()]&]
[s0;l288; [2 Begins the GUI insertion of a new row at the end of the
array.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:DoRemove`(`): [@(0.0.255)2 virtual][2
][@(0.0.255)2 bool][2 _][*2 DoRemove][2 ()]&]
[s0;l288; [2 Performs the GUI`-based removal of the current cursor
row. When the ][*2 AskRemove][2 property is set to ][*2 true][2 and
the user cancels the confirmation dialog, the function returns
][*2 false][2 and the current row is not removed.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 true][2 `= row
has been removed successfully, ][*2 false][2 `= user has canceled
the row removal]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:DoDuplicate`(`): [@(0.0.255)2 void][2 _][*2 DoDuplicate][2 ()
]&]
[s0;l288; [2 Duplicates the current row and opens it for editing.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:DoSelectAll`(`): [@(0.0.255)2 void][2 _][*2 DoSelectAll][2 ()
]&]
[s0;l288; [2 Marks all array row as selected.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:AcceptEnter`(`): [@(0.0.255)2 bool][2 _][*2 AcceptEnter][2 ()
]&]
[s0;l288; [2 Performs all necessary GUI actions equivalent to when
the user presses the ][*2 Enter][2 key. The row being currently
edited is committed and, in the case it was a newly appended
line and the ][*2 NoInsertAppend][2 property is not set, an additional
row is added to the array and opened for editing.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 true][2 `= the
current row has been successfully committed, ][*2 false][2 when
not]&]
[s0;0 &]
[s0; &]
[s0; &]
[s0; [* Content export]&]
[s0;* &]
[s0;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:AsText`(String`(`*`)`(const Value`&`)`,bool`,const char`*`,const char`*`,const char`*`,const char`*`)const: [_^String^2 S
tring][2 _][*2 AsText][2 (][_^String^2 String][2 _(`*][*@3;2 format][2 )(][@(0.0.255)2 const][2 _Va
lue][@(0.0.255)2 `&][2 ), ][@(0.0.255)2 bool][2 _][*@3;2 sel][2 _`=_][@(0.0.255)2 false][2 ,
][@(0.0.255)2 const][2 _][@(0.0.255)2 char][2 _`*][*@3;2 tab][2 _`=_`"`\t`",
][@(0.0.255)2 const][2 _][@(0.0.255)2 char][2 _`*][*@3;2 row][2 _`=_`"`\r`\n`",
][@(0.0.255)2 const][2 _][@(0.0.255)2 char][2 _`*][*@3;2 hdrtab][2 _`=_`"`\t`",
][@(0.0.255)2 const][2 _][@(0.0.255)2 char][2 _`*][*@3;2 hdrrow][2 _`=_`"`\r`\n`")_][@(0.0.255)2 c
onst]&]
[s0;l288; [2 Generic function for conversion of ArrayCtrl content to
text. The content visible on screen is exported (means, it exports
columns defined using AddColumn, not indicies). Cells are converted
to output format using ][*@3;2 format][2 function. If ][*@3;2 sel][2
is true, only rows with IsSel true are exported. ][*@3;2 tab][2
represents a separator text between cells in a row, ][*@3;2 row][2
separator of rows. ][*@3;2 hdrtab][2 is separator of header cells
(those are texts of ArrayCtrl header) `- if NULL, no header is
exported. ][*@3;2 hdrrow][2 .is separator of header and data rows.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:SetClipboard`(bool`,bool`)const: [@(0.0.255)2 void][2 _][*2 S
etClipboard][2 (][@(0.0.255)2 bool][2 _][*@3;2 sel][2 _`=_][@(0.0.255)2 false][2 ,
][@(0.0.255)2 bool][2 _][*@3;2 hdr][2 _`=_][@(0.0.255)2 true][2 )_][@(0.0.255)2 const]&]
[s0;l288; [2 Puts ArrayCtrl content to clipboard in text format, `"`\t`"
and `"`\r`\n`" as separators. If ][*@3;2 sel][2 is true, only rows
with IsSel true are exported, ][*@3;2 hdr][2 controls whether header
is exported.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:AsQtf`(bool`,bool`): [_^String^2 String][2 _][*2 AsQtf][2 (][@(0.0.255)2 b
ool][2 _][*@3;2 sel][2 _`=_][@(0.0.255)2 false][2 , ][@(0.0.255)2 bool][2 _][*@3;2 hdr][2 _`=_][@(0.0.255)2 t
rue][2 )]&]
[s0;l288; [2 Returns ArrayCtrl content in QTF format. If ][*@3;2 sel][2
is true, only rows with IsSel true are exported, ][*@3;2 hdr][2
controls whether header is exported.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:AsCsv`(bool`,int`,bool`): [_^String^2 String][2 _][*2 AsCsv
][2 (][@(0.0.255)2 bool][2 _][*@3;2 sel][2 _`=_][@(0.0.255)2 false][2 , ][@(0.0.255)2 int][2 _][*@3;2 s
ep][2 _`=_`';`', ][@(0.0.255)2 bool][2 _][*@3;2 hdr][2 _`=_][@(0.0.255)2 true][2 )]&]
[s0;l288; [2 Returns ArrayCtrl content in csv format, using ][*@3;2 sep][2
as separator. If ][*@3;2 sel][2 is true, only rows with IsSel true
are exported, ][*@3;2 hdr][2 controls whether header is exported.]&]
[s0; &]
[s0; &]
[s0; [* Notification callbacks]&]
[s0;0 &]
[s0; &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:WhenLeftClick: [_^Callback^2 Callback][2 _][*2 WhenLeftClic
k]&]
[s0;l288; [2 This callback is called whenever the user clicks an array
cell.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:WhenLeftDouble: [_^Callback^2 Callback][2 _][*2 WhenLeftDou
ble]&]
[s0;l288; [2 This callback is called whenever the user doubleclicks
an array cell.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:WhenBar: [_^Callback1^2 Callback1][2 <Bar][@(0.0.255)2 `&][2 >
_][*2 WhenBar]&]
[s0;l288; [2 This callback is called whenever the local array menu
has to be regenerated. By setting this callback to a different
function / method you can supply a custom local menu for the
array. The ][*2 Bar`&][2 argument is a reference to the menu to
be generated.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:WhenEnterRow: [_^Callback^2 Callback][2 _][*2 WhenEnterRow]&]
[s0;l288; [2 This callback is called every time the cursor location
changes to a different row of the array.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:WhenAcceptRow: [_^Gate^2 Gate][2 _][*2 WhenAcceptRow]&]
[s0;l288; [2 This gate is called every time an array row (open for
editing) needs to be validated. When the gate returns ][*2 false][2 ,
the validation process is assumed to have failed, when it returns
][*2 true][2 , it is assumed to have succeeded. You can use this
callback to add your own validation algorithms relevant to the
array context within your application.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:WhenUpdateRow: [_^Callback^2 Callback][2 _][*2 WhenUpdateRo
w]&]
[s0;l288; [2 This callback is called whenever an array row has been
updated. You can use this callback e.g. to project the changes
to a database or generally to an external data source.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:WhenKillCursor: [_^Callback^2 Callback][2 _][*2 WhenKillCur
sor]&]
[s0;l288; [2 This callback is called whenever the cursor is moved away
from the table.]&]
[s0;l288; [*2 Note:][2 internally, when moving the cursor (e.g. by calling
the ][*2 SetCursor ][2 method), after committing the previous row
the cursor is removed from the table using ][*2 KillCursor][2 and
placed to the new location afterwards. Therefore every time the
cursor is moved, the ][*2 WhenKillCursor][2 callback is called as
a by`-product.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:WhenCursor: [_^Callback^2 Callback][2 _][*2 WhenCursor]&]
[s0;l288; [2 This callback is called every time the cursor row number
changes (either when the cursor is removed from the table, or
when it has been moved to a different row).]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:WhenArrayAction: [_^Callback^2 Callback][2 _][*2 WhenArrayA
ction]&]
[s0;l288; [2 This callback is called every time the source array data
changes (typically after accepting changes to a certain row or
after deleting a row).]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:WhenStartEdit: [_^Callback^2 Callback][2 _][*2 WhenStartEdi
t]&]
[s0;l288; [2 This callback is called whenever the array row editing
process is initiated. It can be used e.g. to set up some additional
properties of the column editor objects, to fill in drop`-down
lists pertaining to certain column editors etc.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:WhenAcceptEdit: [_^Callback^2 Callback][2 _][*2 WhenAcceptE
dit]&]
[s0;l288; [2 This callback is called whenever the currently edited
line has been committed.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:WhenSelection: [_^Callback^2 Callback][2 _][*2 WhenSelectio
n]&]
[s0;l288; [2 This callback is called whenever the current array selection
changes. This includes changes to the cursor location as the
cursor is automatically considered part of the selection.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:WhenCtrlsAction: [_^Callback^2 Callback][2 _][*2 WhenCtrlsA
ction]&]
[s0;l288; [2 This callback is called whenever some of the editor controls
constructed automatically via the column editing ][/2 factory][2
calls its ][*2 WhenAction][2 method. It can be used to watch out
for changes in the cell editors and react to specific situations
accordingly.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:WhenSel: [_^Callback^2 Callback][2 _][*2 WhenSel]&]
[s0;l288; [2 Called whenever cursor or selection changes.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:WhenScroll: [_^Callback^2 Callback][2 _][*2 WhenScroll]&]
[s0;l288; [2 Called when scrolling of ArrayCtrl content happened.]&]
[s0;0 &]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:WhenHeaderLayout: [_^Callback^2 Callback][2 _][*2 WhenHeade
rLayout]&]
[s0;l288; [2 Called when header changes.]&]
[s0; &]
[s0; &]
[ {{10000t/25b/25@3 [s0; [*@(229)4 ArrayCtrl`::IdInfo]]}}&]
[s0;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:IdInfo`:`:struct: [@(0.0.255) struct]_[* IdInfo]&]
[s0;b42; [2 The ][*2 IdInfo][2 structure contains properties of all source
array indices. It can be used to set additional properties pertaining
to source array data.]&]
[s0;0 &]
[s0; &]
[ {{10000F(128)G(128)@1 [s0; [* Public Member List]]}}&]
[s0;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:IdInfo`:`:InsertValue`(const Value`&`): [_^ArrayCtrl`:`:IdInfo^2 I
dInfo][@(0.0.255)2 `&][2 _][*2 InsertValue][2 (][@(0.0.255)2 const][2 _][_^Value^2 Value][@(0.0.255)2 `&
][2 _][*@3;2 v][2 )]&]
[s0;l288; [2 The method sets up the default source index value for
newly created rows. This is used only when the row insertion
is GUI`-based (like using the ][*2 DoInsert][2 method for instance).
When a row is added to the array programmatically (e.g. using
][*2 Add][2 or ][*2 Insert][2 ), these default values are not used.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 v][2 -|default source index value]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:IdInfo`:`:InsertValue`(ValueGen`&`): [_^ArrayCtrl`:`:IdInfo^2 I
dInfo][@(0.0.255)2 `&][2 _][*2 InsertValue][2 (][_^ValueGen^2 ValueGen][@(0.0.255)2 `&][2 _][*@3;2 g
][2 )]&]
[s0;l288; [2 The method sets up a factory for generating default index
values for newly created rows. This is used only when the row
insertion is GUI`-based (like using the ][*2 DoInsert][2 method
for instance). When a row is added to the array programmatically
(e.g. using ][*2 Add][2 or ][*2 Insert][2 ), the ][*2 InserValue][2 property
is not consulted.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 g][2 -|a reference to the value
generation factory. The ownership to the factory is not passed
by this call; the caller must insure the existence of the factory
object throughout the array duration.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:IdInfo`:`:Accel`(int`(`*`)`(int`)`): [_^ArrayCtrl`:`:IdInfo^2 I
dInfo][@(0.0.255)2 `&][2 _][*2 Accel][2 (][@(0.0.255)2 int][2 _(`*][*@3;2 filter][2 )(][@(0.0.255)2 i
nt][2 ))]&]
[s0;l288; [2 This method sets up the source index accelerator function.
The accelerator is used to quickly locate rows using the keyboard
key presses.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 filter][2 -|a ][*2 CharFilter ][2 function
for keypress filtering]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:IdInfo`:`:Accel`(`): [_^ArrayCtrl`:`:IdInfo^2 IdInfo][@(0.0.255)2 `&
][2 _][*2 Accel][2 ()]&]
[s0;l288; [2 This method sets up keyboard acceleration for the given
source index. The `'trivial`' ][/2 CharConvert][2 is used for character
translation.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:IdInfo`:`:GetInsertValue`(`): [_^Value^2 Value][2 _][*2 Get
InsertValue][2 ()]&]
[s0;l288; [2 Uses the ][*2 InsertValue][2 property to generate a new source
index value (either using a fixed default value or the value
creation factory).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|the generated value
to be used as the default for the newly inserted row.]&]
[s0;0 &]
[s0; &]
[s0; &]
[s0; &]
[ {{10000t/25b/25@3 [s0; [*@(229)4 ArrayCtrl`::Column]]}}&]
[s0;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Column`:`:class: [@(0.0.255) class]_[* Column]_:_[@(0.0.255) p
rivate]_[*@3 FormatConvert]&]
[s0;l288;2 &]
[s0; [%%/ Derived from][%% ]FormatConvert&]
[s0; &]
[s0; The [* ArrayCtrl`::Column] structure describes an output array
column. Its methods can be used to set or query its properties,
some of which are also settable via ArrayCtrl methods.&]
[s0;0 &]
[s0; &]
[ {{10000F(128)G(128)@1 [s0; [* Public Member List]]}}&]
[s0;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Column`:`:Add`(int`): [_^ArrayCtrl`:`:Column^2 Column][@(0.0.255)2 `&
][2 _][*2 Add][2 (][@(0.0.255)2 int][2 _][*@3;2 `_pos][2 )]&]
[s0;l288; [2 Adds another source data index to the list of source indices
used as the data for the given output column.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 `_pos][2 -|zero`-based ordinal
number of the source index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this][2 .]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Column`:`:Add`(const Id`&`): [_^ArrayCtrl`:`:Column^2 C
olumn][@(0.0.255)2 `&][2 _][*2 Add][2 (const ][_^Id^2 Id][2 `&_][*@3;2 id][2 )]&]
[s0;l288; [2 Adds another source data index to the list of source indices
used as the data for the given output column.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 id][2 -|the ][*2 Id][2 identifier
of the source index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Column`:`:AddIndex`(const Id`&`): [_^ArrayCtrl`:`:Column^2 C
olumn][@(0.0.255)2 `&][2 _][*2 AddIndex][2 (][@(0.0.255)2 const][2 _][_^Id^2 Id][@(0.0.255)2 `&][2 _
][*@3;2 id][2 )]&]
[s0;l288; [2 Adds another source index to the array and adds it to
the list of source indices bound to this output column. The newly
created index is assigned the given identifier.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 id][2 -|the identifier for the
newly created index]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Column`:`:AddIndex`(`): [_^ArrayCtrl`:`:Column^2 Column
][@(0.0.255)2 `&][2 _][*2 AddIndex][2 ()]&]
[s0;l288; [2 Adds another source index to the array and adds it to
the list of source indices bound to this output column.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Column`:`:SetConvert`(const Convert`&`): [_^ArrayCtrl`:`:Column^2 C
olumn][@(0.0.255)2 `&][2 _][*2 SetConvert][2 (][@(0.0.255)2 const][2 _][_^Convert^2 Convert][@(0.0.255)2 `&
][2 _][*@3;2 c][2 )]&]
[s0;l288; [2 Sets the ][*2 Convert][2 object for the given column. This
object is used to convert the source values (obtained from the
source data matrix) to the values displayable and/or editable
by the respective column display / editor object.]&]
[s0;l288; [*2 Note:][2 the ownership of the ][*2 Convert][2 object is not
transferred by this function. The array merely stores a pointer
to the Convert object. It is up to the host application to keep
the Convert object alive as long as necessary (until the ArrayCtrl
object is destroyed or all references to the Convert object obliterated
by new calls to the ][*2 SetConvert][2 method). In any case, most
Convert`-based object do not support copying at all; moreover,
as the Convert`-based objects are mostly derived from the basic
class, their copying is normally prone to slicing.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 c][2 -|a constant reference to
the Convert object to use for the given column]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Column`:`:SetFormat`(const char`*`): [@(0.0.255)2 virtu
al][2 ][_^ArrayCtrl`:`:Column^2 Column][@(0.0.255)2 `&][2 _][*2 SetFormat][2 (][@(0.0.255)2 co
nst][2 _][@(0.0.255)2 char][2 _`*][*@3;2 fmt][2 )]&]
[s0;l288; [2 Sets the format string to use for the default value formatting.
When no Convert object is set for the column, the source value
is normally passed to the ][*2 NFormat][2 function where the ][/2 fmt][2
argument defines the desired formatting pattern.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 fmt][2 -|a ][*2 NFormat][2 `-compatible
formatting pattern]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Column`:`:SetDisplay`(const Display`&`): [_^ArrayCtrl`:`:Column^2 C
olumn][@(0.0.255)2 `&][2 _][*2 SetDisplay][2 (][@(0.0.255)2 const][2 _][_^Display^2 Display][@(0.0.255)2 `&
][2 _][*@3;2 d][2 )]&]
[s0;l288; [2 Sets the default Display to use for this column. The column
Display can be overridden for certain array cells by calls to
the ][*^topic`:`/`/CtrlLib`/src`/ArrayCtrl`$en`-us`#`:`:ArrayCtrl`:`:SetDisplay`(int`,int`,const Display`&`)^2 A
rrayCtrl`::SetDisplay][2 method.]&]
[s0;l288; [*2 Note:][2 the ownership to the Display object is not transferred
by this function. The array merely stores a pointer to the Display;
it is up to the host application to keep the Display object alive
as long as necessary.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 d][2 -|a reference to the Display
object]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Column`:`:Edit`(Ctrl`&`): [_^ArrayCtrl`:`:Column^2 Colu
mn][@(0.0.255)2 `&][2 _][*2 Edit][2 (][_^Ctrl^2 Ctrl][@(0.0.255)2 `&][2 _][*@3;2 e][2 )]&]
[s0;l288; [2 Sets up the Ctrl`-based object to use for inline array
column editing.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 e][2 -|a reference to the editor
control object]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Column`:`:Ctrls`(Callback1`<One`<Ctrl`>`&`>`): [_^ArrayCtrl`:`:Column^2 C
olumn][@(0.0.255)2 `&][2 _][*2 Ctrls][2 (][_^Callback1^2 Callback1][2 <][_^One^2 One][2 <][_^Ctrl^2 C
trl][2 >`&>_][*@3;2 factory][2 )]&]
[s0;l288; [2 The methods sets up a factory which the ArrayCtrl uses
as necessary to create new Ctrl`'s for editing a given column.
The argument of this function is a callback, which, upon execution,
should allocate (normally using the ][*2 new][2 operator) the desired
editor object and set it to its argument. If the position of
Ctrl is equivalent to `'SetRect(0, 0, 0, 0)`', which is the default
value, Ctrl is resized to fit the ArrayCtrl cell accurately,
otherwise the position represents the position within the cell.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 factory][2 -|callback used for
new control creation]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Column`:`:Ctrls`(void`(`*`)`(One`<Ctrl`>`&`)`): [_^ArrayCtrl`:`:Column^2 C
olumn][@(0.0.255)2 `&][2 _][*2 Ctrls][2 (][@(0.0.255)2 void][2 _(`*][*@3;2 factory][2 )(One<Ctrl>
`&))]&]
[s0;l288; [2 This method sets up a factory which the ArrayCtrl uses
as necessary to create new Ctrl`'s for editing a given column.
The argument, a global function, is supposed to allocate a new
editor control (normally using the ][*2 new][2 operator) and set
it to its argument. If the position of Ctrl is equivalent to
`'SetRect(0, 0, 0, 0)`', which is the default value, Ctrl is
resized to fit the ArrayCtrl cell accurately, otherwise the position
represents the position within the cell. If the position of Ctrl
is equivalent to `'SetRect(0, 0, 0, 0)`', which is the default
value, Ctrl is resized to fit the ArrayCtrl cell accurately,
otherwise the position represents the position within the cell.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 factory][2 -|a global function
used for editor control creation]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Column`:`:Ctrls`(`): [@(0.0.255)2 template][2 _<][@(0.0.255)2 c
lass][2 _][*@4;2 T][2 >_][_^ArrayCtrl`:`:Column^2 Column][@(0.0.255)2 `&][2 _][*2 Ctrls][2 ()]&]
[s0;l288; [2 This member template sets up a default factory for creating
editor controls of a given type. Every time the ArrayCtrl needs
to create a new editor control, an object of the type ][*2 T][2
is created automatically (using the ][*2 new][2 operator). If the
position of Ctrl is equivalent to `'SetRect(0, 0, 0, 0)`', which
is the default value, Ctrl is resized to fit the ArrayCtrl cell
accurately, otherwise the position represents the position within
the cell.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@4;2 T][2 -|the desired object editor
type ]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Column`:`:InsertValue`(const Value`&`): [_^ArrayCtrl`:`:Column^2 C
olumn][@(0.0.255)2 `&][2 _][*2 InsertValue][2 (][@(0.0.255)2 const][2 _][_^Value^2 Value][@(0.0.255)2 `&
][2 _][*@3;2 v][2 )]&]
[s0;l288; [2 Instructs the ArrayCtrl object to initialize this column
in newly created rows to the given value ][/2 v][2 . (This applies
only to GUI`-based row insertion using methods like ][*2 DoInsert][2
etc., the low`-level, programmer`-controlled row insertion methods
like ][*2 Add][2 or ][*2 Insert][2 always initialize the source data
matrix with ][*2 Null][2 `'s).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 v][2 -|the value to use as the
default for newly inserted rows]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Column`:`:InsertValue`(ValueGen`&`): [_^ArrayCtrl`:`:Column^2 C
olumn][@(0.0.255)2 `&][2 _][*2 InsertValue][2 (][_^ValueGen^2 ValueGen][@(0.0.255)2 `&][2 _][*@3;2 g
][2 )]&]
[s0;l288; [2 Programs the ArrayCtrl object to use the given ][*2 ValueGen][2
factory for default value generation for newly created rows.
This can be used e.g. to generate unique UUID`'s or primary keys
using an Oracle SEQUENCE object for a primary key column.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 g][2 -|a reference to the ValueGen
object used for default value generation]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Column`:`:NoClickEdit`(`): [_^ArrayCtrl`:`:Column^2 Col
umn][@(0.0.255)2 `&][2 _][*2 NoClickEdit][2 ()]&]
[s0;l288; [2 Disables entering the editing mode when clicking the respective
column.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Column`:`:Cache`(`): [_^ArrayCtrl`:`:Column^2 Column][@(0.0.255)2 `&
][2 _][*2 Cache][2 ()]&]
[s0;l288; [2 Enables using the cache to store the converted values
of this column. By default, converted value caching is turned
off to make cell value conversion entirely dynamic; however,
very often it is advisable to enable using the cache, especially
when the conversion is relatively slow (for instance, when the
conversion queries a database connection to convert the value).]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Column`:`:Accel`(int`(`*`)`(int`)`): [_^ArrayCtrl`:`:Column^2 C
olumn][@(0.0.255)2 `&][2 _][*2 Accel][2 (][@(0.0.255)2 int][2 _(`*][*@3;2 filter][2 )(][@(0.0.255)2 i
nt][2 ))]&]
[s0;l288; [2 Sets up the accelerator for the given column. A given
filtering function is used to convert keystrokes before acceleration.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 filter][2 -|a ][*2 CharConvert][2 `-style
function to use for keystroke conversion]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Column`:`:Accel`(`): [_^ArrayCtrl`:`:Column^2 Column][@(0.0.255)2 `&
][2 _][*2 Accel][2 ()]&]
[s0;l288; [2 Sets up the accelerator for the given column. No keystroke
conversion is performed.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Column`:`:Margin`(int`): [_^ArrayCtrl`:`:Column^2 Colum
n][@(0.0.255)2 `&][2 _][*2 Margin][2 (][@(0.0.255)2 int][2 _][*@3;2 m][2 )]&]
[s0;l288; [2 Sets up the margin width for the given column. This is
equivalent to calling the ][*^topic`:`/`/CtrlLib`/src`/HeaderCtrl`$en`-us`#`:`:HeaderCtrl`:`:Column`:`:SetMargin`(int`)^2 S
etMargin][2 method of the underlying ][*2 HeaderTab][2 .]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 m][2 -|]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 `*this]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Column`:`:Sorting`(const ValueOrder`&`): [_^ArrayCtrl`:`:Column^2 C
olumn][@(0.0.255)2 `&][2 _][*2 Sorting][2 (][@(0.0.255)2 const][2 _][_^ValueOrder^2 ValueOrder][@(0.0.255)2 `&
][2 _][*@3;2 o][2 )]&]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Column`:`:Sorting`(int`(`*`)`(const Value`&a`,const Value`&b`)`): [_^ArrayCtrl`:`:Column^2 C
olumn][@(0.0.255)2 `&][2 _][*2 Sorting][2 (][@(0.0.255)2 int][2 _(`*][*@3;2 c][2 )(][@(0.0.255)2 co
nst][2 _Value][@(0.0.255)2 `&][2 _a, ][@(0.0.255)2 const][2 _Value][@(0.0.255)2 `&][2 _b))]&]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Column`:`:Sorting`(`): [_^ArrayCtrl`:`:Column^2 Column][@(0.0.255)2 `&
][2 _][*2 Sorting][2 ()]&]
[s0;l288; [2 Activates sorting of ArrayCtrl column by clicking on its
header tab. Parameterless version uses default Value ordering
using StdValueCompare.]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Column`:`:SortDefault`(`): [_^ArrayCtrl`:`:Column^2 Col
umn][@(0.0.255)2 `&][2 _][*2 SortDefault][2 ()]&]
[s0;l288; [2 Sets this column to be initial sorting column (calls SetSortColumn
of ArrayCtrl).]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Column`:`:HeaderTab`(`): [_^HeaderCtrl`:`:Column^2 Head
erCtrl`::Column][@(0.0.255)2 `&][2 _][*2 HeaderTab][2 ()]&]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Column`:`:HeaderTab`(`)const: [@(0.0.255)2 const][2 _][_^HeaderCtrl`:`:Column^2 H
eaderCtrl`::Column][@(0.0.255)2 `&][2 _][*2 HeaderTab][2 ()_][@(0.0.255)2 const]&]
[s0;l288; [2 Returns the ][*2 HeaderCtrl`::Column][2 object describing
the given column. This object can be used to set up additional
column properties (like column width constraints or the ][*^topic`:`/`/CtrlLib`/src`/HeaderCtrl`$en`-us`#`:`:HeaderCtrl`:`:Column`:`:Callback WhenAction^2 W
henAction][2 callback).]&]
[s0;0 &]
[s0;H6;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Column`:`:Tip`(const char`*`): [_^ArrayCtrl`:`:Column^2 C
olumn][@(0.0.255)2 `&][2 _][*2 Tip][2 (][@(0.0.255)2 const][2 _][@(0.0.255)2 char][2 _`*][*@3;2 tip
][2 )]&]
[s0;l288; [2 Assigns a ][*@3;2 tip][2 to header tab column.]&]
[s0;0 &]
[s0; &]
[ {{10000t/25b/25@3 [s0; [*@(229)4 ArrayCtrl`::Order]]}}&]
[s0;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Order`:`:struct: [@(0.0.255) struct]_[* Order]&]
[s0;b42; [2 The ][*2 Order][2 object is used for array row sorting. The
overloaded ][*2 operator ()][2 acts as the sorting predicate, which
is consulted within the sorting method to determine which of
a given pair of row is `'less`' according to the desired sorting.]&]
[s0;0 &]
[s0; &]
[ {{10000F(128)G(128)@1 [s0; [* Public Member List]]}}&]
[s0;0 &]
[s0;i448;a25;kKO9;:ArrayCtrl`:`:Order`:`:operator`(`)`(const Vector`<Value`>`&`,const Vector`<Value`>`&`)const: [@(0.0.255)2 v
irtual][2 ][@(0.0.255)2 bool][2 _][*2 operator()][2 (][@(0.0.255)2 const][2 _][_^Vector^2 Vector
][2 <][_^Value^2 Value][2 >`&_][*@3;2 row1][2 , ][@(0.0.255)2 const][2 _][_^Vector^2 Vector][2 <][_^Value^2 V
alue][2 >`&_][*@3;2 row2][2 )_][@(0.0.255)2 const][2 _`=_][@3;2 0]&]
[s0;l288; [2 The sorting predicate. This method should return ][*2 true][2
when its first argument (][/2 row1][2 ) is less than the second argument
(][/2 row2][2 ) according to the desired ordering.]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 row1][2 -|an array of source data
index values for the first of the rows to compare]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*C@3;2 row2][2 -|an array of source data
index values for the other row to compare]&]
[s0;l288;i1121;b17;O9;~~~.1408; [*/2 Return value][2 -|][*2 true][2 `= row1
< row2, ][*2 false][2 `= row1 >`= row2]&]
[s0;0 &]
[s0; ]]