TITLE("ArrayCtrl")
REF("::ArrayCtrl::class")
REF("::ArrayCtrl::GetLineCy(int)const")
REF("::ArrayCtrl::Reset()")
REF("::ArrayCtrl::ShowAppendLine()")
REF("::ArrayCtrl::IsEdit()const")
REF("::ArrayCtrl::IsInsert()const")
REF("::ArrayCtrl::SetLineCy(int)")
REF("::ArrayCtrl::SetLineCy(int,int)")
REF("::ArrayCtrl::GetLineCy()const")
REF("::ArrayCtrl::GetLineY(int)const")
REF("::ArrayCtrl::AppendLine(bool)")
REF("::ArrayCtrl::NoAppendLine()")
REF("::ArrayCtrl::IsAppendLine()const")
REF("::ArrayCtrl::Inserting(bool)")
REF("::ArrayCtrl::NoInserting()")
REF("::ArrayCtrl::IsInserting()const")
REF("::ArrayCtrl::Appending(bool)")
REF("::ArrayCtrl::IsAppending()const")
REF("::ArrayCtrl::AutoAppending(bool)")
REF("::ArrayCtrl::IsAutoAppending()const")
REF("::ArrayCtrl::BeforeAfterInserting(int)")
REF("::ArrayCtrl::AfterBeforeInserting(int)")
REF("::ArrayCtrl::Duplicating(bool)")
REF("::ArrayCtrl::NoDuplicating()")
REF("::ArrayCtrl::IsDuplicating()const")
REF("::ArrayCtrl::NoInsertAppend(bool)")
REF("::ArrayCtrl::IsEditing()const")
REF("::ArrayCtrl::Removing(bool)")
REF("::ArrayCtrl::NoRemoving()")
REF("::ArrayCtrl::IsRemoving()const")
REF("::ArrayCtrl::AskRemove(bool)")
REF("::ArrayCtrl::NoAskRemove()")
REF("::ArrayCtrl::IsAskRemove()const")
REF("::ArrayCtrl::Moving(bool)")
REF("::ArrayCtrl::IsMoving()const")
REF("::ArrayCtrl::Header(bool)")
REF("::ArrayCtrl::NoHeader()")
REF("::ArrayCtrl::Track(bool)")
REF("::ArrayCtrl::NoTrack()")
REF("::ArrayCtrl::VertGrid(bool)")
REF("::ArrayCtrl::NoVertGrid()")
REF("::ArrayCtrl::HorzGrid(bool)")
REF("::ArrayCtrl::NoHorzGrid()")
REF("::ArrayCtrl::Grid(bool)")
REF("::ArrayCtrl::NoGrid()")
REF("::ArrayCtrl::GridColor(::Color)")
REF("::ArrayCtrl::EvenRowColor(::Color")
REF("::ArrayCtrl::OddRowColor(::Color,::Color)")
REF("::ArrayCtrl::NoCursor(bool)")
REF("::ArrayCtrl::MouseMoveCursor(bool)")
REF("::ArrayCtrl::NoMouseMoveCursor()")
REF("::ArrayCtrl::AutoHideSb(bool)")
REF("::ArrayCtrl::NoAutoHideSb()")
REF("::ArrayCtrl::MultiSelect(bool)")
REF("::ArrayCtrl::ColumnWidths(const char*)")
REF("::ArrayCtrl::RowFormat(const char*)")
REF("::ArrayCtrl::RowName(const char*)")
REF("::ArrayCtrl::IndexInfo(int)")
REF("::ArrayCtrl::IndexInfo(::Id)")
REF("::ArrayCtrl::AddIndex(::Id)")
REF("::ArrayCtrl::AddIndex()")
REF("::ArrayCtrl::GetIndexCount()const")
REF("::ArrayCtrl::GetId(int)const")
REF("::ArrayCtrl::GetPos(::Id)const")
REF("::ArrayCtrl::SetId(int,::Id)")
REF("::ArrayCtrl::AddKey(::Id)")
REF("::ArrayCtrl::AddKey()")
REF("::ArrayCtrl::GetKeyId()const")
REF("::ArrayCtrl::AddColumn(const char*,int)")
REF("::ArrayCtrl::AddColumn(::Id,const char*,int)")
REF("::ArrayCtrl::AddColumnAt(int,const char*,int)")
REF("::ArrayCtrl::AddColumnAt(::Id,const char*,int)")
REF("::ArrayCtrl::AddRowNumColumn(const char*,int)")
REF("::ArrayCtrl::AddCtrl(::Ctrl&)")
REF("::ArrayCtrl::AddCtrl(::Id,::Ctrl&)")
REF("::ArrayCtrl::AddCtrlAt(int,::Ctrl&)")
REF("::ArrayCtrl::AddCtrlAt(::Id,::Ctrl&)")
REF("::ArrayCtrl::AddRowNumCtrl(::Ctrl&)")
REF("::ArrayCtrl::GetColumnCount()const")
REF("::ArrayCtrl::FindColumnWithPos(int)const")
REF("::ArrayCtrl::FindColumnWithId(::Id)const")
REF("::ArrayCtrl::ColumnAt(int)")
REF("::ArrayCtrl::ColumnAt(int)const")
REF("::ArrayCtrl::ColumnAt(::Id)")
REF("::ArrayCtrl::ColumnAt(::Id)const")
REF("::ArrayCtrl::HeaderTab(int)")
REF("::ArrayCtrl::HeaderTab(int)const")
REF("::ArrayCtrl::HeaderTab(::Id)")
REF("::ArrayCtrl::HeaderTab(::Id)const")
REF("::ArrayCtrl::HeaderObject()")
REF("::ArrayCtrl::HeaderObject()const")
REF("::ArrayCtrl::SerializeHeader(::Stream&)")
REF("::ArrayCtrl::SetDisplay(int,int,const::Display&)")
REF("::ArrayCtrl::GetDisplay(int,int)")
REF("::ArrayCtrl::GetDisplay(int)")
REF("::ArrayCtrl::SetCtrl(int,int,::Ctrl*)")
REF("::ArrayCtrl::GetTotalCy()const")
REF("::ArrayCtrl::GetLineAt(int)const")
REF("::ArrayCtrl::GetClickColumn()const")
REF("::ArrayCtrl::GetClickRow()const")
REF("::ArrayCtrl::GetClickPos()const")
REF("::ArrayCtrl::SetCount(int)")
REF("::ArrayCtrl::SetVirtualCount(int)")
REF("::ArrayCtrl::GetCount()const")
REF("::ArrayCtrl::Clear()")
REF("::ArrayCtrl::Shrink()")
REF("::ArrayCtrl::Get(int,int)const")
REF("::ArrayCtrl::Get(int,::Id)const")
REF("::ArrayCtrl::Get(int)const")
REF("::ArrayCtrl::Get(::Id)const")
REF("::ArrayCtrl::GetOriginal(int)const")
REF("::ArrayCtrl::GetOriginal(::Id)const")
REF("::ArrayCtrl::GetKey()const")
REF("::ArrayCtrl::GetOriginalKey()const")
REF("::ArrayCtrl::Set(int,int,const::Value&)")
REF("::ArrayCtrl::Set(int,::Id,const::Value&)")
REF("::ArrayCtrl::Set(int,const::Value&)")
REF("::ArrayCtrl::Set(::Id,const::Value&)")
REF("::ArrayCtrl::GetColumn(int,int)const")
REF("::ArrayCtrl::GetConvertedColumn(int,int)")
REF("::ArrayCtrl::ReadRow(int)const")
REF("::ArrayCtrl::Set(int,const::Vector<::Value>&)")
REF("::ArrayCtrl::Add()")
REF("::ArrayCtrl::Add(const::Vector<::Value>&)")
REF("::ArrayCtrl::Add(const::Value&[,const::Value&]...)")
REF("::ArrayCtrl::Insert(int)")
REF("::ArrayCtrl::Insert(int,const::Vector<::Value>&)")
REF("::ArrayCtrl::Remove(int)")
REF("::ArrayCtrl::SwapUp()")
REF("::ArrayCtrl::SwapDown()")
REF("::ArrayCtrl::Sort(const::ArrayCtrl::Order&)")
REF("::ArrayCtrl::Sort(int,int,const::ArrayCtrl::Order&)")
REF("::ArrayCtrl::Sort(int(*)(const::Vector<::Value>&v1,const::Vector<::Value>&v2))")
REF("::ArrayCtrl::Sort(int,int(*)(const::Value&v1,const::Value&v2))")
REF("::ArrayCtrl::Sort(::Id,int(*)(const::Value&v1,const::Value&v2))")
REF("::ArrayCtrl::Sort()")
REF("::ArrayCtrl::ClearCache()")
REF("::ArrayCtrl::InvalidateCache(int)")
REF("::ArrayCtrl::GetSelectCount()const")
REF("::ArrayCtrl::IsSelection()const")
REF("::ArrayCtrl::Select(int,bool)")
REF("::ArrayCtrl::Select(int,int,bool)")
REF("::ArrayCtrl::IsSelected(int)const")
REF("::ArrayCtrl::ClearSelection()")
REF("::ArrayCtrl::IsCursor()const")
REF("::ArrayCtrl::SetCursor(int)")
REF("::ArrayCtrl::KillCursor()")
REF("::ArrayCtrl::CancelCursor()")
REF("::ArrayCtrl::GetCursor()const")
REF("::ArrayCtrl::GoBegin()")
REF("::ArrayCtrl::GoEnd()")
REF("::ArrayCtrl::GetCursorSc()const")
REF("::ArrayCtrl::ScCursor(int)")
REF("::ArrayCtrl::CenterCursor()")
REF("::ArrayCtrl::ScrollInto(int)")
REF("::ArrayCtrl::ScrollIntoCursor()")
REF("::ArrayCtrl::GetScroll()const")
REF("::ArrayCtrl::ScrollTo(int)")
REF("::ArrayCtrl::Find(const::Value&,int,int)const")
REF("::ArrayCtrl::Find(const::Value&,::Id,int)const")
REF("::ArrayCtrl::FindSetCursor(const::Value&,int,int)")
REF("::ArrayCtrl::FindSetCursor(const::Value&,::Id,int)")
REF("::ArrayCtrl::StdBar(::Bar&)")
REF("::ArrayCtrl::IsModified(int)const")
REF("::ArrayCtrl::IsModified(::Id)const")
REF("::ArrayCtrl::StartEdit(int)")
REF("::ArrayCtrl::GetEditColumn()const")
REF("::ArrayCtrl::DoEdit()")
REF("::ArrayCtrl::DoInsert(int)")
REF("::ArrayCtrl::DoInsertBefore()")
REF("::ArrayCtrl::DoInsertAfter()")
REF("::ArrayCtrl::DoAppend()")
REF("::ArrayCtrl::DoRemove()")
REF("::ArrayCtrl::DoDuplicate()")
REF("::ArrayCtrl::DoSelectAll()")
REF("::ArrayCtrl::AcceptEnter()")
REF("::ArrayCtrl::WhenLeftClick")
REF("::ArrayCtrl::WhenLeftDouble")
REF("::ArrayCtrl::WhenBar")
REF("::ArrayCtrl::WhenEnterRow")
REF("::ArrayCtrl::WhenAcceptRow")
REF("::ArrayCtrl::WhenUpdateRow")
REF("::ArrayCtrl::WhenKillCursor")
REF("::ArrayCtrl::WhenCursor")
REF("::ArrayCtrl::WhenArrayAction")
REF("::ArrayCtrl::WhenStartEdit")
REF("::ArrayCtrl::WhenAcceptEdit")
REF("::ArrayCtrl::WhenSelection")
REF("::ArrayCtrl::WhenCtrlsAction")
REF("::ArrayCtrl::IdInfo::struct")
REF("::ArrayCtrl::IdInfo::InsertValue(const::Value&)")
REF("::ArrayCtrl::IdInfo::InsertValue(::ValueGen&)")
REF("::ArrayCtrl::IdInfo::Accel(int(*)(int))")
REF("::ArrayCtrl::IdInfo::Accel()")
REF("::ArrayCtrl::IdInfo::GetInsertValue()")
REF("::ArrayCtrl::Column::class")
REF("::ArrayCtrl::Column::Add(int)")
REF("::ArrayCtrl::Column::Add(::Id)")
REF("::ArrayCtrl::Column::AddIndex(::Id)")
REF("::ArrayCtrl::Column::AddIndex()")
REF("::ArrayCtrl::Column::SetConvert(const::Convert&)")
REF("::ArrayCtrl::Column::SetFormat(const char*)")
REF("::ArrayCtrl::Column::SetDisplay(const::Display&)")
REF("::ArrayCtrl::Column::Edit(::Ctrl&)")
REF("::ArrayCtrl::Column::Ctrls(::Callback1<::One<::Ctrl>&>)")
REF("::ArrayCtrl::Column::Ctrls(void(*)(::One<::Ctrl>&))")
REF("::ArrayCtrl::Column::Ctrls()")
REF("::ArrayCtrl::Column::InsertValue(const::Value&)")
REF("::ArrayCtrl::Column::InsertValue(::ValueGen&)")
REF("::ArrayCtrl::Column::NoClickEdit()")
REF("::ArrayCtrl::Column::Cache()")
REF("::ArrayCtrl::Column::Accel(int(*)(int))")
REF("::ArrayCtrl::Column::Accel()")
REF("::ArrayCtrl::Column::Margin(int)")
REF("::ArrayCtrl::Column::HeaderTab()")
REF("::ArrayCtrl::Order::struct")
REF("::ArrayCtrl::Order::operator()(const::Vector<::Value>&,const::Vector<::Value>&)const")
TOPIC_TEXT(
"[2 $$0,0#00000000000000000000000000000000:Default][l288;i1120;a17;O9;~~~.1408;2 "
"$$1,0#10431211400427159095818037425705:param][a83;*R6 $$2,5#31310162474203024125188417583966:caption][b83;*4 "
"$$3,5#07864147445237544204411237157677:title][i288;O9;C2 $$4,6#40027414424643823182269349404212:item][b42;a42;2 "
"$$5,5#45413000475342174754091244180557:text][l288;a17;2 $$6,6#27521748481378242620020725143825:desc")
TOPIC_TEXT(
"][l321;t246;C@5;1 $$7,7#20902679421464641399138805415013:code][b2503; $$8,0#65142375456100023862071332075487:separator][*@(0.0.255)2 "
"$$9,0#83433469410354161042741608181528:base][t4167;C $$10,0#37138531426314131251341829483380:class][l288;a17;*1 "
"$$11,11#70004532496200323422659154056402:requirement][i417;b42;a42;O9;~~~.416;2 $$12,12#10566046415157235020018451313112:tparam][b167;C2 "
"$$13,13#9243045944")
TOPIC_TEXT(
"3460461911108080531343:item1][i288;a42;O9;C2 $$14,14#77422149456609303542238260500223:item2][*@2$(0.128.128) "
"$$15,15#34511555403152284025741354420178:NewsDate][l321;*C$7;2 $$16,16#03451589433145915344929335295360:result][l321;b83;a83;*C$7;2 "
"$$17,17#07531550463529505371228428965313:result`-line][l160;t4167;*C+117 $$18,5#88603949442205825958800053222425:package`-title][ "
"$$19,0#5358002344233552903990")
TOPIC_TEXT(
"0623488521:gap][t4167;C2 $$20,20#70211524482531209251820423858195:class`-nested][b50;2 "
"$$21,21#03324558446220344731010354752573:Par][{_}%EN-US [s2;:`:`:ArrayCtrl`:`:class: "
"ArrayCtrl&][s0; &][s0; &][s0; @@VectorImage:1668&1002\236\202\377\377\377\377\326\311\240\315\341\356\300\363\277\226\203\276\247\357\313\341\362\300\346\300\276\240\324\343\376\363\203\363\363\365\302\346\205\314\200\300\200\364\311\301\362\362\200\341\371\303\364\362\354\350\200\301\355\304\342\362\374\332\363\276\352\360\343\376\363\363\201\363\365\302\346\205\314\300\200\200\364\312\320\357\360\365\200\360\324\341\342\354\345\350\200\301\355\304\310\354\303\324\200\322\324\344\374\344\315\354\322\303\276\322\356\276\322\276\212\300\276\372\276\300\342\362\251\276\372\366\277\212\276\314\236\343\376\363\363\363\365\302\200\346\205\314\300\200\364\310\200\304\362\357\360\314\351\363\200\364\350\301\355\304\345\362\325\276\372\276\322\277\212")
TOPIC_TEXT(
"\276\274\350\343\376\363\363\363\365\200\302\346\205\314\300\200\364\200\312\304\362\357\360\303\350\200\357\351\343\345\350\301\355\320\304\316\354\303\276\322\276\252\300\276\322\276\334\276\372\201\276\334\312\354\303\324\340\222\324\276\370\374\276\370\313\310\354\303\324\276\366\324\276\215\224\374\276\224\342\362\374\275\276\356\276\352\276\204\343\217\376\363\363\363\365\302\346\200\205\314\300\200\364\310\323\200\361\354\301\362\362\341\371\200\350\301\355\304\343\362\374\277\276\212\276\352\276\240\343\217\376\363\363\363\365\302\346\200\205\314\300\200\364\311\301\200\362\362\341\371\320\341\351\200\362\350\301\355\304\256&][s0; "
"&][s10;* [* class_]ArrayCtrl&][s0;* &][s0;* @@PNG:1843&731\201\211\320\316\307\215\212\232\200\212\200\200\200\215\311\310\200\304\322\200\200\201\247\200\200\200\200\365\210\202\200\200\212\200\203\211\260\336\200\200\202\212\265\311\304\301\324\370\307\234\355\235\317\354\235\305\276\235\307\347\375\361\306\256\226\311\236\343\220\223\212\221\316\334\251\246\250\247\240\276\247\242\266\250\302\215\342\300\215\204\304\256\255\224\245\252\303\212\375\214\211\221\234\332\240\312\325\205\355\222\374\207\327\251\210\322\203\225\270\241\242\212\221\223\321\271\224\277\347\271\320\310\301\275\225\266\322\271\225\270\322\352\264\261\370\215\301\211\266\364\266\207\204\361\306\363\346\346\347\347\357\336\233\335\235\267\363\375\357\310\262\366\375\366\376")
TOPIC_TEXT(
"\357\230\374\367\346\377\314\357\353\307\377\373\357\277\211\200\240\342\304\352\325\227\200\200\350\262\350\362\277\376\375\247\377\360\324\325\216\200\202\347\227\212\277\375\276\335\350\212\273\220\226\317\236\254\275\260\200\215\204\317\373\324\373\354\333\374\324\235\345\372\312\277\312\360\252\314\345\374\364\341\307\200\317\237\272\222\303\315\355\372\301\313\350\370\350\303\217\366\377\370\243\237\330\306\332\232\275\376\275\376\247\332\365\320\200\200\275\347\317\337\271\236\372\343\366\312\352\267\331\222\201\306\367\355\333\273\266\377\374\324\243\367\312\273\240\244\272\200\254\271\373\376\212\216\241\344\231\307\237\236\353\212\355\337\275\272\303\216\360\226\375\355\253\233\353\267\277\336\331\372\374\354\371\253\262\221\360\314\325\367\367\275\217\255\362\277\315\237\267\334\375\357\317\203\203\365\360\202\257\247\251\276\344\203\327\265\276\362\321\266\214\355\204\330\232\337\342\352\215\333\317\274\376\273\360\362\332\262\274\266\301\341\376\363\275\243\324\362\310\306\203\243\357\377\372\325\336\234\341\261\326\361\315\232\366\270\253\213\335\252\332\302\370\334\305\326\313\320\355\370\232\374\353\345\365\233\261\326\366\237\313\253\267\365\301\332\367\314\215\251\247\240\370\336\247\317\203\236\305\253\256\205\360\327\221\335\243\273\322\356\346\361\346\337\225\254\255\355\211\254\262\356\277\327\365\254\323\371\362\347\301\301\302\354\232\246\260\362\354\245\253\235\212\247\311\255\254\320\307\241\242\377\304\247\272\270\205\257\254\272\360\252\212\265\312\204\220\224\302\322\266\265\277\260\317\312\210\231\337\230\373\356\366\223\271\334\350\226\252\323")
TOPIC_TEXT(
"\266\271\245\346\376\237\265\235\233\324\313\237\267\252\224\305\312\346\255\244\362\334\263\270\344\245\236\212\345\346\251\247\340\227\225\220\246\333\252\333\330\374\334\340\306\371\205\371\331\263\366\254\276\342\217\327\365\344\214\315\263\352\372\244\311\317\301\360\360\200\371\330\244\303\222\261\272\225\372\362\272\274\254\216\252\272\305\327\226\227\351\317\366\314\233\356\257\364\254\256\264\347\332\232\210\254\375\335\327\321\346\245\377\335\232\340\302\224\303\274\226\332\311\260\262\361\260\310\336\346\222\274\344\210\241\204\244\243\234\344\346\210\311\333\263\356\263\364\347\342\353\213\374\335\374\323\240\300\273\251\302\277\214\264\347\201\242\302\221\230\306\263\357\314\215\330\314\305\211\206\203\270\244\307\322\356\264\235\231\236\246\204\314\244\314\317\263\273\250\274\245\200\253\342\337\367\323\344\255\375\361\226\241\335\331\365\233\340\276\326\356\272\245\240\314\370\332\331\244\301\302\302\310\244\233\341\240\277\250\374\245\213\272\207\267\303\212\240\245\243\204\314\314\237\223\206\265\351\331\242\340\252\272\375\325\377\263\306\242\274\211\242\211\376\325\371\321\322\344\253\251\211\232\354\324\336\360\362\323\257\304\212\320\324\327\250\354\275\320\312\333\342\372\332\327\340\311\343\323\237\346\375\346\217\206\322\356\305\233\341\201\211\337\350\216\270\352\261\263\375\276\353\333\215\365\233\303\307\271\252\373\372\363\374\327\336\266\331\356\205\352\202\356\341\216\201\327\255\346\366\216\234\215\377\262\364\371\243\217\207\214\266\356\232\322\276\212\376\337\277\271\261\376\365\346\212\347\377\336\333\273\266\254\375\357\325\250\356\342\337")
TOPIC_TEXT(
"\376\217\342\276\230\376\261\261\361\310\377\244\265\265\205\255\243\244\341\342\342\376\302\310\323\373\217\336\373\366\374\225\367\366\277\275\352\354\315\301\352\207\352\232\303\322\202\220\230\352\223\337\241\204\220\245\234\234\214\321\250\356\307\277\271\361\324\363\362\203\304\273\357\317\274\371\364\241\243\325\227\245\302\307\320\262\232\336\375\335\347\315\272\201\365\365\316\257\340\227\331\307\203\334\366\335\330\322\322\372\272\370\210\265\255\213\306\371\242\351\223\277\266\276\356\362\352\355\264\315\275\305\310\326\243\362\272\244\301\310\232\264\266\207\233\275\233\216\326\327\201\201\340\317\351\322\372\305\313\337\232\313\204\334\277\271\363\352\262\370\325\364\371\202\204\256\257\220\333\336\323\277\216\343\344\357\255\257\203\352\302\343\342\225\245\257\367\317\356\264\214\276\351\256\272\251\251\243\246\357\301\226\226\376\340\230\340\243\240\263\373\364\307\366\252\205\362\255\212\332\337\207\274\367\244\323\351\224\221\354\333\262\357\317\222\302\352\365\372\351\275\336\247\204\264\233\315\212\306\243\301\267\211\241\311\355\222\274\361\304\257\212\310\340\267\274\314\325\327\253\325\343\204\267\271\345\213\360\204\200\264\255\304\365\331\244\311\226\322\220\316\303\305\324\365\212\220\330\200\221\366\212\271\260\330\364\330\373\351\317\257\223\311\273\336\277\374\372\221\232\271\206\212\374\246\204\310\376\247\355\320\277\337\374\356\366\214\333\226\255\266\311\262\307\271\245\325\256\240\343\332\312\322\265\332\215\355\320\370\342\335\202\205\324\213\275\213\347\375\362\251\271\302\310\313\257\247\346\330\322\257\301\342\245\233\354\275\336\357\265")
TOPIC_TEXT(
"\262\243\357\276\214\215\215\365\323\247\346\250\260\273\277\321\353\316\271\376\230\361\226\210\317\272\223\350\340\366\342\361\255\234\247\202\257\234\236\317\273\271\235\327\316\317\323\237\257\264\236\357\323\200\266\311\342\254\264\363\205\203\366\304\330\341\347\233\354\216\371\362\371\334\351\352\371\355\253\333\216\260\206\316\276\277\335\363\214\343\263\321\350\354\354\250\237\356\320\215\214\214\300\223\346\310\270\350\251\336\201\340\377\307\251\201\376\311\273\251\373\264\373\341\366\230\263\277\260\266\373\214\337\345\233\254\306\236\327\270\256\263\302\345\313\276\341\270\363\204\224\327\326\225\332\271\321\376\226\220\362\227\242\375\254\340\357\241\345\231\334\315\361\202\335\323\362\357\371\342\215\267\340\254\363\362\204\371\300\234\237\371\271\357\352\350\330\235\245\233\315\214\246\241\344\215\243\357\220\276\302\352\365\372\320\320\320\357\235\243\347\322\306\210\365\315\363\272\371\340\301\354\276\370\321\317\363\374\357\337\341\224\333\275\246\337\257\267\232\327\215\336\342\202\202\267\302\203\202\244\311\262\227\375\365\266\343\247\272\247\237\374\325\202\217\205\201\262\320\335\350\267\354\237\334\371\361\222\351\352\310\363\344\343\371\255\271\276\204\240\272\320\230\232\354\216\341\375\216\347\300\365\242\352\330\345\211\212\206\252\353\236\242\266\205\344\240\222\224\333\252\273\374\315\360\216\330\301\300\223\317\315\355\301\313\354\224\212\306\272\256\316\274\346\365\256\352\242\324\300\211\215\237\235\250\272\210\361\201\267\325\211\304\266\311\304\365\222\354\371\300\365\241\201\357\232\305\376\203\325\205\306\301\223\336\212\216\236\320\375")
TOPIC_TEXT(
"\374\257\224\361\336\271\305\303\204\204\343\206\252\213\220\370\253\355\362\234\323\227\326\367\215\343\217\344\332\264\241\331\237\202\355\371\300\217\210\353\213\223\262\376\334\345\227\244\211\240\375\261\232\230\342\332\330\256\337\254\334\352\255\203\375\221\343\243\374\334\341\247\250\270\202\370\253\362\234\262\227\200\350\300\362\245\200\357\305\371\236\343\275\303\224\347\212\217\202\345\213\225\333\246\263\370\311\241\226\377\323\304\256\240\314\301\216\223\247\360\326\211\344\271\366\347\247\272\277\275\244\377\262\305\274\273\253\206\343\261\237\246\366\345\212\332\362\334\270\201\267\242\317\236\361\320\216\362\350\327\325\217\277\307\364\225\202\357\305\377\236\343\240\245\330\230\203\252\316\357\211\360\326\344\271\264\256\333\312\344\270\213\374\251\356\327\216\360\326\344\271\202\366\217\331\344\255\211\227\262\340\271\321\350\230\334\330\204\326\245\301\230\253\200\357\332\305\236\343\375\274\316\356\205\342\331\235\336\223\305\266\327\312\201\231\276\365\201\224\304\211\306\256\303\370\253\362\242\234\274\322\220\240\360\326\301\344\271\320\335\350\224\344\305\255\210\257\265\273\204\252\320\213\215\370\253\362\237\250\244\316\204\253\274\301\321\300\214\365\335\300\227\201\250\201\217\205\352\356\333\263\334\376\306\271\312\347\302\264\265\265\274\205\255\243\341\202\213\304\262\260\326\365\221\347\364\262\350\266\327\261\225\203\325\211\253\304\326\205\343\274\321\324\320\213\324\227\232\360\326\344\340\277\320\335\350\224\344\255\214\350\352\352\250\311\260\374\313\204\304\204\250\256\300\340\303\255\310\363\314\325\327\253\347\325\204\327\347\345\213")
TOPIC_TEXT(
"\322\351\236\225\314\237\227\333\306\230\247\251\373\300\241\247\242\342\223\222\244\251\310\347\241\316\342\375\255\326\362\340\331\301\365\240\332\200\357\305\236\323\343\373\202\215\371\313\350\320\240\227\370\253\362\234\323\211\226\342\335\277\366\207\376\230\227\357\261\321\211\220\305\355\336\260\214\310\254\206\265\321\210\204\370\253\362\234\273\375\363\223\235\357\361\307\214\257\267\230\367\376\236\242\250\321\363\342\226\210\217\207\336\345\212\274\307\301\273\312\343\352\317\256\214\344\250\275\345\315\305\262\302\265\237\217\274\234\225\371\216\203\226\312\271\206\314\302\313\203\346\277\371\336\341\240\223\201\267\242\317\222\361\331\322\326\303\235\217\226\215\254\274\335\251\371\276\243\301\376\303\370\202\360\326\361\344\271\366\317\311\345\376\315\315\333\262\306\256\301\215\270\331\242\221\236\362\311\306\264\271\257\314\260\225\300\333\263\221\347\330\277\257\223\217\364\336\326\217\347\302\320\244\247\246\317\313\344\227\364\246\250\203\357\305\236\323\375\233\214\341\230\254\234\203\357\305\335\236\323\275\352\240\267\267\226\224\344\255\210\257\265\273\265\244\372\325\201\267\300\333\303\221\377\300\365\242\330\345\332\211\212\206\252\353\242\266\347\205\344\240\222\224\252\273\266\374\315\360\216\330\300\223\220\317\315\355\301\313\224\212\333\306\272\256\316\274\365\256\321\352\242\324\200\374\221\226\220\214\324\247\222\333\244\223\267\327\261\345\203\325\205\206\205\274\225\371\217\324\227\232\240\205\371\253\272\370\240\355\300\222\214\237\241\261\201\252\320\213\220\370\253\362\234\323\205\227\326\345\257\233\347\375\335\353\330\260\367\371\311")
TOPIC_TEXT(
"\344\272\375\343\243\354\257\237\364\361\242\302\330\333\220\365\347\362\252\273\244\311\350\213\321\265\300\220\353\357\265\226\217\255\313\372\337\370\310\344\237\230\341\265\204\336\212\274\347\211\220\226\350\310\337\305\207\256\312\340\255\310\363\254\347\323\230\362\374\317\260\350\264\245\221\233\227\356\230\316\247\351\263\322\263\254\321\300\300\376\333\221\347\330\235\237\350\316\234\217\376\311\226\375\217\311\227\303\252\343\262\343\317\251\251\301\370\360\326\344\271\302\216\332\321\236\363\362\273\277\276\346\362\314\374\312\255\256\353\214\305\265\237\274\225\216\371\216\203\226\342\343\316\213\311\335\335\316\227\203\235\226\205\336\212\274\307\345\313\311\231\217\367\275\351\243\353\264\236\246\233\341\346\346\233\312\211\360\326\344\271\366\217\252\331\344\276\315\333\364\343\325\235\234\322\260\256\262\214\364\246\265\314\260\341\255\310\236\363\254\237\327\311\375\272\203\253\227\263\261\350\302\212\314\226\271\260\325\225\240\364\266\306\201\267\242\317\301\253\240\205\201\202\357\305\236\203\363\325\205\306\301\336\212\360\372\332\263\303\240\272\320\200\335\267\242\377\201\352\304\260\235\312\223\230\363\330\303\373\262\344\343\207\313\313\372\330\310\320\335\227\360\345\200\254\377\370\353\337\257\235\370\243\360\342\302\277\367\370\333\232\334\330\212\325\335\267\347\330\212\331\241\274\346\302\264\265\331\265\205\255\243\341\302\367\373\317\307\236\332\363\331\357\237\305\341\356\203\245\345\302\264\266\265\211\340\254\353\242\223\316\351\345\354\256\342\234\375\342\354\254\213\234\330\272\302\340\234\247\232\327\340\254\246\203\204\300\333\321\271")
TOPIC_TEXT(
"\340\265\254\203\204\224\346\255\350\266\352\352\250\311\260\330\276\206\302\202\261\216\354\201\357\212\305\245\321\354\330\247\377\255\251\330\363\355\342\345\327\316\327\211\366\243\331\264\226\210\371\256\300\203\303\317\304\260\246\244\311\322\220\316\207\317\202\323\207\277\373\347\371\340\376\312\267\210\311\335\214\202\365\375\364\375\226\327\243\324\241\310\313\241\360\326\344\244\271\330\240\221\240\360\326\325\344\271\246\255\305\246\212\315\265\273\360\273\370\213\235\274\250\232\246\306\266\205\250\203\271\271\344\355\203\202\357\242\305\336\343\367\376\242\323\376\304\376\230\361\226\254\256\221\317\204\343\370\244\215\363\245\241\373\331\256\210\217\201\334\357\305\236\343\240\235\345\224\361\311\320\300\256\254\373\245\313\305\310\213\327\206\214\334\370\253\362\234\377\203\340\266\336\377\351\223\344\301\355\200\200\200\200\200\311\305\316\222\304\256\302\340\202&][s0;* "
"&][s0; [* ArrayCtrl] implements basic grid functionality. It is typically used for "
"display and editation of arrays of values or (heterogeneous) records. The records "
"corr")
TOPIC_TEXT(
"espond 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 ")
TOPIC_TEXT(
"[* 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 editation with drop`-down selection, widely u")
TOPIC_TEXT(
"sed 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")
TOPIC_TEXT(
" 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")
TOPIC_TEXT(
" 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 [/ ")
TOPIC_TEXT(
"columns].&][s0; &][s0; The visual ArrayCtrl structure can be entirely independent "
"of the source data strucrure (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 equa")
TOPIC_TEXT(
"l 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 withou")
TOPIC_TEXT(
"t 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 ind")
TOPIC_TEXT(
"ices: 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`")
TOPIC_TEXT(
"-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, editation, and local menu&][s0; &][s0; Array rows can be "
"selected using the mouse or keyboard. ArrayCtrl`'s support both singl")
TOPIC_TEXT(
"e`-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 substantical patchwork) to "
"select only certain columns or individual cells.&][s0; &][s0; The ArrayCtrl rows "
"can be inserted, edited and deleted either programmatically, or via co")
TOPIC_TEXT(
"mmon 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 editation keys ([* Insert] `= row "
"insertion, [* Ctrl`+Enter] `= editation and [* Ctrl`+Delete] `= deletion) are not "
"hardcoded in the ArrayCtrl`'s [* Key] method, they are mere hotkeys for ")
TOPIC_TEXT(
"the relevant local menu items. When you change the ArrayCtrl`'s local menu, the "
"editation hotkeys change accordingly.&][s0; &][s0; A special but rather important "
"case of array editation 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")
TOPIC_TEXT(
" 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, w")
TOPIC_TEXT(
"hen 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; Wh")
TOPIC_TEXT(
"en 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 co")
TOPIC_TEXT(
"mplex 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, #")
TOPIC_TEXT(
"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`-b")
TOPIC_TEXT(
"ased 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")
TOPIC_TEXT(
" 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 al")
TOPIC_TEXT(
"l 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 ")
TOPIC_TEXT(
"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 tu")
TOPIC_TEXT(
"rned on by default, but it can be disable by setting the [* NoInsertAppend] property "
"to true.&][s0; &][s0;*+117 Categorized method summary&][s0; &][s0; 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;* Initia")
TOPIC_TEXT(
"lization 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")
TOPIC_TEXT(
")]:: [s0; GetLineCy]:: [s0; returns logical array row height (value set by preceding "
"SetLineCy)]:: [s0;:`:`:ArrayCtrl`:`:GetLineCy`(int`)const: 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] ")
TOPIC_TEXT(
"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 ro")
TOPIC_TEXT(
"ws 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; Append")
TOPIC_TEXT(
"ing]:: [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]:")
TOPIC_TEXT(
": [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]:: ")
TOPIC_TEXT(
"[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; backgro")
TOPIC_TEXT(
"und 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 th")
TOPIC_TEXT(
"e 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; Ind")
TOPIC_TEXT(
"exInfo]:: [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")
TOPIC_TEXT(
" 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 colum")
TOPIC_TEXT(
"n, 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 accor")
TOPIC_TEXT(
"ding 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")
TOPIC_TEXT(
"; 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")
TOPIC_TEXT(
" display]:: [s0; SetCtrl]:: [s0; sets a [* Ctrl] object for custom editation 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 num")
TOPIC_TEXT(
"ber 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]:: ")
TOPIC_TEXT(
"[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 editation]:: [s0; Set]:: [s0; "
"sets given element of the source data matrix]:: [s0; GetKey]:: [s0; r")
TOPIC_TEXT(
"eturns given primary key (column #0 in the data matrix)]:: [s0; GetOriginalKey]:: "
"[s0; returns `'old`' value of primary key before editation]:: [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 dat")
TOPIC_TEXT(
"a 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 da")
TOPIC_TEXT(
"ta 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 gi")
TOPIC_TEXT(
"ven 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 editation of current row]:: "
"[s0; IsCursor]:: [s0; checks whether cursor is in the table")
TOPIC_TEXT(
" (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 ")
TOPIC_TEXT(
"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")
TOPIC_TEXT(
"]:: [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;3 &][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 c")
TOPIC_TEXT(
"ell]:: [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;")
TOPIC_TEXT(
" 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 ro")
TOPIC_TEXT(
"w 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; WhenCursor]:: [s0; called whenever the cursor location changes]:: [s0; WhenKillCursor]:: "
"[s0; called when the cursor moves away from the table]::")
TOPIC_TEXT(
" [s0; WhenSelection]:: [s0; called whenever current selection changes]:: [s0; WhenEnterRow]:: "
"[s0; called whenever the cursor moves to a new row]:: [s0; WhenUpdateRow]:: [s0; "
"called after updating a row]:: [s0; WhenAcceptRow]:: [s0; additional row validation "
"callback]:: [s0; WhenStartEdit]:: [s0; called after initiating row editation]:: [s0; "
"WhenAcceptEdit]:: [s0; called after accepting changes to")
TOPIC_TEXT(
" 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; &][s0;*+117 Detailed method description&][s0; "
"&][s0;* Initialization and configuration&][s0;3 &][")
TOPIC_TEXT(
"s4;:`:`:ArrayCtrl`:`:Reset`(`): void_[* Reset]()&][s6; Clears table rows and resets "
"all array properties to their default values.&][s0;3 &][s4;:`:`:ArrayCtrl`:`:ShowAppendLine`(`): "
"void_[* ShowAppendLine]()&][s6; Show an additional pseudo`-row at the table end. "
"When clicked, a new row is appended to the array.&][s0;3 &][s4;:`:`:ArrayCtrl`:`:IsEdit`(`)const: "
"bool_[* IsEdit]()_const&][s6; Checks whe")
TOPIC_TEXT(
"ther the array is currently being edited.&][s1; [*/ Return value]-|[* true] `= a "
"row is currently open for editing, [* false] `= array is in normal browsing mode&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:IsInsert`(`)const: bool_[* IsInsert]()_const&][s6; Checks "
"whether a new row is currently being inserted.&][s1; [*/ Return value]-|[* true] "
"`= newly inserted row is currently being edited, [* false] when not&")
TOPIC_TEXT(
"][s0;* &][s0;3 &][s4;:`:`:ArrayCtrl`:`:SetLineCy`(int`): [%00-00 void_][%00-00* "
"SetLineCy][%00-00 (int_][%00-00*@3 cy][%00-00 )]&][s6; Sets the (default) array row "
"height. For certain rows, this can be overriden by the two`-parameter version of "
"this method.&][s1; [%00-00*C@3 cy]-|row height in pixels&][s0;3 &][s4;:`:`:ArrayCtrl`:`:SetLineCy`(int`,int`): "
"[%00-00 void_][%00-00* SetLineCy][%00-00 (in")
TOPIC_TEXT(
"t_][%00-00*@3 i][%00-00 , int_][%00-00*@3 cy][%00-00 )]&][s6; Sets row height for "
"a given row. This overrides the default value set by the one`-parameter version of "
"this method.&][s1; [%00-00*C@3 i]-|row index (zero based)&][s1; [%00-00*C@3 cy]-|row "
"height in pixels, [* Null] `= use default row height&][s0;3 &][s4;:`:`:ArrayCtrl`:`:GetLineCy`(`)const: "
"[%00-00 int_][%00-00* GetLineCy][%00-00 ()_con")
TOPIC_TEXT(
"st]&][s6; Returns default array row height.&][s1; [*/ Return value]-|row height "
"in pixels&][s0;3 &][s4;:`:`:ArrayCtrl`:`:GetLineY`(int`)const: [%00-00 int_][%00-00* "
"GetLineY][%00-00 (int_][%00-00*@3 i][%00-00 )_const]&][s6; Returns [/ y] position "
"of given array row (the pixel distance between the top of first array row and [/ "
"i]`-th row, i.e. sum of heights of all rows above this row).&][s1; [%00-")
TOPIC_TEXT(
"00*C@3 i]-|row index (zero based)&][s1; [*/ Return value]-|Vertical position of "
"row top in pixels (relative to array beginning)&][s0;3 &][s4;:`:`:ArrayCtrl`:`:GetLineCy`(int`)const: "
"[%00-00 int_][%00-00* GetLineCy][%00-00 (int_][%00-00*@3 i][%00-00 )_const]&][s6; "
"Returns the height of a given row (either the row`-specific row height, or, when "
"Null, the default row height).&][s1; [%00-00*C@3 i]-|ro")
TOPIC_TEXT(
"w index (zero based)&][s1; [*/ Return value]-|row height in pixels&][s0;* &][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:AppendLine`(bool`): [%00-00 ArrayCtrl`&_][%00-00* AppendLine][%00-00 "
"(bool_][%00-00*@3 b][%00-00 _`=_true)]&][s6; The AppendLine property controls whether "
"the array displays an additional `'append`' row after its last (real) row. &][s1; "
"[%00-00*C@3 b]-|[* true] `= display appending row, [* fal")
TOPIC_TEXT(
"se] `= hide it&][s1;* [/ Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:NoAppendLine`(`): "
"[%00-00 ArrayCtrl`&_][%00-00* NoAppendLine][%00-00 ()]&][s6; Hide the appending line "
"(identical to [* AppendLine(false)]).&][s1;* [/ Return value][* -|]`*this&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:IsAppendLine`(`)const: [%00-00 bool_][%00-00* IsAppendLine][%00-00 "
"()_const]&][s6; Returns current state of th")
TOPIC_TEXT(
"e [* AppendLine] property.&][s1; [*/ Return value]-|[* true] `= display appending "
"pseudo`-row at the end of the array&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Inserting`(bool`): "
"[%00-00 ArrayCtrl`&_][%00-00* Inserting][%00-00 (bool_][%00-00*@3 b][%00-00 _`=_true)]&][s6; "
"Enable / disable inserting new rows in the array (no matter which insertion mechanism "
"is selected).&][s1; [%00-00*C@3 b]-|[* true] `= enabl")
TOPIC_TEXT(
"e insertion, [* false] `= disable it&][s1;* [/ Return value][* -|]`*this&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:NoInserting`(`): [%00-00 ArrayCtrl`&_][%00-00* NoInserting][%00-00 "
"()]&][s6; Disables row insertion (identical to [* Inserting(false)]).&][s1;* [/ Return "
"value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:IsInserting`(`)const: bool_[* IsInserting]()_const&][s6; "
"Returns current state of the [* Ins")
TOPIC_TEXT(
"erting] property.&][s1; [*/ Return value]-|[* true] `= row insertion is enabled, "
"[* false] when not&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Appending`(bool`): [%00-00 ArrayCtrl`&_][%00-00* "
"Appending][%00-00 (bool_][%00-00*@3 b][%00-00 _`=_true)]&][s6; Enable / disable adding "
"new rows at the table end.&][s1; [%00-00*C@3 b]-|[* true] `= enable row appending, "
"[* false] `= disable it&][s1;* [/ Return value][* ")
TOPIC_TEXT(
"-|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:IsAppending`(`)const: [%00-00 bool_][%00-00* "
"IsAppending][%00-00 ()_const]&][s6; Returns current state of the [* Appending] property.&][s1; "
"[*/ Return value]-|[* true] `= appending rows is enabled, [* false] when not.&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:AutoAppending`(bool`): [%00-00 ArrayCtrl`&_][%00-00* AutoAppending][%00-00 "
"(bool_][%00-00*@3 b][%00-00 _`=_tru")
TOPIC_TEXT(
"e)]&][s6; Same as [* Appending] but Enter pressed when editing a new row accepts "
"it and adds another one at the table end.&][s1; [%00-00*C@3 b]-|[* true ]to enable "
"the mode&][s1;* [/ Return value][* -|]`*this&][s0; &][s4;:`:`:ArrayCtrl`:`:IsAutoAppending`(`)const: "
"[%00-00 bool_][%00-00* IsAutoAppending][%00-00 ()_const]&][s6; Returns current state "
"of [* AutoAppending] property.&][s1; [*/ Return va")
TOPIC_TEXT(
"lue]-|[* true] `= [* AutoAppending ]is active&][s0; &][s4;:`:`:ArrayCtrl`:`:BeforeAfterInserting`(int`): "
"[%00-00 ArrayCtrl`&_][%00-00* BeforeAfterInserting][%00-00 ()]&][s6; Activate before "
"/ after row insertion mechanism ([* Insert] hotkey `= before).&][s1;* [/ Return value][* "
"-|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:AfterBeforeInserting`(int`): [%00-00 ArrayCtrl`&_][%00-00* "
"AfterBeforeInserting]")
TOPIC_TEXT(
"[%00-00 ()]&][s6; Activate before / after row insertion mechanism ([* Insert] hotkey "
"`= after)&][s1;* [/ Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Duplicating`(bool`): "
"[%00-00 ArrayCtrl`&_][%00-00* Duplicating][%00-00 (bool_][%00-00*@3 b][%00-00 _`=_true)]&][s6; "
"Enable / disable row duplication. Note that this property only controls whether the "
"`'Duplicate`' item should be present i")
TOPIC_TEXT(
"n the array local menu. Of course, nothing can prevent you from supporting duplication "
"in some other way, or from calling the [* DoDuplicate] method as you see fit.&][s1; "
"[%00-00*C@3 b]-|[* true] `= enable duplication, [* false] `= disable it&][s1;* [/ "
"Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:NoDuplicating`(`): ArrayCtrl`&_[* "
"NoDuplicating]()&][s6; Disable row duplication (identica")
TOPIC_TEXT(
"l to [* Duplicating(false)]).&][s1;* [/ Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:IsDuplicating`(`)const: "
"bool_[* IsDuplicating]()_const&][s6; Returns the state of the [* Duplicating] property.&][s1; "
"[*/ Return value]-|[* true] `= local menu offers row duplication, [* false] when "
"not&][s0;3 &][s4;:`:`:ArrayCtrl`:`:NoInsertAppend`(bool`): [%00-00 ArrayCtrl`&_][%00-00* "
"NoInsertAppend]")
TOPIC_TEXT(
"[%00-00 (bool_][%00-00*@3 b][%00-00 _`=_true)]&][s6; Enables / disables the auto`-append "
"mechanism (see above section on inserting rows).&][s1; [%00-00*C@3 b]-|[* true] `= "
"disable InsertAppend mechanism, [* false] `= enable it (the default)&][s1;* [/ Return "
"value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:IsEditing`(`)const: bool_[* IsEditing]()_const&][s6; "
"Checks whether at least one array colum")
TOPIC_TEXT(
"n supports editing (whether it is possible to [/ open] a row for editation).&][s1; "
"[*/ Return value]-|[* true] `= row editing is possible, [* false] when not&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:Removing`(bool`): [%00-00 ArrayCtrl`&_][%00-00* Removing][%00-00 "
"(bool_][%00-00*@3 b][%00-00 _`=_true)]&][s6; Enable / disable deleting rows from "
"the table.&][s1; [%00-00*C@3 b]-|[* true] `= enable deletion, [* ")
TOPIC_TEXT(
"false] `= disable it&][s1;* [/ Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:NoRemoving`(`): "
"[%00-00 ArrayCtrl`&_][%00-00* NoRemoving][%00-00 ()]&][s6; Disable deleting table "
"rows (identical to [* Removing(false)]).&][s1;* [/ Return value][* -|]`*this&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:IsRemoving`(`)const: [%00-00 bool_][%00-00* IsRemoving][%00-00 "
"()_const]&][s6; Returns current state of th")
TOPIC_TEXT(
"e [* Removing] property.&][s1; [*/ Return value]-|[* true] `= row deletion is enabled, "
"[* false ]when not&][s0;3 &][s4;:`:`:ArrayCtrl`:`:AskRemove`(bool`): [%00-00 ArrayCtrl`&_][%00-00* "
"AskRemove][%00-00 (bool_][%00-00*@3 b][%00-00 _`=_true)]&][s6; Sets whether the user "
"must manually confirm array row deletion. When set to [* true], every time a row "
"is to be deleted, a confirmation dialog pops up.")
TOPIC_TEXT(
" When set to [* false], rows are deleted automatically without any further confirmation.&][s1; "
"[%00-00*C@3 b]-|[* true] `= prompt user to confirm row deletion, [* false] `= delete "
"rows instantly&][s1;* [/ Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:NoAskRemove`(`): "
"[%00-00 ArrayCtrl`&_][%00-00* NoAskRemove][%00-00 ()]&][s6; Disables user confirmation "
"of row deletion (equivalent to [* ")
TOPIC_TEXT(
"AskRemove(false)]).&][s1;* [/ Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:IsAskRemove`(`)const: "
"[%00-00 bool_][%00-00* IsAskRemove][%00-00 ()_const]&][s6; Returns current state "
"of the [* AskRemove] property.&][s1; [*/ Return value]-|[* true] `= user confirmation "
"is needed to delete rows, [* false] `= rows are deleted immediately&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Moving`(bool`): "
"[%00-00 A")
TOPIC_TEXT(
"rrayCtrl`&_][%00-00* Moving][%00-00 (bool_][%00-00*@3 b][%00-00 _`=_true)]&][s6; "
"Enable / disable row swapping. When set to [* true], 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.&][s1; [%00-00*C@3 b]-|[* "
"true] `= offer row moving in the local menu, [* false] `= don`'t&][s1;*")
TOPIC_TEXT(
" [/ Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:IsMoving`(`)const: "
"[%00-00 bool_][%00-00* IsMoving][%00-00 ()_const]&][s6; Returns current state of "
"the [* Moving] property.&][s1; [*/ Return value]-|[* true] `= local menu supports "
"row swapping, [* false] `= it doesn`'t&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Header`(bool`): "
"[%00-00 ArrayCtrl`&_][%00-00* Header][%00-00 (bool_][%00-00*@3 b][%00-0")
TOPIC_TEXT(
"0 _`=_true)]&][s6; Show / hide the [*^topic`:`/`/CtrlLib`/src`/HeaderCtrl`$en`-us^ "
"HeaderCtrl] object for this table.&][s1; [%00-00*C@3 b]-|[* true] `= show table header, "
"[* false] `= hide it&][s1;* [/ Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:NoHeader`(`): "
"[%00-00 ArrayCtrl`&_][%00-00* NoHeader][%00-00 ()]&][s6; Hide table header (equivalent "
"to [* Header(false)]).&][s1;* [/ Return ")
TOPIC_TEXT(
"value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Track`(bool`): [%00-00 ArrayCtrl`&_][%00-00* "
"Track][%00-00 (bool_][%00-00*@3 b][%00-00 _`=_true)]&][s6; Animate array column resizing. "
"This is equivalent to setting the [*^topic`:`/`/CtrlLib`/src`/HeaderCtrl`$en`-us`#`:`:HeaderCtrl`:`:Track`(bool`)^ "
"Track] property in the array HeaderCtrl.&][s1; [%00-00*C@3 b]-|[* true] `= repaint "
"the array repeate")
TOPIC_TEXT(
"dly while dragging column widths, [* false] `= regenerate everything only after "
"drag `& drop is finished.&][s1;* [/ Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:NoTrack`(`): "
"[%00-00 ArrayCtrl`&_][%00-00* NoTrack][%00-00 ()]&][s6; Do not animate array column "
"resizing (equivalent to [* Track(false)]).&][s1;* [/ Return value][* -|]`*this&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:VertGrid`(bool`): [%")
TOPIC_TEXT(
"00-00 ArrayCtrl`&_][%00-00* VertGrid][%00-00 (bool_][%00-00*@3 b][%00-00 _`=_true)]&][s6; "
"Show / hide vertical array grid lines (separating array columns).&][s1; [%00-00*C@3 "
"b]-|[* true] `= show vertical grid lines, [* false] `= hide them&][s1;* [/ Return "
"value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:NoVertGrid`(`): [%00-00 ArrayCtrl`&_][%00-00* "
"NoVertGrid][%00-00 ()]&][s6; Hide vertical grid ")
TOPIC_TEXT(
"lines (equivalent to [* VertGrid(false)]).&][s1;* [/ Return value][* -|]`*this&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:HorzGrid`(bool`): [%00-00 ArrayCtrl`&_][%00-00* HorzGrid][%00-00 "
"(bool_][%00-00*@3 b][%00-00 _`=_true)]&][s6; Show / hide horizontal grid lines (separating "
"array rows).&][s1; [%00-00*C@3 b]-|[* true] `= show horizontal grid lines, [* false] "
"`= hide them&][s1;* [/ Return value][* -|]`*this&")
TOPIC_TEXT(
"][s0;3 &][s4;:`:`:ArrayCtrl`:`:NoHorzGrid`(`): [%00-00 ArrayCtrl`&_][%00-00* NoHorzGrid][%00-00 "
"()]&][s6; Hide horizontal grid lines (equivalent to [* HorzGrid(false)]).&][s1;* "
"[/ Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Grid`(bool`): [%00-00 "
"ArrayCtrl`&_][%00-00* Grid][%00-00 (bool_][%00-00*@3 b][%00-00 _`=_true)]&][s6; Show "
"/ hide both horizontal and vertical grid lines (equivale")
TOPIC_TEXT(
"nt to [* HorzGrid(b).VertGrid(b)]).&][s1; [%00-00*C@3 b]-|[* true] `= show grid "
"line matrix, [* false] `= hide all grid lines&][s1;* [/ Return value][* -|]`*this&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:NoGrid`(`): [%00-00 ArrayCtrl`&_][%00-00* NoGrid][%00-00 "
"()]&][s6; Hide horizontal and vertical grid lines (equivalent to [* Grid(false)]).&][s1;* "
"[/ Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:")
TOPIC_TEXT(
"GridColor`(`:`:Color`): [%00-00 ArrayCtrl`&_][%00-00* GridColor][%00-00 (Color_][%00-00*@3 "
"c][%00-00 )]&][s6; Sets the color for grid lines.&][s1; [%00-00*C@3 c]-|new grid "
"line color&][s1;* [/ Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:EvenRowColor`(`:`:Color: "
"[%00-00 ArrayCtrl`&_][%00-00* EvenRowColor][%00-00 (Color_][%00-00*@3 paper][%00-00 "
"_`=_Blend(SColorHighlight, SColorPaper, ]")
TOPIC_TEXT(
"[%00-00@3 220][%00-00 ), Color_][%00-00*@3 ink][%00-00 _`=_SColorText)]&][s6; 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).&][s6; "
"[* Note:] the even / odd row terminology refers to the natural ar")
TOPIC_TEXT(
"ray row numbering, so first array row is [/ odd] and the second is [/ even]. This "
"is in contrast to the zero`-baesd integral row indexing, where the first array row "
"has index 0.&][s1; [%00-00*C@3 paper]-|background color to use for second, fourth, "
"sixth etc. array row&][s1; [%00-00*C@3 ink]-|foreground color for even rows&][s1;* "
"[/ Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:OddRowCol")
TOPIC_TEXT(
"or`(`:`:Color`,`:`:Color`): [%00-00 ArrayCtrl`&_][%00-00* OddRowColor][%00-00 (Color_][%00-00*@3 "
"paper][%00-00 _`=_SColorInfo, Color_][%00-00*@3 ink][%00-00 _`=_SColorText)]&][s6; "
"Sets the paper and ink (background and foreground) color for odd array rows.&][s1; "
"[%00-00*C@3 paper]-|background color to use for first, third, fifth etc. array row&][s1; "
"[%00-00*C@3 ink]-|foreground color for odd rows&")
TOPIC_TEXT(
"][s1;* [/ Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:NoCursor`(bool`): "
"[%00-00 ArrayCtrl`&_][%00-00* NoCursor][%00-00 (bool_][%00-00*@3 b][%00-00 _`=_true)]&][s6; "
"Turns on / off highlighting cursor row.&][s1; [%00-00*C@3 b]-|[* true] `= do not "
"highlight cursor row, [* false] `= default behaviour (cursor row is shown in inverse "
"colors)&][s1;* [/ Return value][* -|]`*this&][s0;3 &][s4;")
TOPIC_TEXT(
":`:`:ArrayCtrl`:`:MouseMoveCursor`(bool`): [%00-00 ArrayCtrl`&_][%00-00* MouseMoveCursor][%00-00 "
"(bool_][%00-00*@3 b][%00-00 _`=_true)]&][s6; Enables / disables automatical cursor "
"row switching as the mouse cursor moves over the array rows.&][s1; [%00-00*C@3 b]-|[* "
"true] `= automatically switch cursor row, [* false] `= only upon clicks and keyboard "
"navigation&][s1;* [/ Return value][* -|]`*this&][")
TOPIC_TEXT(
"s0;3 &][s4;:`:`:ArrayCtrl`:`:NoMouseMoveCursor`(`): [%00-00 ArrayCtrl`&_][%00-00* "
"NoMouseMoveCursor][%00-00 ()]&][s6; Disable automatical cursor row switching (equivalent "
"to [* MouseMoveCursor(false)]).&][s1;* [/ Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:AutoHideSb`(bool`): "
"[%00-00 ArrayCtrl`&_][%00-00* AutoHideSb][%00-00 (bool_][%00-00*@3 b][%00-00 _`=_true)]&][s6; "
"When set to [* t")
TOPIC_TEXT(
"rue], the vertical scrollbar at the right array edge is displayed only when the "
"total row height exceeds the array view height. When set to [* false], the scrollbar "
"is shown all the time.&][s1; [%00-00*C@3 b]-|[* true] `= show / hide the scrollbar "
"as necessary, [* false] `= display it unconditionally&][s1;* [/ Return value][* -|]`*this&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:NoAutoHideSb`(`): [%00-00 Array")
TOPIC_TEXT(
"Ctrl`&_][%00-00* NoAutoHideSb][%00-00 ()]&][s6; Display vertical scrollbar all the "
"time (equivalent to [* AutoHideSb(false)]).&][s1;* [/ Return value][* -|]`*this&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:MultiSelect`(bool`): [%00-00 ArrayCtrl`&_][%00-00* MultiSelect][%00-00 "
"(bool_][%00-00*@3 b][%00-00 _`=_true)]&][s6; Enable / disable multiple row selection. "
"&][s1; [%00-00*C@3 b]-|[* true] `= allow selectin")
TOPIC_TEXT(
"g multiple rows at the same time, [* false] `= only one row at a time&][s1;* [/ "
"Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:ColumnWidths`(const char`*`): "
"[%00-00 ArrayCtrl`&_][%00-00* ColumnWidths][%00-00 (const_char_`*][%00-00*@3 s][%00-00 "
")]&][s6; Initializes column widths based on a text string containing blank`-separated "
"decimal numbers, e.g. `\"1 4 6 4 1`\".&][s1; [%00-00*C@3 s]-|c")
TOPIC_TEXT(
"ontrol string defining column widths&][s1;* [/ Return value][* -|]`*this&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:RowFormat`(const char`*`): [%00-00 String_][%00-00* RowFormat][%00-00 "
"(const_char_`*][%00-00*@3 s][%00-00 )]&][s6; Formats a text by substituting [* %s] "
"with the array`-specific term for `'row`' (as set by the [* RowName] property). This "
"is used for array local menu items.&][s1; [%00-00*C@3 s]-|")
TOPIC_TEXT(
"[* Format]`-like string to substitute.&][s1; [*/ Return value]-|&][s0;3 &][s4;:`:`:ArrayCtrl`:`:RowName`(const "
"char`*`): [%00-00 ArrayCtrl`&_][%00-00* RowName][%00-00 (const_char_`*][%00-00*@3 "
"s][%00-00 )]&][s6; 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")
TOPIC_TEXT(
" the list of employees, you can call [* RowName(`\"employee`\")] and the menu items "
"will then read [/ `'Insert new employee`', `'Delete employee`'] etc.&][s1; [%00-00*C@3 "
"s]-|the term to substitute for `'array row`' in menu items&][s1;* [/ Return value][* "
"-|]`*this&][s0;* &][s0;* &][s0;* Column structure programming&][s0;3 &][s4;:`:`:ArrayCtrl`:`:IndexInfo`(int`): "
"[%00-00 IdInfo`&_][%00-00* IndexInf")
TOPIC_TEXT(
"o][%00-00 (int_][%00-00*@3 ii][%00-00 )]&][s6; Returns a reference to the [* IdInfo] "
"structure describing a given array index (column in the source data matrix).&][s1; "
"[%00-00*C@3 ii]-|zero`-based ordinal number of the array index&][s1; [*/ Return value]-|IdInfo "
"reference for the given index&][s0;3 &][s4;:`:`:ArrayCtrl`:`:IndexInfo`(`:`:Id`): "
"[%00-00 IdInfo`&_][%00-00* IndexInfo][%00-00 (Id_][%00-")
TOPIC_TEXT(
"00*@3 id][%00-00 )]&][s6; Returns a reference to the [* IdInfo] structure describing "
"a given array index.&][s1; [%00-00*C@3 id]-|the [* Id] index identifier&][s1; [*/ "
"Return value]-|IdInfo reference for the given index&][s0;3 &][s4;:`:`:ArrayCtrl`:`:AddIndex`(`:`:Id`): "
"[%00-00 IdInfo`&_][%00-00* AddIndex][%00-00 (Id_][%00-00*@3 id][%00-00 )]&][s6; Adds "
"a new index to the array and assign it a give")
TOPIC_TEXT(
"n [* Id] identifier.&][s1; [%00-00*C@3 id]-|new index identifier&][s1; [*/ Return "
"value]-|A reference to the [* IdInfo ]structure describing the newly added index. "
"The reference can be used to set additional index properties.&][s0;3 &][s4;:`:`:ArrayCtrl`:`:AddIndex`(`): "
"[%00-00 IdInfo`&_][%00-00* AddIndex][%00-00 ()]&][s6; Adds a new index (without an "
"identifier) to the array.&][s1; [*/ Return val")
TOPIC_TEXT(
"ue]-|A reference to the [* IdInfo] structure describing the newly added index.&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:GetIndexCount`(`)const: [%00-00 int_][%00-00* GetIndexCount][%00-00 "
"()_const]&][s6; Returns number of indices in the array.&][s1; [*/ Return value]-|index "
"count&][s0;3 &][s4;:`:`:ArrayCtrl`:`:GetId`(int`)const: [%00-00 Id_][%00-00* GetId][%00-00 "
"(int_][%00-00*@3 ii][%00-00 )_const]&][s6; R")
TOPIC_TEXT(
"eturns the identifier of a given index (addresses by its zero`-based ordinal number).&][s1; "
"[%00-00*C@3 ii]-|zero`-based ordinal number of the queried index&][s1; [*/ Return "
"value]-|index identifier or [* Null] if the index has no identifier&][s0;3 &][s4;:`:`:ArrayCtrl`:`:GetPos`(`:`:Id`)const: "
"[%00-00 int_][%00-00* GetPos][%00-00 (Id_][%00-00*@3 id][%00-00 )_const]&][s6; Returns "
"the zero`-based p")
TOPIC_TEXT(
"ositional number of the array index with a given identifier.&][s1; [%00-00*C@3 id]-|array "
"index identifier&][s1; [*/ Return value]-|zero`-based index number, `-1 when not "
"found&][s0;3 &][s4;:`:`:ArrayCtrl`:`:SetId`(int`,`:`:Id`): [%00-00 IdInfo`&_][%00-00* "
"SetId][%00-00 (int_][%00-00*@3 ii][%00-00 , Id_][%00-00*@3 id][%00-00 )]&][s6; Sets "
"the identifier for a given array index. This can be used to")
TOPIC_TEXT(
" set or modify the identifier for a previously added index.&][s1; [%00-00*C@3 ii]-|zero`-based "
"ordinal number of the index to set the identifier for&][s1; [%00-00*C@3 id]-|new "
"index identifier ([* Null] when none)&][s1; [*/ Return value]-|A reference to the "
"[* IdInfo] descriptive structure for the [/ ii]`-th index. The reference can be used "
"to set additional properties of the altered index.&][s0;3")
TOPIC_TEXT(
" &][s4;:`:`:ArrayCtrl`:`:AddKey`(`:`:Id`): [%00-00 IdInfo`&_][%00-00* AddKey][%00-00 "
"(Id_][%00-00*@3 id][%00-00 )]&][s6; Adds a [/ primary key] index to the table. The "
"[/ primary key] 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. [* AddKey] "
"must be called only once after array initialization or [* Reset] an")
TOPIC_TEXT(
"d before calling any other functions adding indices (like [* AddIndex], [* AddColumn] "
"or [* AddCtrl]). When [* GetIndexCount() > 0 ]before the call to this function, this "
"method fails with an [* ASSERT].&][s1; [%00-00*C@3 id]-|primary key identifier&][s1; "
"[*/ Return value]-|A reference to the descriptive [* IdInfo] structure for the primary "
"key index.&][s0;3 &][s4;:`:`:ArrayCtrl`:`:AddKey`(`): [%0")
TOPIC_TEXT(
"0-00 IdInfo`&_][%00-00* AddKey][%00-00 ()]&][s6; Adds a primary key index without "
"an identifier to the table. This is equivalent to [* AddKey(Null)].&][s1; [*/ Return "
"value]-|A reference to the [* IdInfo] structure describing the primary key index.&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:GetKeyId`(`)const: [%00-00 Id_][%00-00* GetKeyId][%00-00 "
"()_const]&][s6; Returns primary key identifier for this table. ")
TOPIC_TEXT(
"This is equivalent to calling [* GetId(0)].&][s1; [*/ Return value]-|primary key "
"index identifier&][s0;3 &][s4;:`:`:ArrayCtrl`:`:AddColumn`(const char`*`,int`): [%00-00 "
"Column`&_][%00-00* AddColumn][%00-00 (const_char_`*][%00-00*@3 text][%00-00 _`=_NULL, "
"int_][%00-00*@3 w][%00-00 _`=_][%00-00@3 0][%00-00 )]&][s6; Add a new column`-index "
"pair to the table. The function adds a (source) index and an ")
TOPIC_TEXT(
"(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.&][s1; [%00-00*C@3 text]-|column "
"name (displayed in the array header)&][s1; [%00-00*C@3 w]-|logical relative column "
"width&][s1; [*/ Return value]-|A reference to the [* Column] structure describing "
"the newly added column. This can be used to set additional properties")
TOPIC_TEXT(
" for the newly added column and the corresponding header tab.&][s0;3 &][s4;:`:`:ArrayCtrl`:`:AddColumn`(`:`:Id`,const "
"char`*`,int`): [%00-00 Column`&_][%00-00* AddColumn][%00-00 (Id_][%00-00*@3 id][%00-00 "
", const_char_`*][%00-00*@3 text][%00-00 , int_][%00-00*@3 w][%00-00 _`=_][%00-00@3 "
"0][%00-00 )]&][s6; Adds a new column`-index pair to the table. This is equivalent "
"to the above two`-parameter ve")
TOPIC_TEXT(
"rsion but, in addition, the method sets the [* Id] identifier for the newly created "
"index.&][s1; [%00-00*C@3 id]-|new index identifier&][s1; [%00-00*C@3 text]-|column "
"name (displayed in the header)&][s1; [%00-00*C@3 w]-|logical relative column width&][s1; "
"[*/ Return value]-|A reference to the [* Column] structure describing the newly added "
"array column.&][s0;3 &][s4;:`:`:ArrayCtrl`:`:AddColumnAt`(")
TOPIC_TEXT(
"int`,const char`*`,int`): [%00-00 Column`&_][%00-00* AddColumnAt][%00-00 (int_][%00-00*@3 "
"ii][%00-00 , const_char_`*][%00-00*@3 text][%00-00 , int_][%00-00*@3 w][%00-00 _`=_][%00-00@3 "
"0][%00-00 )]&][s6; Adds a new column to the table and binds it to a given source "
"data index.&][s1; [%00-00*C@3 ii]-|zero`-based ordinal number of the index to use "
"as source for this column&][s1; [%00-00*C@3 text]-|co")
TOPIC_TEXT(
"lumn name (displayed in the header)&][s1; [%00-00*C@3 w]-|logical relative column "
"width&][s1; [*/ Return value]-|A reference to the [* Column] structure describing "
"the newly added array column.&][s0;3 &][s4;:`:`:ArrayCtrl`:`:AddColumnAt`(`:`:Id`,const "
"char`*`,int`): [%00-00 Column`&_][%00-00* AddColumnAt][%00-00 (Id_][%00-00*@3 id][%00-00 "
", const_char_`*][%00-00*@3 text][%00-00 , int_][%00-00*@3 w")
TOPIC_TEXT(
"][%00-00 _`=_][%00-00@3 0][%00-00 )]&][s6; Adds a new column to the table and binds "
"it to a given source data index.&][s1; [%00-00*C@3 id]-|identifier of the index to "
"use as source for the newly added column&][s1; [%00-00*C@3 text]-|column name (displayed "
"in the header)&][s1; [%00-00*C@3 w]-|logical relative column width&][s1; [*/ Return "
"value]-|A reference to the [* Column] structure describing t")
TOPIC_TEXT(
"he newly added array column.&][s0;3 &][s4;:`:`:ArrayCtrl`:`:AddRowNumColumn`(const "
"char`*`,int`): [%00-00 Column`&_][%00-00* AddRowNumColumn][%00-00 (const_char_`*][%00-00*@3 "
"text][%00-00 , int_][%00-00*@3 w][%00-00 _`=_][%00-00@3 0][%00-00 )]&][s6; 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 ")
TOPIC_TEXT(
"[* Value] object, the current zero`-based row number is passed to the column`'s "
"[* Convert] / [* Display]. This allows the host application to decode somehow the "
"external data based on the row number. In the current U`+`+ version, the [/ RowNum "
"columns] cannot be edited (using the standard array inline editation mechanism).&][s1; "
"[%00-00*C@3 text]-|column name (displayed in the header)&][s1; [%00-")
TOPIC_TEXT(
"00*C@3 w]-|logical relative column width&][s1; [*/ Return value]-|A reference to "
"the [* Column] structure describing the newly added array column.&][s0;3 &][s4;:`:`:ArrayCtrl`:`:AddCtrl`(`:`:Ctrl`&`): "
"[%00-00 IdInfo`&_][%00-00* AddCtrl][%00-00 (Ctrl`&_][%00-00*@3 ctrl][%00-00 )]&][s6; "
"Adds a new index`-control pair to the table; the index keeps the source data and "
"the external control is used to e")
TOPIC_TEXT(
"dit it. The ArrayCtrl handles data transfer between the source data matrix and the "
"external control. The method returns a reference the [* IdInfo] descriptive structure "
"for the newly added index.&][s6; [* Note:] 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")
TOPIC_TEXT(
" 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 [* KillCursor]) 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 su")
TOPIC_TEXT(
"ch case, you have to use one of the notification callbacks (like  [* WhenEnterRow]) "
"to force your additional behaviour on the controls.&][s1; [%00-00*C@3 ctrl]-|control "
"to attach to the given index&][s1; [*/ Return value]-|a reference to the IdInfo structure "
"describing the newly added index&][s0;3 &][s4;:`:`:ArrayCtrl`:`:AddCtrl`(`:`:Id`,`:`:Ctrl`&`): "
"[%00-00 IdInfo`&_][%00-00* AddCtrl][%00-00 (Id")
TOPIC_TEXT(
"_][%00-00*@3 id][%00-00 , Ctrl`&_][%00-00*@3 ctrl][%00-00 )]&][s6; 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 [* Id] identifier at the same time.&][s1; "
"[%00-00*C@3 id]-|the identifier to assign to the newly created index&][s1; [%00-00*C@3 "
"ctrl]-|freestanding control used to edit the given in")
TOPIC_TEXT(
"dex&][s1; [*/ Return value]-|a reference to the IdInfo structure describing the "
"newly added index&][s0;3 &][s4;:`:`:ArrayCtrl`:`:AddCtrlAt`(int`,`:`:Ctrl`&`): [%00-00 "
"void_][%00-00* AddCtrlAt][%00-00 (int_][%00-00*@3 ii][%00-00 , Ctrl`&_][%00-00*@3 "
"ctrl][%00-00 )]&][s6; 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 bindin")
TOPIC_TEXT(
"g between the control and an arbitrary source index.&][s1; [%00-00*C@3 ii]-|zero`-based "
"ordinal number of the index to bind to this control&][s1; [%00-00*C@3 ctrl]-|freestanding "
"control used to edit the [/ ii]`-th data index&][s0;3 &][s4;:`:`:ArrayCtrl`:`:AddCtrlAt`(`:`:Id`,`:`:Ctrl`&`): "
"[%00-00 void_][%00-00* AddCtrlAt][%00-00 (Id_][%00-00*@3 id][%00-00 , Ctrl`&_][%00-00*@3 "
"ctrl][%00-00 )]&][s6; ")
TOPIC_TEXT(
"Adds a new control to the table and binds it to the index with given identifier.&][s1; "
"[%00-00*C@3 id]-|identifier of the index to bind to this control&][s1;/ [%00-00*/C@3 "
"ctrl][/ -|freestanding control used to edit the index with identifier ]id&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:AddRowNumCtrl`(`:`:Ctrl`&`): [%00-00 void_][%00-00* AddRowNumCtrl][%00-00 "
"(Ctrl`&_][%00-00*@3 ctrl][%00-00 )]&][s6; Adds a ")
TOPIC_TEXT(
"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 [* SetData] "
"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 edita")
TOPIC_TEXT(
"tion (there is currently no clean way to store the edited data back to its external "
"storage).&][s1; [%00-00*C@3 ctrl]-|[/ RowNum]`-based freestanding editor control&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:GetColumnCount`(`)const: [%00-00 int_][%00-00* GetColumnCount][%00-00 "
"()_const]&][s6; Returns the current number of (output) columns in the array.&][s1; "
"[*/ Return value]-|number of columns&][s0;3 &][s4;:")
TOPIC_TEXT(
"`:`:ArrayCtrl`:`:FindColumnWithPos`(int`)const: [%00-00 int_][%00-00* FindColumnWithPos][%00-00 "
"(int_][%00-00*@3 pos][%00-00 )_const]&][s6; Returns the zero`-based index of a column "
"based on its source data index.&][s1; [%00-00*C@3 pos]-|ordinal number of the source "
"index&][s1; [*/ Return value]-|ordinal number of the column having the given index "
"as its source, `-1 when not found&][s0;3 &][s4;:`:")
TOPIC_TEXT(
"`:ArrayCtrl`:`:FindColumnWithId`(`:`:Id`)const: [%00-00 int_][%00-00* FindColumnWithId][%00-00 "
"(Id_][%00-00*@3 id][%00-00 )_const]&][s6; Returns the zero`-based index of a column "
"based on its source data index.&][s1; [%00-00*C@3 id]-|source index identifier&][s1; "
"[*/ Return value]-|ordinal number of the column having the given index as its source, "
"`-1 when not found&][s0;3 &][s4;:`:`:ArrayCtrl`:`:")
TOPIC_TEXT(
"ColumnAt`(int`): [%00-00 Column`&_][%00-00* ColumnAt][%00-00 (int_][%00-00*@3 i][%00-00 "
")]&][s6; Returns the [* Column] structure describing a given column.&][s1; [%00-00*C@3 "
"i]-|zero`-based column index&][s1; [*/ Return value]-|a reference to the [* Column] "
"structure describing the given column&][s0;3 &][s4;:`:`:ArrayCtrl`:`:ColumnAt`(int`)const: "
"[%00-00 const_Column`&_][%00-00* ColumnAt][%00-00 ")
TOPIC_TEXT(
"(int_][%00-00*@3 i][%00-00 )_const]&][s6; Returns the [* Column] structure describing "
"a given column. This is merely the const version of the above method; it can be used "
"to query properties for the column.&][s1; [%00-00*C@3 i]-|zero`-based column index&][s1; "
"[*/ Return value]-|a constant reference to the [* Column] structure describing the "
"given column&][s0;3 &][s4;:`:`:ArrayCtrl`:`:ColumnAt`(`:`")
TOPIC_TEXT(
":Id`): [%00-00 Column`&_][%00-00* ColumnAt][%00-00 (Id_][%00-00*@3 id][%00-00 )]&][s6; "
"Returns the [* Column] structure describing a column with given source index.&][s1; "
"[%00-00*C@3 id]-|identifier of the index used as source for the column&][s1; [*/ "
"Return value]-|a reference to the [* Column] structure describing the given column&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:ColumnAt`(`:`:Id`)const: [%00-00 c")
TOPIC_TEXT(
"onst_Column`&_][%00-00* ColumnAt][%00-00 (Id_][%00-00*@3 id][%00-00 )_const]&][s6; "
"Returns a constant reference to the [* Column] 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.&][s1; [%00-00*C@3 id]-|identifier of the index "
"used as source for the column&][s1; [*/ Return value]-|a constant r")
TOPIC_TEXT(
"eference to the [* Column] structure describing the given column&][s0;3 &][s4;:`:`:ArrayCtrl`:`:HeaderTab`(int`): "
"[%00-00 HeaderCtrl`::Column`&_][%00-00* HeaderTab][%00-00 (int_][%00-00*@3 i][%00-00 "
")]&][s6; Returns the [*^topic`:`/`/CtrlLib`/src`/HeaderCtrl`$en`-us`#`:`:HeaderCtrl`:`:Column`:`:Min`(int`)^ "
"HeaderCtrl`::Column] descriptive structure for the given column. The correspondence "
"between ")
TOPIC_TEXT(
"the array columns and the header tabs is 1:1, so that the indices of both are always "
"the same ([* array.GetColumnCount() `=`= array.HeaderObject().GetCount()] holds all "
"the time).&][s1; [%00-00*C@3 i]-|zero`-based column index&][s1; [*/ Return value]-|a "
"reference to the [* HeaderCtrl`::Column] structure. This can be used to set additional "
"properties of the header column (e.g. column width constrai")
TOPIC_TEXT(
"nts, font and icon for the column title etc.)&][s0;3 &][s4;:`:`:ArrayCtrl`:`:HeaderTab`(int`)const: "
"[%00-00 const_HeaderCtrl`::Column`&_][%00-00* HeaderTab][%00-00 (int_][%00-00*@3 "
"i][%00-00 )_const]&][s6; Returns a constant reference to the [* HeaderCtrl`::Column] "
"structure for the given column.&][s1; [%00-00*C@3 i]-|zero`-based column index&][s1; "
"[*/ Return value]-|a reference to the [* HeaderCt")
TOPIC_TEXT(
"rl`::Column] 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;3 "
"&][s4;:`:`:ArrayCtrl`:`:HeaderTab`(`:`:Id`): [%00-00 HeaderCtrl`::Column`&_][%00-00* "
"HeaderTab][%00-00 (Id_][%00-00*@3 id][%00-00 )]&][s6; Returns the [* HeaderCtrl`::Column] "
"descriptive structure for the column bound to a given ")
TOPIC_TEXT(
"source index.&][s1; [%00-00*C@3 id]-|identifier of the index used as source for "
"the column&][s1; [*/ Return value]-|a reference to the [* HeaderCtrl`::Column] structure&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:HeaderTab`(`:`:Id`)const: [%00-00 const_HeaderCtrl`::Column`&_][%00-00* "
"HeaderTab][%00-00 (Id_][%00-00*@3 id][%00-00 )_const]&][s6; Returns a constant reference "
"to the [* HeaderCtrl`::Column] descript")
TOPIC_TEXT(
"ive structure for the column bound to a given source index.&][s1; [%00-00*C@3 id]-|identifier "
"of the index used as source for the column&][s1; [*/ Return value]-|a constant reference "
"to the [* HeaderCtrl`::Column] structure&][s0;3 &][s4;:`:`:ArrayCtrl`:`:HeaderObject`(`): "
"[%00-00 HeaderCtrl`&_][%00-00* HeaderObject][%00-00 ()]&][s6; Returns a non`-constant "
"reference to the [* HeaderCtrl] object fo")
TOPIC_TEXT(
"r this table. The reference can be further used to alter properties of the table "
"header (tab visibility, header visual mode and so on).&][s1; [*/ Return value]-|A "
"non`-constant reference to the table HeaderCtrl object.&][s0;3 &][s4;:`:`:ArrayCtrl`:`:HeaderObject`(`)const: "
"const_HeaderCtrl`&_[* HeaderObject]()_const&][s6; This is just the constant version "
"of the above method; when called on a const")
TOPIC_TEXT(
"ant [* ArrayCtrl] reference, it returns a constant reference to its underlying HeaderCtrl "
"object which can be then used to query additional header information.&][s1; [*/ Return "
"value]-|A constant reference to the table HeaderCtrl object.&][s0;3 &][s4;:`:`:ArrayCtrl`:`:SerializeHeader`(`:`:Stream`&`): "
"[%00-00 void_][%00-00* SerializeHeader][%00-00 (Stream`&_][%00-00*@3 s][%00-00 )]&][s6; "
"Serializes")
TOPIC_TEXT(
" all information pertaining to the array header (mainly the user`-set column widths). "
"This is equivalent to calling [* HeaderObject().Serialize(s)]. 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. &][s1; [%00-00*C@3 s]-|the [*^topic`:`/`/Core`/src`/Stream`$en`-us^ "
"Stream] object to serialize the")
TOPIC_TEXT(
" header to/from&][s0;3 &][s4;:`:`:ArrayCtrl`:`:SetDisplay`(int`,int`,const`:`:Display`&`): "
"[%00-00 void_][%00-00* SetDisplay][%00-00 (int_][%00-00*@3 i][%00-00 , int_][%00-00*@3 "
"j][%00-00 , const_Display`&_][%00-00*@3 d][%00-00 )]&][s6; Sets the [* Display] object "
"for a given array cell.&][s6;* &][s6; [* Note:] the ownership to the Display object "
"is not transferred by this call. The ArrayCtrl stor")
TOPIC_TEXT(
"es 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")
TOPIC_TEXT(
" are actually derived classes with additional data members).&][s6; &][s6; 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 ")
TOPIC_TEXT(
"graphical exports from the array control).&][s6; &][s1; [%00-00*C@3 i]-|zero`-based "
"row index&][s1; [%00-00*C@3 j]-|zero`-based column index&][s1; [%00-00*C@3 d]-|display "
"to use&][s0;3 &][s4;:`:`:ArrayCtrl`:`:GetDisplay`(int`,int`): [%00-00 const_Display`&_][%00-00* "
"GetDisplay][%00-00 (int_][%00-00*@3 row][%00-00 , int_][%00-00*@3 col][%00-00 )]&][s6; "
"Returns a reference to the Display object for ")
TOPIC_TEXT(
"the given array cell.&][s1; [%00-00*C@3 row]-|zero`-based row index&][s1; [%00-00*C@3 "
"col]-|zero`-based column index&][s1; [*/ Return value]-|a reference to the Display "
"object.&][s0;3 &][s4;:`:`:ArrayCtrl`:`:GetDisplay`(int`): [%00-00 const_Display`&_][%00-00* "
"GetDisplay][%00-00 (int_][%00-00*@3 col][%00-00 )]&][s6; Returns a reference to the "
"Display object for the given array column.&][s1; [%00-0")
TOPIC_TEXT(
"0*C@3 col]-|zero`-based column index&][s1; [*/ Return value]-|constant reference "
"to the column Display&][s0;3 &][s4;:`:`:ArrayCtrl`:`:SetCtrl`(int`,int`,`:`:Ctrl`*`): "
"[%00-00 Ctrl`&_][%00-00* SetCtrl][%00-00 (int_][%00-00*@3 i][%00-00 , int_][%00-00*@3 "
"j][%00-00 , Ctrl_`*][%00-00*@3 newctrl][%00-00 )]&][s6; Sets an external control "
"to use as the editor for a single array cell. This function transf")
TOPIC_TEXT(
"ers the ownership to the control (from now on, it is stored within the array and "
"destroyed as necessary `- upon destruction of the array, deletion of the relevant "
"row or another call to [* SetCtrl]). Naturally, the same Ctrl object cannot be used "
"as the editor for multiple array cells. If you need to edit large number of array "
"cells, you have to implement a control creation factory.and use the [* ")
TOPIC_TEXT(
"Ctrls] method of the [* Column] subobject to program the array to construct the "
"controls on`-the`-fly.&][s1; [%00-00*C@3 i]-|zero`-based row index&][s1; [%00-00*C@3 "
"j]-|zero`-based column index&][s1; [%00-00*C@3 newctrl]-|the control to bind to the "
"given array cell&][s1;* [/ Return value][* -|]`*newctrl&][s0;* &][s0;3 &][s4;:`:`:ArrayCtrl`:`:GetTotalCy`(`)const: "
"[%00-00 int_][%00-00* GetTotalCy][%")
TOPIC_TEXT(
"00-00 ()_const]&][s6; Returns total height of the array (sum of the individual line "
"heights for all array rows)&][s1; [*/ Return value]-|array height in pixels&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:GetLineAt`(int`)const: [%00-00 int_][%00-00* GetLineAt][%00-00 "
"(int_][%00-00*@3 y][%00-00 )_const]&][s6; Locates the array row according to given "
"[/ y] coordinate (such array row [/ r] for which [* GetLineY(r)")
TOPIC_TEXT(
" <`= y `&`& GetLineY(r) `+ GetLineCy(r) > y]).&][s1; [%00-00*C@3 y]-|vertical pixel "
"coordinate to locate&][s1; [*/ Return value]-|zero`-based row number or `-1 when "
"not found&][s0;3 &][s4;:`:`:ArrayCtrl`:`:GetClickColumn`(`)const: [%00-00 int_][%00-00* "
"GetClickColumn][%00-00 ()_const]&][s6; Returns column index of the last clicked column "
"in the array. If the click happens past the last row of arra")
TOPIC_TEXT(
"y, returns Null.&][s1; [*/ Return value]-|zero`-based index of the relevant column&][s0;* "
"&][s4;:`:`:ArrayCtrl`:`:GetClickRow`(`)const: [%00-00 int_][%00-00* GetClickRow][%00-00 "
"()_const]&][s6; Returns column index of the last clicked row in the array. If the "
"click happens past the last row of array, returns Null.&][s1; [*/ Return value]-|zero`-based "
"index of the relevant column&][s0; &][s4;:`:`:A")
TOPIC_TEXT(
"rrayCtrl`:`:GetClickPos`(`)const: [%00-00 Point_][%00-00* GetClickPos][%00-00 ()_const]&][s1; "
"[*/ Return value]-|[* Point(GetClickColumn(), GetClickRow())].&][s0; &][s0;* &][s0;* "
"Data setting and retrieval&][s0;3 &][s4;:`:`:ArrayCtrl`:`:SetCount`(int`): [%00-00 "
"void_][%00-00* SetCount][%00-00 (int_][%00-00*@3 c][%00-00 )]&][s6; Sets the number "
"of rows in the array. This extends or trims the source")
TOPIC_TEXT(
" 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.&][s1; [%00-00*C@3 c]-|new "
"row count&][s0;3 &][s4;:`:`:ArrayCtrl`:`:SetVirtualCount`(int`): [%00-00 void_][%00-00* "
"SetVirtualCount][%00-00 (int_][%00-00*@3 c][%00-00 )]&][s6; Sets the number of rows "
"in an array with external data. This makes sense o")
TOPIC_TEXT(
"nly when all the [/ Column`'s] and [/ Ctrl`'s] of the array are [/ rownum]`-based. "
"The function doesn`'t physically allocate any source data matrix space, it just makes "
"the array `'think`' it has [/ c] rows (this is of course necessary for the Paint "
"routine, for cursor / selection management and so on).&][s6; [* Note:] in the current "
"implementation, selection flags for the individual rows are kept")
TOPIC_TEXT(
" 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.&][s1; [%00-00*C@3 "
"c]-|new `'virtual`' number of rows&][s0;3 &][s4;:`:`:ArrayCtrl`:`:GetCount`(`)const: "
"[%00-00 int_][%00-00* GetCount][%00-00 ()_const]&][s6; Return")
TOPIC_TEXT(
"s 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,&][s6; &][s6;C int ArrayCtrl`::GetCount() "
"const `{&][s6;C -|-|return max(virtualcount, array.GetCoun")
TOPIC_TEXT(
"t());&][s6;C `}&][s6; &][s1; [*/ Return value]-|Number of rows in the array.&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:Clear`(`): [%00-00 void_][%00-00* Clear][%00-00 ()]&][s6; "
"Clears the array source data matrix and sets the virtual row count to 0.&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Shrink`(`): "
"[%00-00 void_][%00-00* Shrink][%00-00 ()]&][s6; Shrinks the source data array, i.e. "
"reallocates the data to the minimu")
TOPIC_TEXT(
"m required memory space.&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Get`(int`,int`)const: [%00-00 "
"Value_][%00-00* Get][%00-00 (int_][%00-00*@3 i][%00-00 , int_][%00-00*@3 ii][%00-00 "
")_const]&][s6; Returns the value at a given location in the source data matrix.&][s1; "
"[%00-00*C@3 i]-|zero`-based row number&][s1; [%00-00*C@3 ii]-|zero`-based index ordinal "
"number&][s1; [*/ Return value]-|value at the given locat")
TOPIC_TEXT(
"ion in the source data matrix&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Get`(int`,`:`:Id`)const: "
"[%00-00 Value_][%00-00* Get][%00-00 (int_][%00-00*@3 i][%00-00 , Id_][%00-00*@3 id][%00-00 "
")_const]&][s6; Returns the value at a given location in the source data matrix. In "
"this version, the source indices are addressed by their identifiers.&][s1; [%00-00*C@3 "
"i]-|zero`-based row number&][s1; [%00-00*C@3 id]-|sou")
TOPIC_TEXT(
"rce index identifier&][s1; [*/ Return value]-|value at the given location in the "
"source data matrix&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Get`(int`)const: [%00-00 Value_][%00-00* "
"Get][%00-00 (int_][%00-00*@3 ii][%00-00 )_const]&][s6; Returns the value of a given "
"source index at the currently active cursor row. This is equivalent to [* Get(GetCursor(), "
"ii)]. When the row is currently being edited, the fun")
TOPIC_TEXT(
"ction returns the `'new`' value (the current value of the respective editor control, "
"i.e. potentially edited).&][s6; [* Note:] when the cursor row is not set (when [* "
"!IsCursor()]), the function fails with an [* ASSERT].&][s1; [%00-00*C@3 ii]-|zero`-based "
"index ordinal number&][s1; [*/ Return value]-|value at a given location in the cursor "
"row&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Get`(`:`:Id`)const: [%0")
TOPIC_TEXT(
"0-00 Value_][%00-00* Get][%00-00 (Id_][%00-00*@3 id][%00-00 )_const]&][s6; Returns "
"the value of a given source index at the currently active cursor row. This is equivalent "
"to [* Get(GetCursor(), id)].&][s1; [%00-00*C@3 id]-|source index identifier&][s1; "
"[*/ Return value]-|value at the given location in the cursor row&][s0;3 &][s4;:`:`:ArrayCtrl`:`:GetOriginal`(int`)const: "
"[%00-00 Value_][%00-00* G")
TOPIC_TEXT(
"etOriginal][%00-00 (int_][%00-00*@3 ii][%00-00 )_const]&][s6; 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 editation took "
"place.&][s1; [%00-00*C@3 ii]-|zero`-based index ordinal number&][s1; [*/ Return value]-|value "
"at the given location in the cursor row&][s0;3 &][s4;")
TOPIC_TEXT(
":`:`:ArrayCtrl`:`:GetOriginal`(`:`:Id`)const: [%00-00 Value_][%00-00* GetOriginal][%00-00 "
"(Id_][%00-00*@3 id][%00-00 )_const]&][s6; Returns the `'original`' value (i.e., without "
"any editing changed applied) of a given source index at the currently active cursor "
"row.&][s1; [%00-00*C@3 id]-|source index identifier&][s1; [*/ Return value]-|value "
"at the given location in the cursor row&][s0;3 &][s4;:`")
TOPIC_TEXT(
":`:ArrayCtrl`:`:GetKey`(`)const: [%00-00 Value_][%00-00* GetKey][%00-00 ()_const]&][s6; "
"Returns the value of the current row`'s primary key. This is equivalent to [* Get(0)].&][s1; "
"[*/ Return value]-|value at the index #0 in the cursor row&][s0;3 &][s4;:`:`:ArrayCtrl`:`:GetOriginalKey`(`)const: "
"[%00-00 Value_][%00-00* GetOriginalKey][%00-00 ()_const]&][s6; Returns the original "
"value of the current")
TOPIC_TEXT(
" row`'s primary key. During editation, 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 [* GetOriginal(0)].&][s1; [*/ Return value]-|value at the index #0 "
"in the cursor row&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Set`(int`,int`,const`:`:Value`&`): "
"[%00-00 void_][%00-00* Set][%00-00 (int_][%00-00*@3 i][%00-00 , int_][%")
TOPIC_TEXT(
"00-00*@3 ii][%00-00 , const_Value`&_][%00-00*@3 v][%00-00 )]&][s6; Sets the value "
"at a given location in the source data matrix.&][s1; [%00-00*C@3 i]-|zero`-based "
"row number&][s1; [%00-00*C@3 ii]-|zero`-based index ordinal number&][s1; [%00-00*C@3 "
"v]-|value to set to the given cell&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Set`(int`,`:`:Id`,const`:`:Value`&`): "
"[%00-00 void_][%00-00* Set][%00-00 (int_][%00-00")
TOPIC_TEXT(
"*@3 i][%00-00 , Id_][%00-00*@3 id][%00-00 , const_Value`&_][%00-00*@3 v][%00-00 "
")]&][s6; Sets the value at a given location in the source data matrix. &][s1; [%00-00*C@3 "
"i]-|zero`-based row number&][s1; [%00-00*C@3 id]-|source index identifier&][s1; [%00-00*C@3 "
"v]-|value to set to the given cell&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Set`(int`,const`:`:Value`&`): "
"[%00-00 void_][%00-00* Set][%00-00 (int_][")
TOPIC_TEXT(
"%00-00*@3 ii][%00-00 , const_Value`&_][%00-00*@3 v][%00-00 )]&][s6; 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.&][s1; [%00-00*C@3 "
"ii]-|zero`-based index ordinal number&][s1; [%00-00*C@3 v]-|value to set&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Set`(`:`:Id`,const`:`:Value`&`): "
"[%00-00")
TOPIC_TEXT(
" void_][%00-00* Set][%00-00 (Id_][%00-00*@3 id][%00-00 , const_Value`&_][%00-00*@3 "
"v][%00-00 )]&][s6; Modifies the value at a given location in the cursor row. This "
"overloaded version uses the [* Id] identifier to address the relevant index.&][s1; "
"[%00-00*C@3 id]-|index identifier&][s1; [%00-00*C@3 v]-|value to set&][s0;3 &][s4;:`:`:ArrayCtrl`:`:GetColumn`(int`,int`)const: "
"[%00-00 Value_][%00-00* ")
TOPIC_TEXT(
"GetColumn][%00-00 (int_][%00-00*@3 row][%00-00 , int_][%00-00*@3 col][%00-00 )_const]&][s6; "
"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 [/ rownum] type (it is bound "
"to no source indices), the function just returns the [/ row] parameter. For columns "
"with a single source index, the function returns ")
TOPIC_TEXT(
"the value of the mapped source index. For columns with multiple source indices, "
"the function returns a [* ValueArray ]containing the values of its source indices.&][s1; "
"[%00-00*C@3 row]-|zero`-based row index&][s1; [%00-00*C@3 col]-|zero`-based column "
"index&][s1; [*/ Return value]-|value of the given column&][s0;3 &][s4;:`:`:ArrayCtrl`:`:GetConvertedColumn`(int`,int`): "
"[%00-00 Value_][%00-00* GetC")
TOPIC_TEXT(
"onvertedColumn][%00-00 (int_][%00-00*@3 row][%00-00 , int_][%00-00*@3 col][%00-00 "
")]&][s6; Returns the value of a given column after application of its [* Convert]. "
"For performance reasons, the values obtained by calls to the [* Convert`::Format] "
"methods are cached internally within the ArrayCtrl object. You can manipulate the "
"conversion cache using the methods [*^topic`:`/`/CtrlLib`/src`/ArrayCtr")
TOPIC_TEXT(
"l`$en`-us`#`:`:ArrayCtrl`:`:ClearCache`(`)^ ClearCache] and[*  ][*^topic`:`/`/CtrlLib`/src`/ArrayCtrl`$en`-us`#`:`:ArrayCtrl`:`:InvalidateCache`(int`)^ "
"InvalidateCache].&][s1; [%00-00*C@3 row]-|zero`-based row index&][s1; [%00-00*C@3 "
"col]-|zero`-based column index&][s1; [*/ Return value]-|the converted cell value&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:ReadRow`(int`)const: [%00-00 Vector<Value>_][%00-00* R")
TOPIC_TEXT(
"eadRow][%00-00 (int_][%00-00*@3 i][%00-00 )_const]&][s6; Returns a [* Vector] containing "
"the values of all source indices in the given row. Invariantly, the [* GetCount()] "
"of the returned array is equal to the [* GetIndexCount()] of the source ArrayCtrl.&][s1; "
"[%00-00*C@3 i]-|zero`-based row index&][s1; [*/ Return value]-|an array of all source "
"values in the given row&][s0;3 &][s4;:`:`:ArrayCtrl`:")
TOPIC_TEXT(
"`:Set`(int`,const`:`:Vector`<`:`:Value`>`&`): [%00-00 void_][%00-00* Set][%00-00 "
"(int_][%00-00*@3 i][%00-00 , const_Vector<Value>`&_][%00-00*@3 v][%00-00 )]&][s6; "
"Modified a given row by setting all source index values to values passed in the parameter "
"[/ v].&][s1; [%00-00*C@3 i]-|zero`-based row index&][s1; [%00-00*C@3 v]-|an array "
"of values to set to the source data matrix row&][s0;3 &][s4;:`:`:")
TOPIC_TEXT(
"ArrayCtrl`:`:Add`(`): [%00-00 void_][%00-00* Add][%00-00 ()]&][s6; Adds an empty "
"row to the source data matrix.&][s6; [* Note:] the [* InsertValue] property of the "
"[* IdInfo] structure defines a method to generate / retrieve default values for newly "
"inserted rows. However, these values are only used during the GUI`-based [* DoInsert] "
"method and do not apply to the [* Add] method. If you need to se")
TOPIC_TEXT(
"t the newly added source matrix row to some non`-null defaults, you have to modify "
"the relevant cells manually.&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Add`(const`:`:Vector`<`:`:Value`>`&`): "
"[%00-00 void_][%00-00* Add][%00-00 (const_Vector<Value>`&_][%00-00*@3 v][%00-00 )]&][s6; "
"Adds a new row at the end of the source data matrix. The [*^topic`:`/`/Core`/src`/Vector`$en`-us^ "
"Vector] parameter contains the ")
TOPIC_TEXT(
"values to be used to initialize the new row of the matrix.&][s1; [%00-00*C@3 v]-|new "
"matrix row&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Add`(const`:`:Value`&`[`,const`:`:Value`&`]`.`.`.`): "
"[%00-00 void_][%00-00* Add][%00-00 (const_Value`&_`[, const_Value`&_`]...)]&][s6; "
"Adds a new row at the bottom of the source data matrix. This is in fact a series "
"of functions (generated automatically using the [* Expand")
TOPIC_TEXT(
"] macro) which takes an arbitrary number of arguments. Its arguments are used to "
"initialize the source indices in the newly added row.&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Insert`(int`): "
"[%00-00 void_][%00-00* Insert][%00-00 (int_][%00-00*@3 i][%00-00 )]&][s6; Inserts "
"a new row into the source array. All indices are initialized to [* Null] values. "
"The [* InsertValue] property doesn`'t apply; if you need")
TOPIC_TEXT(
" to set the newly created row to some non`-trivial values, you have to do so manually.&][s1; "
"[%00-00*C@3 i]-|zero`-based position of the newly created row&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Insert`(int`,const`:`:Vector`<`:`:Value`>`&`): "
"[%00-00 void_][%00-00* Insert][%00-00 (int_][%00-00*@3 i][%00-00 , const_Vector<Value>`&_][%00-00*@3 "
"v][%00-00 )]&][s6; Inserts a new row into the array at a given pos")
TOPIC_TEXT(
"ition. The second parameter, [/ v], is used to initialize the source indices of "
"the newly created row.&][s1; [%00-00*C@3 i]-|zero`-based row index&][s1; [%00-00*C@3 "
"v]-|a vector of values used to initialize the source indices of the given row&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:Remove`(int`): [%00-00 void_][%00-00* Remove][%00-00 (int_][%00-00*@3 "
"i][%00-00 )]&][s6; Removes the given source data row.&][")
TOPIC_TEXT(
"s6; [* Note:] the [* AskRemove] property of the [* ArrayCtrl] 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 [* Remove] method always "
"removes the requested row unconditionally without popping up any confirmation dialog.&][s1; "
"[%00-00*C@3 i]-|zero`-based index of the row to remo")
TOPIC_TEXT(
"ve&][s0;* &][s0;3 &][s4;:`:`:ArrayCtrl`:`:SwapUp`(`): [%00-00 void_][%00-00* SwapUp][%00-00 "
"()]&][s6; Exchanges the cursor row with the preceding row, effectively moving it "
"up.&][s0;3 &][s4;:`:`:ArrayCtrl`:`:SwapDown`(`): [%00-00 void_][%00-00* SwapDown][%00-00 "
"()]&][s6; Exchanges the cursor row with following row, effectively moving it down.&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:Sort`(const`:`:ArrayCtrl")
TOPIC_TEXT(
"`:`:Order`&`): [%00-00 void_][%00-00* Sort][%00-00 (const_ArrayCtrl`::Order`&_][%00-00*@3 "
"order][%00-00 )]&][s6; Sorts the array rows according to a given ordering predicate. "
"The [* ArrayCtrl`::Order] object defines the ordering predicate; its [* operator "
"()] should return [* true] whenever its first parameter (a vector containing the "
"values of all source indices in a row) is less than its second ")
TOPIC_TEXT(
"parameter.&][s1; [%00-00*C@3 order]-|&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Sort`(int`,int`,const`:`:ArrayCtrl`:`:Order`&`): "
"[%00-00 void_][%00-00* Sort][%00-00 (int_][%00-00*@3 from][%00-00 , int_][%00-00*@3 "
"count][%00-00 , const_ArrayCtrl`::Order`&_][%00-00*@3 order][%00-00 )]&][s6; Sorts "
"a portion of the array using a given ordering predicate.&][s1; [%00-00*C@3 from]-|zero`-based "
"index of the first ro")
TOPIC_TEXT(
"w to sort&][s1; [%00-00*C@3 count]-|number of rows to be sorted&][s1; [%00-00*C@3 "
"order]-|the ordering predicate object. The object should be derived from [* ArrayCtrl`::Order] "
"and should override the [* operator ()] method. This method should return [* true "
"]whenever its first parameter (a vector containing all source index values for a "
"certain row) is less than its second parameter.&][s0;3 &][s4")
TOPIC_TEXT(
";:`:`:ArrayCtrl`:`:Sort`(int`(`*`)`(const`:`:Vector`<`:`:Value`>`&v1`,const`:`:Vector`<`:`:Value`>`&v2`)`): "
"[%00-00 void_][%00-00* Sort][%00-00 (int_(`*][%00-00*@3 compare][%00-00 )(const_Vector<Value>`&_v1, "
"const_Vector<Value>`&_v2))]&][s6; Sorts the array rows according to the order defined "
"by the specified ordering predicate [/ compare]. This is supposed to be a global "
"function returning [* tru")
TOPIC_TEXT(
"e] whenever its first parameter ([/ v1], an array consisting of all source indices "
"within a row) is less than the second parameter [/ v2] (according to the desired "
"ordering).&][s1; [%00-00*C@3 compare]-|the ordering predicate; _the function is supposed "
"to return [* true] whenever its first parameter ([/ v1]) is less than the second "
"parameter ([/ v2]) according to the desired ordering.&][s0;3 &][s4")
TOPIC_TEXT(
";:`:`:ArrayCtrl`:`:Sort`(int`,int`(`*`)`(const`:`:Value`&v1`,const`:`:Value`&v2`)`): "
"[%00-00 void_][%00-00* Sort][%00-00 (int_][%00-00*@3 ii][%00-00 , int_(`*][%00-00*@3 "
"compare][%00-00 )(const_Value`&_v1, const_Value`&_v2)_`=_StdValueCompare)]&][s6; "
"Sorts the array rows according to the given ordering predicate for the source index "
"with a given ordinal number. When not explicitly specified, the [")
TOPIC_TEXT(
"* StdValueCompare] function is used as the default comparison predicate.&][s1; [%00-00*C@3 "
"ii]-|zero`-based ordinal number of the source index used for sorting&][s1; [%00-00*C@3 "
"compare]-|the sorting predicate function: the function is supposed to return [* true] "
"whenever its first parameter ([/ v1]) is less than the second parameter ([/ v2]) "
"according to the desired ordering.&][s0;3 &][s4;:`:`:Ar")
TOPIC_TEXT(
"rayCtrl`:`:Sort`(`:`:Id`,int`(`*`)`(const`:`:Value`&v1`,const`:`:Value`&v2`)`): "
"[%00-00 void_][%00-00* Sort][%00-00 (Id_][%00-00*@3 id][%00-00 , int_(`*][%00-00*@3 "
"compare][%00-00 )(const_Value`&_v1, const_Value`&_v2)_`=_StdValueCompare)]&][s6; "
"Sorts the array rows according to the given ordering predicate for the source index "
"with a given identifier. When not explicitly specified, the [* StdValue")
TOPIC_TEXT(
"Compare] function is used as the default comparison predicate.&][s1; [%00-00*C@3 "
"id]-|identifier of the source index used for sorting&][s1; [%00-00*C@3 compare]-|the "
"sorting predicate function: the function is supposed to return [* true] whenever "
"its first parameter ([/ v1]) is less than the second parameter ([/ v2]) according "
"to the desired ordering .&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Sort`(`): [%00")
TOPIC_TEXT(
"-00 void_][%00-00* Sort][%00-00 ()]&][s6; Sorts the array according to the default "
"ordering predicate for the first source index. This is equivalent to calling [* Sort(0)].&][s0;* "
"&][s0;3 &][s4;:`:`:ArrayCtrl`:`:ClearCache`(`): void_[* ClearCache]()&][s6; Invalidates "
"the whole [/ convert cache]. The convert cache keeps the results of the [* Convert`::Format] "
"method applied to individual array data")
TOPIC_TEXT(
" cells for performance reasons. Whenever you call the [* ClearCache] method, all "
"cache entries are marked as obsolete and the [* Convert]`'s [* Format] method will "
"be called as soon as the converted value of a table cell is required (usually during "
"the next [* Paint]).&][s0;3 &][s4;:`:`:ArrayCtrl`:`:InvalidateCache`(int`): void_[* "
"InvalidateCache](int_[*@3 i])&][s6; Invalidates a given row in the ")
TOPIC_TEXT(
"[/ convert cache]. For performance reasons, the results of the [* Convert`::Format] "
"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 [* Paint] routine or when setting up the row editor "
"controls), the [* Convert] objects are used again to generat")
TOPIC_TEXT(
"e the actualized output values.&][s1; [*C@3 i]-|zero`-based row index&][s0;* &][s0;* "
"Cursor and selection management&][s0;3 &][s4;:`:`:ArrayCtrl`:`:GetSelectCount`(`)const: "
"[%00-00 int_][%00-00* GetSelectCount][%00-00 ()_const]&][s6; Returns the number of "
"selected row within the table.&][s1; [*/ Return value]-|number of selected records "
"(in the range [/ `[0 .. GetCount()`]])&][s0;3 &][s4;:`:`:Arra")
TOPIC_TEXT(
"yCtrl`:`:IsSelection`(`)const: [%00-00 bool_][%00-00* IsSelection][%00-00 ()_const]&][s6; "
"Checks whether any rows are selected. Equivalent to [* GetSelectCount() > 0].&][s1; "
"[*/ Return value]-|[* true] `= there is at least one selected row, [* false] `= there "
"is none.&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Select`(int`,bool`): [%00-00 void_][%00-00* "
"Select][%00-00 (int_][%00-00*@3 i][%00-00 , bool_][%00-0")
TOPIC_TEXT(
"0*@3 sel][%00-00 _`=_true)]&][s6; Selects / unselects a given row.&][s1; [%00-00*C@3 "
"i]-|zero`-based row index&][s1; [%00-00*C@3 sel]-|[* true] `= add row to the current "
"selection, [* false] `= remove row from selection&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Select`(int`,int`,bool`): "
"[%00-00 void_][%00-00* Select][%00-00 (int_][%00-00*@3 i][%00-00 , int_][%00-00*@3 "
"count][%00-00 , bool_][%00-00*@3 sel][%0")
TOPIC_TEXT(
"0-00 _`=_true)]&][s6; Selects / unselects a given row range.&][s1; [%00-00*C@3 i]-|zero`-based "
"index of the first row to select / unselect&][s1; [%00-00*C@3 count]-|number of rows "
"to select / unselect&][s1; [%00-00*C@3 sel]-|[* true] `= select the rows, [* false] "
"`= unselect the rows&][s0;3 &][s4;:`:`:ArrayCtrl`:`:IsSelected`(int`)const: [%00-00 "
"bool_][%00-00* IsSelected][%00-00 (int_][%00-00*@3 i")
TOPIC_TEXT(
"][%00-00 )_const]&][s6; Checks whether a given row is selected. For tables without "
"the multiselection option, this is equal to the check [* GetCursor() `=`= i].&][s1; "
"[%00-00*C@3 i]-|zero`-based row index to check for selection&][s1; [*/ Return value]-|[* "
"true] `= row is selected, [* false] `= not selected&][s0;3 &][s4;:`:`:ArrayCtrl`:`:ClearSelection`(`): "
"[%00-00 void_][%00-00* ClearSelection][%0")
TOPIC_TEXT(
"0-00 ()]&][s6; Clears the current selection (unselects all selected rows).&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:IsCursor`(`)const: [%00-00 bool_][%00-00* IsCursor][%00-00 "
"()_const]&][s6; Checks whether the cursor is within the table. This is equivalent "
"to [* GetCursor()_>`=_0].&][s1; [*/ Return value]-|&][s0;3 &][s4;:`:`:ArrayCtrl`:`:SetCursor`(int`): "
"[%00-00 bool_][%00-00* SetCursor][%00-00 (int_][%00-")
TOPIC_TEXT(
"00*@3 i][%00-00 )]&][s6; 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 [* false] "
"and doesn`'t change the cursor location.&][s1; [%00-00*C@3 i]-|zero`-based row index&][s1; "
"[*/ Return value]-|[* true] `= cursor has been moved, [* false ]")
TOPIC_TEXT(
"when not (when committing the previously edited row failed)&][s0;3 &][s4;:`:`:ArrayCtrl`:`:KillCursor`(`): "
"[%00-00 bool_][%00-00* KillCursor][%00-00 ()]&][s6; 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 [* false] and doe")
TOPIC_TEXT(
"sn`'t change the cursor location.&][s1; [*/ Return value]-|[* true] `= cursor has "
"been moved away from the array, [* false] when not (when committing the previously "
"edited row failed)&][s0;3 &][s4;:`:`:ArrayCtrl`:`:CancelCursor`(`): [%00-00 void_][%00-00* "
"CancelCursor][%00-00 ()]&][s6; Cancels editation of the row being currently edited. "
"All changes made in the individual column editors are reject")
TOPIC_TEXT(
"ed.&][s0;3 &][s4;:`:`:ArrayCtrl`:`:GetCursor`(`)const: [%00-00 int_][%00-00* GetCursor][%00-00 "
"()_const]&][s6; Returns the current cursor row, `-1 when none.&][s1; [*/ Return value]-|zero`-based "
"cursor row index, `-1 `= cursor is not in the array&][s0;3 &][s4;:`:`:ArrayCtrl`:`:GoBegin`(`): "
"[%00-00 void_][%00-00* GoBegin][%00-00 ()]&][s6; Moves the cursor to the first row "
"in the array (equivalent t")
TOPIC_TEXT(
"o [* SetCursor(0)]).&][s0;3 &][s4;:`:`:ArrayCtrl`:`:GoEnd`(`): [%00-00 void_][%00-00* "
"GoEnd][%00-00 ()]&][s6; Moves the cursor to the last array row (equivalent to [* "
"SetCursor(GetCount() `- 1)]).&][s0;3 &][s4;:`:`:ArrayCtrl`:`:GetCursorSc`(`)const: "
"[%00-00 int_][%00-00* GetCursorSc][%00-00 ()_const]&][s6; Returns the visual vertical "
"position of the cursor row relative to the current view. This me")
TOPIC_TEXT(
"thod, in combination with [* ScCursor], can be used to reposition the cursor row "
"while maintaining the same visual position of the row within the array view.&][s1; "
"[*/ Return value]-|an integer describing the vertical position of the cursor row "
"relative to the array view&][s0;3 &][s4;:`:`:ArrayCtrl`:`:ScCursor`(int`): [%00-00 "
"void_][%00-00* ScCursor][%00-00 (int_][%00-00*@3 a][%00-00 )]&][s6; Modi")
TOPIC_TEXT(
"fies 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: "
"[* GetCursorSc], then reposition the cursor row, then [* ScCursor], you can achieve "
"cursor relocation while maintaining its visual location within the array view.&][s1; "
"[%00-00*C@3 a]-|an integer describing the vertical position ")
TOPIC_TEXT(
"of the cursor row (typically a number returned by a previous call to [* GetCursorSc])&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:CenterCursor`(`): [%00-00 void_][%00-00* CenterCursor][%00-00 "
"()]&][s6; Modifies the scrollbar position so that the current cursor row appears "
"in the middle of the array view.&][s0;3 &][s4;:`:`:ArrayCtrl`:`:ScrollInto`(int`): "
"[%00-00 void_][%00-00* ScrollInto][%00-00 (int_][%00-00*@")
TOPIC_TEXT(
"3 line][%00-00 )]&][s6; 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.&][s1; [%00-00*C@3 line]-|zero`-based row index of the "
"array row to make visible&][s0;3 &][s4;:`:`:ArrayCtrl`:`:ScrollIntoCursor`(`): [%00-00 "
"void_][%00-00* ScrollIntoCursor][%00-00 ()]&][s6; Moves the scrollba")
TOPIC_TEXT(
"r by the least possible amount in order to make the cursor row visible. This is "
"equivalent to [* ScrollInto(GetCursor())].&][s0;3 &][s4;:`:`:ArrayCtrl`:`:GetScroll`(`)const: "
"[%00-00 int_][%00-00* GetScroll][%00-00 ()_const]&][s6; Returns the current vertical "
"scrollbar position.&][s1; [*/ Return value]-|Pixel position of the vertical scrollbar. "
"Position 0 is at the very top (the top row of the arra")
TOPIC_TEXT(
"y is fully visible).&][s0;3 &][s4;:`:`:ArrayCtrl`:`:ScrollTo`(int`): [%00-00 void_][%00-00* "
"ScrollTo][%00-00 (int_][%00-00*@3 sc][%00-00 )]&][s6; Moves the vertical array scrollbar "
"to a given position.&][s1; [%00-00*C@3 sc]-|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 an")
TOPIC_TEXT(
"d moving it [/ sc] pixels upwards.&][s0;* &][s0;3 &][s4;:`:`:ArrayCtrl`:`:Find`(const`:`:Value`&`,int`,int`)const: "
"[%00-00 int_][%00-00* Find][%00-00 (const_Value`&_][%00-00*@3 v][%00-00 , int_][%00-00*@3 "
"ii][%00-00 _`=_][%00-00@3 0][%00-00 , int_][%00-00*@3 from][%00-00 _`=_][%00-00@3 "
"0][%00-00 )_const]&][s6; &][s1; [%00-00*C@3 v]-|value to look for in the given source "
"index&][s1; [%00-00*C@3 ii]")
TOPIC_TEXT(
"-|zero`-based ordinal number of the source index to search&][s1; [%00-00*C@3 from]-|zero`-based "
"row index to start the search from&][s1; [*/ Return value]-|zero`-based number of "
"the matched row, `-1 when none&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Find`(const`:`:Value`&`,`:`:Id`,int`)const: "
"[%00-00 int_][%00-00* Find][%00-00 (const_Value`&_][%00-00*@3 v][%00-00 , Id_][%00-00*@3 "
"id][%00-00 , int_][%00-00*@")
TOPIC_TEXT(
"3 from][%00-00 _`=_][%00-00@3 0][%00-00 )_const]&][s6; Locates the row (using linear "
"search beginning at the row [/ from]) in which the source index value identified "
"by [/ id] equals [/ val]. If such a row is found, the function returns its zero`-based "
"index. When not matched, the function returns `-1.&][s1; [%00-00*C@3 v]-|value to "
"look for in the given source index&][s1; [%00-00*C@3 id]-|source ")
TOPIC_TEXT(
"index identifier&][s1; [%00-00*C@3 from]-|zero`-based row index to start the search "
"from&][s1; [*/ Return value]-|zero`-based number of the matched row, `-1 when none&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:FindSetCursor`(const`:`:Value`&`,int`,int`): [%00-00 bool_][%00-00* "
"FindSetCursor][%00-00 (const_Value`&_][%00-00*@3 val][%00-00 , int_][%00-00*@3 ii][%00-00 "
"_`=_][%00-00@3 0][%00-00 , int_][%00-00*@3 f")
TOPIC_TEXT(
"rom][%00-00 _`=_][%00-00@3 0][%00-00 )]&][s6; Locates the row (using linear search "
"beginning at the row [/ from]) in which the source index value identified by its "
"ordinal number [/ ii] equals [/ val]. If such a row is found, the [* SetCursor] is "
"called automatically to move the cursor to such a row.&][s1; [%00-00*C@3 val]-|value "
"to look for in the given source index&][s1; [%00-00*C@3 ii]-|zero`-b")
TOPIC_TEXT(
"ased ordinal number of the source index to search&][s1; [%00-00*C@3 from]-|zero`-based "
"row index to start the search from&][s1; [*/ Return value]-|zero`-based number of "
"the matched row, `-1 when none&][s0;3 &][s4;:`:`:ArrayCtrl`:`:FindSetCursor`(const`:`:Value`&`,`:`:Id`,int`): "
"[%00-00 bool_][%00-00* FindSetCursor][%00-00 (const_Value`&_][%00-00*@3 val][%00-00 "
", Id_][%00-00*@3 id][%00-00 , int_][%")
TOPIC_TEXT(
"00-00*@3 from][%00-00 _`=_][%00-00@3 0][%00-00 )]&][s6; Locates the row (using linear "
"search beginning at the row [/ from]) in which the source index value identified "
"by [/ id] equals [/ val]. If such a row is found, the [* SetCursor] is called automatically "
"to move the cursor to such a row.&][s1; [%00-00*C@3 val]-|value to look for in the "
"given source index&][s1; [%00-00*C@3 id]-|source index ide")
TOPIC_TEXT(
"ntifier&][s1; [%00-00*C@3 from]-|zero`-based row index to start the search from&][s1; "
"[*/ Return value]-|[* true] `= the desired row was found (and the cursor set), [* "
"false] when not&][s0;* &][s0;* &][s0;* User interface elements&][s0;3 &][s4;:`:`:ArrayCtrl`:`:StdBar`(`:`:Bar`&`): "
"void_[* StdBar](Bar`&_[*@3 menu])&][s6; The default array local menu. The default "
"local menu consists of the standard")
TOPIC_TEXT(
" editation 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.). &][s1; [*C@3 "
"menu]-|the [* Bar] object representing the menu being generated&][s0;* &][s0;3 &][s4;:`:`:ArrayCtrl`:`:IsModified`(int`)const: "
"[%00-00 bool_][%00-00*")
TOPIC_TEXT(
" IsModified][%00-00 (int_][%00-00*@3 ii][%00-00 )_const]&][s6; Checks a source index "
"in the currently edited row for changes.&][s1; [%00-00*C@3 ii]-|zero`-based row index&][s1; "
"[*/ Return value]-|[* true] `= the index has been modified, [* false] `= the index "
"is in its original state&][s0;3 &][s4;:`:`:ArrayCtrl`:`:IsModified`(`:`:Id`)const: "
"[%00-00 bool_][%00-00* IsModified][%00-00 (Id_][%00-00*@3")
TOPIC_TEXT(
" id][%00-00 )_const]&][s6; Checks a source index in the currently edited array row "
"for changes.&][s1; [%00-00*C@3 id]-|source index identifier&][s1; [*/ Return value]-|[* "
"true] `= the source index has been modified, [* false ]when not&][s0;3 &][s4;:`:`:ArrayCtrl`:`:StartEdit`(int`): "
"[%00-00 bool_][%00-00* StartEdit][%00-00 (int_][%00-00*@3 d][%00-00 _`=_][%00-00@3 "
"0][%00-00 )]&][s6; Opens the curr")
TOPIC_TEXT(
"ent cursor row for editing and sets focus to the [/ d]`-th column.&][s1; [%00-00*C@3 "
"d]-|zero`-based column index&][s1; [*/ Return value]-|[* true] `= editation successfully "
"initiated, [* false] when not (when the array is in [* ReadOnly] mode or it has no "
"editable columns)&][s0;3 &][s4;:`:`:ArrayCtrl`:`:GetEditColumn`(`)const: [%00-00 "
"int_][%00-00* GetEditColumn][%00-00 ()_const]&][s6; Returns th")
TOPIC_TEXT(
"e column being currently edited.&][s1; [*/ Return value]-|zero`-based index of the "
"column being edited, `-1 `= none&][s0;3 &][s4;:`:`:ArrayCtrl`:`:DoEdit`(`): [%00-00 "
"void_][%00-00* DoEdit][%00-00 ()]&][s6; Opens the current cursor row for editing.&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:DoInsert`(int`): [%00-00 void_][%00-00* DoInsert][%00-00 "
"(int_][%00-00*@3 cursor][%00-00 )]&][s6; Begins the GUI inserti")
TOPIC_TEXT(
"on of a new row at a given location.&][s1; [%00-00*C@3 cursor]-|zero`-based location "
"of the new row&][s0;3 &][s4;:`:`:ArrayCtrl`:`:DoInsertBefore`(`): [%00-00 void_][%00-00* "
"DoInsertBefore][%00-00 ()]&][s6; Begins the GUI insertion of a new row above the "
"current row.&][s0;3 &][s4;:`:`:ArrayCtrl`:`:DoInsertAfter`(`): [%00-00 void_][%00-00* "
"DoInsertAfter][%00-00 ()]&][s6; Begins the GUI insertion of")
TOPIC_TEXT(
" a new row below the current row.&][s0;3 &][s4;:`:`:ArrayCtrl`:`:DoAppend`(`): [%00-00 "
"void_][%00-00* DoAppend][%00-00 ()]&][s6; Begins the GUI insertion of a new row at "
"the end of the array.&][s0;3 &][s4;:`:`:ArrayCtrl`:`:DoRemove`(`): [%00-00 bool_][%00-00* "
"DoRemove][%00-00 ()]&][s6; Performs the GUI`-based removal of the current cursor "
"row. When the [* AskRemove] property is set to [* true] and")
TOPIC_TEXT(
" the user cancels the confirmation dialog, the function returns [* false] and the "
"current row is not removed.&][s1; [*/ Return value]-|[* true] `= row has been removed "
"successfully, [* false] `=  user has canceled the row removal&][s0;3 &][s4;:`:`:ArrayCtrl`:`:DoDuplicate`(`): "
"[%00-00 void_][%00-00* DoDuplicate][%00-00 ()]&][s6; Duplicates the current row and "
"opens it for editing.&][s0;3 &][s4;:`:")
TOPIC_TEXT(
"`:ArrayCtrl`:`:DoSelectAll`(`): [%00-00 void_][%00-00* DoSelectAll][%00-00 ()]&][s6; "
"Marks all array row as selected.&][s0;3 &][s4;:`:`:ArrayCtrl`:`:AcceptEnter`(`): "
"bool_[* AcceptEnter]()&][s6; Performs all necessary GUI actions equivalent to when "
"the user presses the [* Enter] key. The row being currently edited is committed and, "
"in the case it was a newly appended line and the [* NoInsertAppend")
TOPIC_TEXT(
"] property is not set, an additional row is added to the array and opened for editation.&][s1; "
"[*/ Return value]-|[* true] `= the current row has been successfully committed, [* "
"false] when not&][s0;* &][s0;* Notification callbacks&][s0;3 &][s4;:`:`:ArrayCtrl`:`:WhenLeftClick:* "
"[* Callback_]WhenLeftClick&][s6; This callback is called whenever the user clicks "
"an array cell.&][s0;3 &][s4;:`:`:ArrayC")
TOPIC_TEXT(
"trl`:`:WhenLeftDouble:* [%00-00* Callback_][%00-00 WhenLeftDouble]&][s6; This callback "
"is called whenever the user doubleclicks an array cell.&][s0;3 &][s4;:`:`:ArrayCtrl`:`:WhenBar:* "
"[%00-00* Callback1<Bar`&>_][%00-00 WhenBar]&][s6; 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 m")
TOPIC_TEXT(
"enu for the array. The [* Bar`&] argument is a reference to the menu to be generated.&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:WhenEnterRow:* [%00-00* Callback_][%00-00 WhenEnterRow]&][s6; "
"This callback is called every time the cursor location changes to a different row "
"of the array.&][s0;3 &][s4;:`:`:ArrayCtrl`:`:WhenAcceptRow:* [%00-00* Gate_][%00-00 "
"WhenAcceptRow]&][s6; This gate is called every time an ")
TOPIC_TEXT(
"array row (open for editing) needs to be validated. When the gate returns [* false], "
"the validation process is assumed to have failed, when it returns [* true], 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;3 &][s4;:`:`:ArrayCtrl`:`:WhenUpdateRow:* "
"[%00-00* Callback_][%00-00 WhenUpdateRow")
TOPIC_TEXT(
"]&][s6; 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;3 &][s4;:`:`:ArrayCtrl`:`:WhenKillCursor:* [%00-00* Callback_][%00-00 "
"WhenKillCursor]&][s6; This callback is called whenever the cursor is moved away from "
"the table.&][s6; [* Note:] internally, when moving the curs")
TOPIC_TEXT(
"or (e.g. by calling the [* SetCursor ]method), after committing the previous row "
"the cursor is removed from the table using [* KillCursor] and placed to the new location "
"afterwards. Therefore every time the cursor is moved, the [* WhenKillCursor] callback "
"is called as a by`-product.&][s0;3 &][s4;:`:`:ArrayCtrl`:`:WhenCursor:* [%00-00* "
"Callback_][%00-00 WhenCursor]&][s6; This callback is called eve")
TOPIC_TEXT(
"ry 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;3 &][s4;:`:`:ArrayCtrl`:`:WhenArrayAction:* "
"[%00-00* Callback_][%00-00 WhenArrayAction]&][s6; 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;3 &][s4;:`:`:Arra")
TOPIC_TEXT(
"yCtrl`:`:WhenStartEdit:* [%00-00* Callback_][%00-00 WhenStartEdit]&][s6; This callback "
"is called whenever the array row editation 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;3 &][s4;:`:`:ArrayCtrl`:`:WhenAcceptEdit:* "
"[%00-00* Callback_][%00-00 WhenAcceptEdit]&")
TOPIC_TEXT(
"][s6; This callback is called whenever the currently edited line has been committed.&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:WhenSelection:* [%00-00* Callback_][%00-00 WhenSelection]&][s6; "
"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;3 &][s4;:`:`:ArrayCtrl`:`:WhenCtrls")
TOPIC_TEXT(
"Action:* [%00-00* Callback_][%00-00 WhenCtrlsAction]&][s6; This callback is called "
"whenever some of the editor controls constructed automatically via the column editation "
"[/ factory] calls its [* WhenAction] method. It can be used to watch out for changes "
"in the cell editors and react to specific situations accordingly.&][s6; &][s0;3 &][s10;:`:`:ArrayCtrl`:`:IdInfo`:`:struct:* "
"[%00-00* struct_][%0")
TOPIC_TEXT(
"0-00 ArrayCtrl`::IdInfo]&][s0; &][s0; The [* IdInfo] structure contains properties "
"of all source array indices. It can be used to set additional properties pertaining "
"to source array data.&][s0;3 &][s4;:`:`:ArrayCtrl`:`:IdInfo`:`:InsertValue`(const`:`:Value`&`): "
"[%00-00 IdInfo`&_][%00-00* InsertValue][%00-00 (const_Value`&_][%00-00*@3 v][%00-00 "
")]&][s6; The method sets up the default source index ")
TOPIC_TEXT(
"value for newly created rows. This is used only when the row insertion is GUI`-based "
"(like using the [* DoInsert] method for instance). When a row is added to the array "
"programmatically (e.g. using [* Add] or [* Insert]), these default values are not "
"used.&][s1; [%00-00*C@3 v]-|default source index value&][s1;* [/ Return value][* "
"-|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:IdInfo`:`:InsertValue`(`:`:")
TOPIC_TEXT(
"ValueGen`&`): [%00-00 IdInfo`&_][%00-00* InsertValue][%00-00 (ValueGen`&_][%00-00*@3 "
"g][%00-00 )]&][s6; 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 [* DoInsert] method for instance). When a row is added to the array programmatically "
"(e.g. using [* Add] or [* Insert]), the [* InserVal")
TOPIC_TEXT(
"ue] property is not consulted.&][s1; [%00-00*C@3 g]-|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.&][s1;* "
"[/ Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:IdInfo`:`:Accel`(int`(`*`)`(int`)`): "
"[%00-00 IdInfo`&_][%00-00* Accel][%00-00 (int_(`*][")
TOPIC_TEXT(
"%00-00*@3 filter][%00-00 )(int))]&][s6; This method sets up the source index accelerator "
"function. The accelerator is used to quickly locate rows using the keyboard key presses.&][s1; "
"[%00-00*C@3 filter]-|a [* CharFilter ]function for keypress filtering&][s1;* [/ Return "
"value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:IdInfo`:`:Accel`(`): [%00-00 IdInfo`&_][%00-00* "
"Accel][%00-00 ()]&][s6; This me")
TOPIC_TEXT(
"thod sets up keyboard acceleration for the given source index. The `'trivial`' [/ "
"CharConvert] is used for character translation.&][s1;* [/ Return value][* -|]`*this&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:IdInfo`:`:GetInsertValue`(`): [%00-00 Value_][%00-00* GetInsertValue][%00-00 "
"()]&][s6; Uses the [* InsertValue] property to generate a new source index value "
"(either using a fixed default value or the va")
TOPIC_TEXT(
"lue creation factory).&][s1; [*/ Return value]-|the generated value to be used as "
"the default for the newly inserted row.&][s6; &][s0;3 &][s10;:`:`:ArrayCtrl`:`:Column`:`:class:* "
"[%00-00* class_][%00-00 Column]&][s6; &][s9; [/ Derived from] [%00-00 FormatConvert]&][s0;3 "
"&][s0;* &][s0; [%00-00 The ][%00-00* ArrayCtrl`::Column][%00-00  structure describes "
"an output array column. Its methods can be u")
TOPIC_TEXT(
"sed to set or query its properties, some of which are also settable via ArrayCtrl "
"methods.]&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Column`:`:Add`(int`): [%00-00 Column`&_][%00-00* "
"Add][%00-00 (int_][%00-00*@3 `_pos][%00-00 )]&][s6; Adds another source data index "
"to the list of source indices used as the data for the given output column.&][s1; "
"[%00-00*C@3 `_pos]-|zero`-based ordinal number of the source in")
TOPIC_TEXT(
"dex&][s1;* [/ Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Column`:`:Add`(`:`:Id`): "
"[%00-00 Column`&_][%00-00* Add][%00-00 (Id_][%00-00*@3 id][%00-00 )]&][s6; Adds another "
"source data index to the list of source indices used as the data for the given output "
"column.&][s1; [%00-00*C@3 id]-|the [* Id] identifier of the source index&][s1;* [/ "
"Return value][* -|]`*this&][s0;3 &][s4;:`:`:Arr")
TOPIC_TEXT(
"ayCtrl`:`:Column`:`:AddIndex`(`:`:Id`): [%00-00 Column`&_][%00-00* AddIndex][%00-00 "
"(Id_][%00-00*@3 id][%00-00 )]&][s6; 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.&][s1; [%00-00*C@3 id]-|the identifier for the newly "
"created index&][s1;* [/ Return value][* -|]`*this&][s0;3 &][")
TOPIC_TEXT(
"s4;:`:`:ArrayCtrl`:`:Column`:`:AddIndex`(`): [%00-00 Column`&_][%00-00* AddIndex][%00-00 "
"()]&][s6; Adds another source index to the array and adds it to the list of source "
"indices bound to this output column.&][s1;* [/ Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Column`:`:SetConvert`(const`:`:Convert`&`): "
"[%00-00 Column`&_][%00-00* SetConvert][%00-00 (const_Convert`&_][%00-00*@3 c][%0")
TOPIC_TEXT(
"0-00 )]&][s6; Sets the [* Convert] 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.&][s6; "
"[* Note:] the ownership of the [* Convert] object is not transferred by this function. "
"The array merely stores a pointer to the Convert object. It is ")
TOPIC_TEXT(
"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 [* SetConvert] 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 pron")
TOPIC_TEXT(
"e to slicing.&][s1; [%00-00*C@3 c]-|a constant reference to the Convert object to "
"use for the given column&][s1;* [/ Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Column`:`:SetFormat`(const "
"char`*`): [%00-00 Column`&_][%00-00* SetFormat][%00-00 (const_char_`*][%00-00*@3 "
"fmt][%00-00 )]&][s6; Sets the format string to use for the default value formatting. "
"When no Convert object is set for")
TOPIC_TEXT(
" the column, the source value is normally passed to the [* NFormat] function where "
"the [/ fmt] argument defines the desired formatting pattern.&][s1; [%00-00*C@3 fmt]-|a "
"[* NFormat]`-compatible formatting pattern&][s1;* [/ Return value][* -|]`*this&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:Column`:`:SetDisplay`(const`:`:Display`&`): [%00-00 Column`&_][%00-00* "
"SetDisplay][%00-00 (const_Display`&_][%00-00*@3 d")
TOPIC_TEXT(
"][%00-00 )]&][s6; 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`&`)^ ArrayCtrl`::SetDisplay] method.&][s6; [* Note:] the ownership to the "
"Display object is not transferred by this function. The array merely stores a poin")
TOPIC_TEXT(
"ter to the Display; it is up to the host application to keep the Display object "
"alive as long as necessary.&][s1; [%00-00*C@3 d]-|a reference to the Display object&][s1;* "
"[/ Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Column`:`:Edit`(`:`:Ctrl`&`): "
"[%00-00 Column`&_][%00-00* Edit][%00-00 (Ctrl`&_][%00-00*@3 e][%00-00 )]&][s6; Sets "
"up the Ctrl`-based object to use for inline array colum")
TOPIC_TEXT(
"n editing.&][s1; [%00-00*C@3 e]-|a reference to the editor control object&][s1;* "
"[/ Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Column`:`:Ctrls`(`:`:Callback1`<`:`:One`<`:`:Ctrl`>`&`>`): "
"[%00-00 Column`&_][%00-00* Ctrls][%00-00 (Callback1<One<Ctrl>`&>_][%00-00*@3 factory][%00-00 "
")]&][s6; The methods sets up a factory which the ArrayCtrl uses as necessary to create "
"new Ctrl`'s for edit")
TOPIC_TEXT(
"ing a given column. The argument of this function is a callback, which, upon execution, "
"should allocate (normally using the [* new] operator) the desired editor object and "
"set it to its argument.&][s1; [%00-00*C@3 factory]-|callback used for new control "
"creation&][s1;* [/ Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Column`:`:Ctrls`(void`(`*`)`(`:`:One`<`:`:Ctrl`>`&`)`): "
"[%00-00 Column")
TOPIC_TEXT(
"`&_][%00-00* Ctrls][%00-00 (void_(`*][%00-00*@3 factory][%00-00 )(One<Ctrl>`&))]&][s6; "
"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 [* new] operator) and set it "
"to its argument.&][s1; [%00-00*C@3 factory]-|a global function used ")
TOPIC_TEXT(
"for editor control creation&][s1;* [/ Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Column`:`:Ctrls`(`): "
"[%00-00 Column`&_][%00-00* Ctrls][%00-00 ()]&][s6; 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 [* T] is created automatically "
"(using the [* new] opera")
TOPIC_TEXT(
"tor).&][s1; [*C@4 T]-|the desired object editor type &][s1;* [/ Return value][* "
"-|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Column`:`:InsertValue`(const`:`:Value`&`): "
"[%00-00 Column`&_][%00-00* InsertValue][%00-00 (const_Value`&_][%00-00*@3 v][%00-00 "
")]&][s6; Instructs the ArrayCtrl object to initialize this column in newly created "
"rows to the given value [/ v]. (This applies only to GUI`-based row i")
TOPIC_TEXT(
"nsertion using methods like [* DoInsert] etc., the low`-level, programmer`-controlled "
"row insertion methods like [* Add] or [* Insert] always initialize the source data "
"matrix with [* Null]`'s).&][s1; [%00-00*C@3 v]-|the value to use as the default for "
"newly inserted rows&][s1;* [/ Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Column`:`:InsertValue`(`:`:ValueGen`&`): "
"[%00-00 Column`&_][")
TOPIC_TEXT(
"%00-00* InsertValue][%00-00 (ValueGen`&_][%00-00*@3 g][%00-00 )]&][s6; Programs "
"the ArrayCtrl object to use the given [* ValueGen] 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.&][s1; [%00-00*C@3 "
"g]-|a reference to the ValueGen object used for default value gener")
TOPIC_TEXT(
"ation&][s1;* [/ Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Column`:`:NoClickEdit`(`): "
"[%00-00 Column`&_][%00-00* NoClickEdit][%00-00 ()]&][s6; Disables entering the editation "
"mode when clicking the respective column.&][s1;* [/ Return value][* -|]`*this&][s0;3 "
"&][s4;:`:`:ArrayCtrl`:`:Column`:`:Cache`(`): [%00-00 Column`&_][%00-00* Cache][%00-00 "
"()]&][s6; Enables using the cache to sto")
TOPIC_TEXT(
"re 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).&][s1;* "
"[/ Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCt")
TOPIC_TEXT(
"rl`:`:Column`:`:Accel`(int`(`*`)`(int`)`): [%00-00 Column`&_][%00-00* Accel][%00-00 "
"(int_(`*][%00-00*@3 filter][%00-00 )(int))]&][s6; Sets up the accelerator for the "
"given column. A given filtering function is used to convert keystrokes before acceleration.&][s1; "
"[%00-00*C@3 filter]-|a [* CharConvert]`-style function to use for keystroke conversion&][s1;* "
"[/ Return value][* -|]`*this&][s0;3 &][s4;")
TOPIC_TEXT(
":`:`:ArrayCtrl`:`:Column`:`:Accel`(`): [%00-00 Column`&_][%00-00* Accel][%00-00 "
"()]&][s6; Sets up the accelerator for the given column. No keystroke conversion is "
"performed.&][s1;* [/ Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Column`:`:Margin`(int`): "
"[%00-00 Column`&_][%00-00* Margin][%00-00 (int_][%00-00*@3 m][%00-00 )]&][s6; Sets "
"up the margin width for the given column. This is e")
TOPIC_TEXT(
"quivalent to calling the [*^topic`:`/`/CtrlLib`/src`/HeaderCtrl`$en`-us`#`:`:HeaderCtrl`:`:Column`:`:SetMargin`(int`)^ "
"SetMargin] method of the underlying [* HeaderTab].&][s1; [%00-00*C@3 m]-|&][s1;* "
"[/ Return value][* -|]`*this&][s0;3 &][s4;:`:`:ArrayCtrl`:`:Column`:`:HeaderTab`(`): "
"[%00-00 HeaderCtrl`::Column`&_][%00-00* HeaderTab][%00-00 ()]&][s6; Returns the [* "
"HeaderCtrl`::Column] object desc")
TOPIC_TEXT(
"ribing 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^ WhenAction] callback).&][s0; &][s0;3 &][s10;:`:`:ArrayCtrl`:`:Order`:`:struct:* "
"[%00-00* struct_][%00-00 Order]&][s0; &][s0; The [* Order] object is used for array "
"row sorting. ")
TOPIC_TEXT(
"The overloaded [* operator ()] 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;3 &][s4;:`:`:ArrayCtrl`:`:Order`:`:operator`(`)`(const`:`:Vector`<`:`:Value`>`&`,const`:`:Vector`<`:`:Value`>`&`)const:@3 "
"[%00-00@0 virtual bool_][%00-00*@0 operator()][%00-00@0 (const_Vector<Value>`&")
TOPIC_TEXT(
"_][%00-00* row1][%00-00@0 , const_Vector<Value>`&_][%00-00* row2][%00-00@0 )_const_`=_][%00-00 "
"0]&][s6; The sorting predicate. This method should return [* true] when its first "
"argument ([/ row1]) is less than the second argument ([/ row2]) according to the "
"desired ordering.&][s1; [%00-00*C@3 row1]-|an array of source data index values for "
"the first of the rows to compare&][s1; [%00-00*C@3 row2]-|")
TOPIC_TEXT(
"an array of source data index values for the other row to compare&][s1; [*/ Return "
"value]-|[* true] `= row1 < row2, [* false] `= row1 >`= row2&][s0;3 ]")
