mirror of
https://github.com/ultimatepp/ultimatepp.git
synced 2026-05-16 06:05:58 -06:00
2411 lines
No EOL
120 KiB
C++
2411 lines
No EOL
120 KiB
C++
topic "ArrayCtrl";[2 $$0,0#00000000000000000000000000000000:Default]
|
||
[i448;a25;kKO9;*@(64)2 $$1,0#37138531426314131252341829483380:class]
|
||
[l288;2 $$2,0#27521748481378242620020725143825:desc]
|
||
[a83;*R6 $$3,0#31310162474203024125188417583966:caption]
|
||
[l288;i1121;b17;O9;~~~.1408;2 $$4,0#10431211400427159095818037425705:param]
|
||
[i448;a25;kKO9;*@(64)2 $$5,0#37138531426314131252341829483370:item]
|
||
[*+117 $$6,6#14700283458701402223321329925657:header]
|
||
[{_}%EN-US
|
||
[s5;K%- [@0 ArrayCtrl]&]
|
||
[s0; &]
|
||
[s0;
|
||
@@image:2362&1443
|
||
妰魝蝸€€€€€€€€€<EFBFBD>滍荼铍煎牔徐<EFBFBD>葌灢勶爧鹜熀<EFBFBD>磧<EFBFBD>櫊蛢荠吺蘩涒裁鹳т跂樾憗惟<EFBFBD>碣<EFBFBD>
|
||
姝婞犑<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>龗<EFBFBD><EFBFBD>媭皷蠋€岄萁兂u罴€柂鹘鲗淘惑€庁ㄞ莩坝擄蝺唷<EFBFBD>讼捞交弨噮贻絻硶
|
||
撉驒喃錄へ囐啝掜朽濅泙榷艁鯋韤①獑至秮堜葲貒賳爳犿酀錄€葖秮鯋韤⒄賳至秮垚錄貒賳<EFBFBD>
|
||
褣磬潥錄織棗磫瘅<EFBFBD>坜<EFBFBD>舷襄<EFBFBD>熥矸埏娇繜围梳Ь揪钰姶詨恕劾痕軣韼倾鲍掟鼠剧窐<EFBFBD><EFBFBD>戞<EFBFBD>
|
||
龃绖<EFBFBD><EFBFBD>颤膑ㄛ莉杖栋庽鐩琪鼢猊釙<EFBFBD><EFBFBD><EFBFBD>秣綍該勁姀兾麕鍥貛葙喼狺鞊粑耢龌<EFBFBD>线潠鼠讪
|
||
撑狃如犖彠隅珑<EFBFBD>抱耕[肋锭劾很欗躜墿苞Э<EFBFBD><EFBFBD>獯憎鼢<EFBFBD>刺挓厣鳢綉磬瘬仨酀钐堕<EFBFBD>芹圹<EFBFBD>
|
||
嶘服鳢嗡衰笪曕摜莩幅挷嶞<EFBFBD>矋<EFBFBD>澷<EFBFBD>嶒煙熺<EFBFBD><EFBFBD>子<EFBFBD><EFBFBD>枝氓蝽<EFBFBD>鼊慰灍熡权笨洕巼惷麾吇駚惄
|
||
翕亞咞<EFBFBD>尓姁熯石仸撔犴纂煗<EFBFBD><EFBFBD>鸀眶嚺毀讞<EFBFBD>硕侕抚筵鋼颐吾R丛跔焹蹔<EFBFBD><EFBFBD>浿厵⑼袌奸
|
||
灚閯茵ぬ鯃婆觌藦陫艣骤魶厹剡<EFBFBD>厼濯笂<EFBFBD>侠<EFBFBD>椘洎妷彥桕丛炁靡摺镘<EFBFBD>梏赫偼敭忥瓬嚿ヌ
|
||
鄾界撘皿<EFBFBD>讔栦助晦貉牴猕冾萁兂輾髴ЖΔ<EFBFBD>澯淫骝赳初菁叔<EFBFBD>犅汏<EFBFBD>嶏迮散▍♀€屢<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
囤羹杈娝窟崮<EFBFBD>郇撔愳冸盎阚屛葧<EFBFBD>描丛<EFBFBD>赧<EFBFBD>蝾娨孟蓫蘼擃枋呄爡牬塘圭枡汴费锆镬韨<EFBFBD>
|
||
毝皫吵秃雼掃鍜ド麠验┐<EFBFBD>腺燏挥亥嬼疏寵嵓潱熆照煊锆镬韨<EFBFBD>毝皫吵秃艐矞缟楇閹嗡ロ嵨
|
||
琬赃瓬徢€悩率审忆艜喅桐丿<EFBFBD>柱撞童骄撤嫶③劾禾硕脟邜轰腑<EFBFBD><EFBFBD>咧諕剟哀唢蟀萤玛褓疱傘<EFBFBD>
|
||
轩婵躔疑腼<EFBFBD>痣娢暏鼢屘詨剢曬弓訉<EFBFBD><EFBFBD>烛灡据┄鼙狐湼菜艦搡捯啃墓扳聪<EFBFBD>澉詶<EFBFBD>屌缫畸嗘
|
||
莳剝娛閾<EFBFBD>裆铢幈妇<EFBFBD>咎涌鬁<EFBFBD>眲敀<EFBFBD><EFBFBD>槭慈女鸀赭捂薛饧擀懋岿旋蕘瞠<EFBFBD><EFBFBD>婎<EFBFBD>鲗商詼擞<EFBFBD><EFBFBD>
|
||
<EFBFBD>Δ俗旁洊櫧支荧辍覍符閮忛骆斵谱鶠娂骞拈諅滟喼亩蛠鯓戫茻<EFBFBD>淮鷪俭槤泯瀛羲<EFBFBD>责蔹骆<EFBFBD>
|
||
闱鹪掖聍婴蝮涅剸褥<EFBFBD><EFBFBD>濎冸劙[枣鲵E彯嶜忷踹蛴蹢顡坪<EFBFBD>鲗掖紲劏淑籍近怨<EFBFBD>褔夣潚磬瘣磬
|
||
錆钔斗洼绀真尤城圍<EFBFBD>粟崛<EFBFBD>轷岫⑩详犑澬椴鏖檫鶠膀洗娥⿶<EFBFBD>紵<EFBFBD>舾闼蟑呲哙椛甓皫锋洓
|
||
惝雇选煐暁街霞闺给囉<EFBFBD>蕪褦菗瘬灋3抒蠟<EFBFBD>兆楕迮徂峄麊妾庡螳渠汑к垣晋溧<EFBFBD>咜肆?<EFBFBD>
|
||
螯栢䥇虜娙枮辜<EFBFBD>荑槦<EFBFBD><EFBFBD>界粨椷秮柯攵侕俯圮惔<EFBFBD>崯岦界<EFBFBD><EFBFBD>耨戔蛱<EFBFBD><EFBFBD>告兴繑宅鲡点肼好嗹
|
||
窕莳<EFBFBD><EFBFBD>慝憝䦃褗窙<EFBFBD>滒涗洖貒洸蜔論箣姞戫嘀澏愴覝討攭┼充涼貒甄浻榉旀暺瘬亼堜涁圂<EFBFBD>
|
||
硾缄罪悅<EFBFBD>味侕匚刀褚啫擁<EFBFBD>澲濏饨零<EFBFBD>瘬飶殏短秮踟犄秮樜秮Ⅴ愴€①啎至秮堜洡貒賳爳<EFBFBD>
|
||
朽濅泙榷羴貘傕田<EFBFBD>櫂<EFBFBD>鐏桶薪荤唳朕潎缆躅嚍仚<EFBFBD>瀫茓栈麊骊彷鶂<EFBFBD>镱罊丨綄€耙Σ崁唉<EFBFBD>
|
||
攳€唉矋€グΣ崁唉┎崁唉矋蕗唉矋€耙Σ崁唉矓崁唉矋€グΣ崁唉┎崁唉矋蕗唉矋€耙Σ崁唉<EFBFBD>
|
||
攳€唉餐<EFBFBD>蟺<EFBFBD>飦伹未佒鸁舒€<EFBFBD>綘袡识惺锩檧<EFBFBD>絿労訂廒辇▋穑擏€犁诶<EFBFBD>綇鍊<EFBFBD>灑愯虥瑗<EFBFBD>
|
||
氩蝷鼥賳蜏缎婌冃亱烀螞枧斩佽哦¨獚储踿簪й愑嗂戫攢鷳砣閮抄榷€饺肚浯佒錄€愞錄蜈阔
|
||
懖嵗<EFBFBD>嵐<EFBFBD>爼賳牀焚啘缎婌唭袐烀螞澡哦佽哦<EFBFBD><EFBFBD>储踿濘③愑嗂褢韤鷳砣滈儹趟断€寨<EFBFBD>镲<EFBFBD>
|
||
谉煙忢摵櫒<EFBFBD>詽淂仔蚶捜朵哟佒瀾頀献鬃圅嬁蚁秮殥砣ら儹即蹌<EFBFBD>蓊〗茂<EFBFBD>官榷厘づ餮<EFBFBD>牫
|
||
嗧爼鶅颀<EFBFBD><EFBFBD>聒鲻柇栙邃灶懎孤秮瓙砩乳儹饥蹖末迍繗翳亱<EFBFBD>€笕味浯佒灄骓幥丬纟御古煱懿
|
||
剭皬烀螞<EFBFBD>羼佴矩侀酊<EFBFBD><EFBFBD><EFBFBD><EFBFBD>鶋媱柯<EFBFBD>竺嬜撞唢併<EFBFBD>哌咔玑华洕<EFBFBD>挚踹磁箩痼仨觥欹灶鏖啿鼭<EFBFBD>
|
||
鸽骚谅秋侪鯋聚袧蒸諊簬<EFBFBD>暲瘬砣閮叚羯夺粑摄<EFBFBD>几湼求暏伜壝唪舨嵕蹼锄琮浨泷<EFBFBD>词佯婋<EFBFBD>
|
||
戎垺脧委<EFBFBD>踝鬃ロ<EFBFBD><EFBFBD>ㄘ锯ㄙ旖犘櫠袌蜀漭<EFBFBD>謥柹笠<EFBFBD><EFBFBD><EFBFBD>岽酱撵轻佈斫炕繌<EFBFBD><EFBFBD>耨滨膘o莺<EFBFBD>
|
||
<EFBFBD>咂杈欂褘慃孀喉瓊藠瘹<EFBFBD>迮≠<EFBFBD>牫助復旆瀼瓡逡犥滀娙|燃殪裢席斪玟懪媰鷾虊<EFBFBD><EFBFBD>骁卅柇
|
||
烤<EFBFBD>跸<EFBFBD>嘁犏<EFBFBD><EFBFBD>睨委囑Л倲蟼<EFBFBD>曔┨缩檑蔬杼誉嵊楂鞄吀磼鄺鴷金铩曃氪佒姡胫磴耵莅屾
|
||
<EFBFBD>涷腰篌纬崻钮燍<EFBFBD>嶞氦<EFBFBD>银空毣弴呙敳嵕蹼批М鲷矫澐颅毳毼艨同斛獘轶嫜姺酹竵徴衾絿
|
||
膭河嗂⿴叕<EFBFBD>闩贝璃脞千<EFBFBD>蠇脴懼禍<EFBFBD>擅麒驎︹従格龘堊惠撘嵶晵畩灊<EFBFBD>纬儷棵煐儸璋麖堲
|
||
纽嵈覝袤脦撬<EFBFBD>聨<EFBFBD>沭担楄长祶镯┋苓<EFBFBD>鑻撟た竦踽汀戚浞<EFBFBD><EFBFBD>龛绉院<EFBFBD>恨禚諃嚜<EFBFBD>剔儌濋
|
||
騼瓟侵笺俦惼正䶮老艒盔跬鴵框域乏鶊﹨灨贴脒粲<EFBFBD>喎疴旦斟暙撽艈灖笜宣張籀嵈尣飿浗<EFBFBD>
|
||
琮鄶邀鲵荩镙湖<EFBFBD>铯墹墮泾溭咻軘鈨槒諟尳噭液訂跈诽赏灃<EFBFBD>鹗龚禁<EFBFBD>奉鲚<EFBFBD>屽究枯蟑<EFBFBD><EFBFBD><EFBFBD>
|
||
<EFBFBD>垌鼷冕愑擀<EFBFBD>╊<EFBFBD>迉エ<EFBFBD>蓼儌濋儹斁侵<EFBFBD>悱嚉螨鷽攣罨睫<EFBFBD>伜引耳姌羹墖<EFBFBD>逑暈顛ド﹩<EFBFBD><EFBFBD>
|
||
柞桎牥劜貚鬼爼呶贫鬈У鼛<EFBFBD>狃堬鬻疸莳埝汤笱禾<EFBFBD><EFBFBD>姓铒2澜オ<EFBFBD><EFBFBD>娟鼢濛梳亷錄豺诶<EFBFBD>滍
|
||
处具骠森姑机药壖瞼尵ょ溄<EFBFBD>鹨姌羹<EFBFBD><EFBFBD>驼<EFBFBD>菃オ繀ń輶<EFBFBD>彰充椐葆辖€科醵¨嵈蛩髻鏈嵧釓
|
||
捽熕湌捞<EFBFBD>岚<EFBFBD><EFBFBD><EFBFBD>高惧槹灨帩<EFBFBD><EFBFBD>咒ヅ屘<EFBFBD><EFBFBD>岋<EFBFBD><EFBFBD>谰鹗簟荬<EFBFBD><戾<EFBFBD>讬<EFBFBD><EFBFBD>撬<EFBFBD><EFBFBD>ォ垍諆ン阆<EFBFBD><EFBFBD>
|
||
櫤<EFBFBD>噢儌蓾閮瓟侵檄倾屻<EFBFBD>耧蓵舌因珬钊蕠酐澲裤廴份蓱邩撧虖┼珨欎磳庾筷ы牤玮愳綘袡
|
||
⒍惺皲蔸杭位滅龓厨柘閺烐€樉忙搛缓陟欕燅礓茭<EFBFBD><EFBFBD>媪绎▽说<EFBFBD><EFBFBD>隋隔炸繅栋€叛少<EFBFBD>牫頎
|
||
邥馊乎鴾酏那囐鍝薜镲锩麄龏韰鴳<EFBFBD>噴邼<EFBFBD><EFBFBD>夏晣懡莘艏陟<EFBFBD>看蹎娫ぇ<EFBFBD>珏埪蹉<EFBFBD>贂曀鹘弩<EFBFBD>
|
||
<EFBFBD>收┟<EFBFBD><EFBFBD>€漯厔曌槉偉愴溶閮<EFBFBD>硕裤檠遨蜉伿鯎砣閮<EFBFBD>榷水话钛矋鬼爼僖嫔鯂滞丢¨嵈③<EFBFBD>
|
||
吖罾荷朵哟佒錄プ笣胤賳湺恍婌充簝濍<EFBFBD>愑嗂馁<EFBFBD>佖<EFBFBD>泦湺袏靸冃嬱梦涜<EFBFBD>秮枧丁乍嵈③€<EFBFBD>
|
||
微蹛訂趹<EFBFBD>€鷳砣殒儹榷€饺幎浯佒錄<EFBFBD>掬涷诶斧<EFBFBD>臂鼤蝣傇啥浯伈譃€貑迌矀濋儹艟蛿侙邀罓
|
||
汲頎曓嚥纮窥張籀螎匆<EFBFBD>嗋<EFBFBD>飦佄磥柚鸁蕗<EFBFBD><EFBFBD>犘櫠板肾線脬糅夭麩€醣憾頇綇历槒荻剔囙<EFBFBD>
|
||
褜钲骘儼淳品<EFBFBD>鱽<EFBFBD>煟蹡冫顎瑥秧遂箭€智瓒迳鼍€脬糅夭麩€醣憾頇綇历槒荻剔囙<EFBFBD>岊坻飪<EFBFBD>
|
||
淳品<EFBFBD>鱽<EFBFBD>煟蹡冫顎瑥秧遂箭€智瓒遽鳋撓€嬙栈黛嫠跚曓铫黠叞<EFBFBD>黠赝栯穾竭娘迡监茱薇洯
|
||
<EFBFBD>濢繅藿灄栏藿惴售<EFBFBD>鳋摻喳瘈窠<EFBFBD>差盾黛<EFBFBD>穵武屝夓紦砉钬<EFBFBD>杖独氯堆繓霂竭勳膬瑒鞊砉
|
||
最佧腿独<EFBFBD>榷褨霂墙邉靸瑒<EFBFBD>擁诡佧<EFBFBD>榷缆榷<EFBFBD>褨霂竭剤靸瑒鞊懑诡佧腿鄂缆榷褨霃幗邉靸<EFBFBD>
|
||
駝鞊砉钬整腿独氯<EFBFBD>褨霂竭憚靸瑒鞊揄诡佧腿甓缆榷褨熾幗邉靸猬勳擁诡涁<EFBFBD>趟断<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||
侩腚≥囔壋<EFBFBD>琏烤簿钴儸涭紦砉钬<EFBFBD><EFBFBD>③洹瑛艏敬硿狩<EFBFBD>惩珑珞笞簖閳滞冻壎荀忑Κ灇韨唉<EFBFBD>
|
||
董撄<EFBFBD><EFBFBD><EFBFBD>陯皡餐村藕泔否缍軝<EFBFBD><EFBFBD><EFBFBD>眠у揶挹桴䦛<EFBFBD>覑<EFBFBD>鄪佴隍陷摈涾亩諌侣蓩<EFBFBD>砸撡問啥
|
||
硥盾黛<EFBFBD>簽楉偯釔饤<EFBFBD><EFBFBD>慧<EFBFBD>贫佸掜澧<EFBFBD>濢繅絿鏇噱濂町<EFBFBD><EFBFBD><EFBFBD>鐝弿橚鳆<EFBFBD><EFBFBD>娱酤誉灳烚<EFBFBD><EFBFBD>
|
||
爫<EFBFBD><EFBFBD>殠塞<EFBFBD>头海唣蹂阍奂炄<EFBFBD><EFBFBD>邼蛀旔樘捻蔓秩堆栯師竭模惩汉鯎菞赳<EFBFBD>揸眄<EFBFBD>惃瞵獎棁<EFBFBD>
|
||
牓<EFBFBD>垬徘訆若俞<EFBFBD>羚棓暺榆檶瘷鼎敢铤鲙蒽诡素<EFBFBD>虥雩<EFBFBD>熞祟窙滯技橚帺灗钧貂酴於呐擉译
|
||
燂镲K椬埯苓賽揸浈尩<EFBFBD>洓莞葚氣乳馆祸冲恒憋繁镓介嚣崧鶘婴<EFBFBD>覚洍棗魯懵熼踱汴濣怼颇
|
||
嗁○稔庣述崆椣胛讧÷炆呖昼嫲筒痛镥后膬苴覅哇附矞ぐ失穆€┅<EFBFBD><EFBFBD><EFBFBD>婉纡艮<EFBFBD>諍淫搴鶄嚎<EFBFBD>
|
||
摋謵蕵娺肋儼贼墙蕠欘盾黛觚<EFBFBD>鏇犸也匋掃毥囗嫁<EFBFBD>臉兪谝覛蔺炇犭鍩<EFBFBD>鸦靸尤堆邧霂竭倪
|
||
<EFBFBD>臣铹濋臋龤聒本鶝繌安耳戲訆亢鼕娻杨坊湈洠黟哇㈧駬鞊砉钬丙图痕屛嵊跃<EFBFBD>蜁摔凿<EFBFBD>肴
|
||
<EFBFBD>球<EFBFBD><EFBFBD>獭嵌仼錄阼缩寝镡餮佴䶮詫<EFBFBD><EFBFBD>蹨<EFBFBD>潑懯矧獢棐人栋呾摓砉钬<EFBFBD>季痕<EFBFBD>裁煍泳<EFBFBD>餐<EFBFBD>
|
||
<EFBFBD>喟椷<EFBFBD>脎罃餐村岛泔否桁蠐讫夈<EFBFBD>蝥涺栬蛛€磙哌鐢<EFBFBD><EFBFBD>嵊煙煩<EFBFBD>各茚儱郅勰郛谎鳋搹投<EFBFBD>
|
||
棥呐蟻拙揀淆颐菛纷煀<EFBFBD>枟闂蠗墼以┯濈娻涗禌杷跚揎解褓纣<EFBFBD>驽€橄啚鵀鼪宴諗壗昙嶙<EFBFBD><EFBFBD>
|
||
<EFBFBD>捓业硬簫苁秹盾<EFBFBD>忑<EFBFBD>戫呔揪驘凼晴儲<EFBFBD><EFBFBD><EFBFBD>瓠膝庅姵夎<EFBFBD>Η勷峡氪辈<EFBFBD><EFBFBD>ぇ∏踪悠钳潪<EFBFBD>
|
||
ㄨ儮佴隍咻摈浉驰ㄜ导<EFBFBD>瀽煃觌剪<EFBFBD>鳎佐謻<EFBFBD>霔厄撛敓ⅸ曙槸倷駩攪扬薇鍥<EFBFBD>濢繅に凓洼啸
|
||
簟€尵杨攴骀龓<EFBFBD><EFBFBD>滯<EFBFBD><EFBFBD>铡規<EFBFBD>蠹娠缞粡<EFBFBD><EFBFBD>婪寷詼墙墅穷盾黛扆Ξ嶈孵蛄厫槁酁件嫽蝰师
|
||
杪▕憼潑槈立<EFBFBD>暌故熁篥龆谮嗿釃瀚摂鲳镐ю锈∏<EFBFBD>壹啓涡佈駥埚顫毁蜉锉鳑复<EFBFBD><EFBFBD>獭<EFBFBD>吼愧<EFBFBD>
|
||
斈郛祸䲟詹嵃惒痛隋恒锓≯葊嫛勰郛一鳋摬嵃簮餐村恒夛贰踿嫛┷嫩<EFBFBD>鳋獡矋皭餐状搴泔繁
|
||
檪靸瑑鞊揄诡佧腿甓缆榷褨熾幗邉靸猬勳擁诡<EFBFBD><EFBFBD>榷缆<EFBFBD>堆栯幗_勳儸勳紦砉钬<EFBFBD>杖独氯堆
|
||
繓霂竭勳膬瑒鞊砉最佧腿独<EFBFBD>榷褨霂捉吣摾Ⅴ眍澔衮荼削涜蓰亴箅莼龀搴恒锓鸦鱾謽谆黛嫠
|
||
瞩寝铫黠魠爱黠赝邧霂竭娘褶嬥茱薇艣<EFBFBD>濢焵吊焙頇綇<EFBFBD>鷺荻剔垏帻岊坻ワ儼酒翻愠鱽責[
|
||
鳀冫€瑥焰硭忑€智髓跺鼍€肽泗鄄麩€吊焙頇綇<EFBFBD>鷺荻剔垏帻岊坻ワ儼酒翻愠鱽責[鳀冫€瑥<EFBFBD>
|
||
骓遂齹智髓跺鼍€肽泗鄄麩€貂焙頇竭的摾Ⅴ顫<EFBFBD>衮荼鳑箬蓰亴胼芑龀搴泔畏鸦鱾樧栈黛嫠跚
|
||
曓铫黠叞<EFBFBD>黠赝栯穾竭娘迡监茱薇洯棺濢繅⒊惞凈③嫩ギ祸䲟矋醢惒痛搴掋锓≯€嬕≯嫩<EFBFBD><EFBFBD>
|
||
轧摬嵃惒<EFBFBD>村恒锓ⅰ踿嫛勰售<EFBFBD>鳋摬陯皭餐村ズ泔贰踿<EFBFBD>≯嫩<EFBFBD><EFBFBD>䲟矋皭莶痛搴泔姆≯€嫛<EFBFBD>
|
||
斈郛祸䲟詹嵃惒痛隋恒锓≯葊嫛勰郛一鳋摬嵃簮餐村恒夛贰踿嫛┷嫩<EFBFBD>鳋顡蟛陀针<EFBFBD>膻<EFBFBD><EFBFBD><EFBFBD>
|
||
<EFBFBD>璺厥珑滅<EFBFBD>怂霜<EFBFBD><EFBFBD>罘<EFBFBD><EFBFBD><EFBFBD>繊澪K亢噵蕶鞏鞊韽诡佧图<EFBFBD>垆$<EFBFBD>緟闯记冗鶟<EFBFBD><EFBFBD>鴺<EFBFBD>识亣戫<EFBFBD>
|
||
颦诐<EFBFBD>墖捩涏<EFBFBD>鶛嶑婵呦<EFBFBD><EFBFBD>庁<EFBFBD>犾儚尧勰郛祸剥擏鏇痒<EFBFBD>靠矿漯蝻蛞<EFBFBD>脬龣<EFBFBD><EFBFBD>狃葌侅艉<EFBFBD><EFBFBD>
|
||
坻珞姵凡膰紙鞊砉穷佧图③斈♂軍圐馘厸灃沈怿栠<EFBFBD>劾麅榷褨霂熃吣悴宛舾溾庀舷伧鼷挽龌
|
||
毛力淑矧牓鍥鴲佴节蜉摈涾蜩豆珩囿嶓篝銦煙挶鼣摄艉拷靠<EFBFBD>嚳飘莼詳<EFBFBD>愶<EFBFBD><EFBFBD>窔帩徢轳<EFBFBD>
|
||
<EFBFBD><EFBFBD>补蔼<EFBFBD>率椹僬舂謷铋<EFBFBD>浮墜剴Л繂现棁句禌杷跚揎封奄<EFBFBD>簷娼鯌蠌浇蠼<EFBFBD>篓垇瘛愞溒暭
|
||
鸢楱蠆葦棶垂<EFBFBD><EFBFBD>蕙即箰搯粎逃旋诈苤埠喲<EFBFBD><EFBFBD>嫞埸<EFBFBD>尤勁┶觑椶睕<EFBFBD>濢房墷彻祴愫轰石惠
|
||
祁<EFBFBD>唇攧魯斶嶃蜩嫚湐y<EFBFBD>櫩赂棢紊<EFBFBD>滮鴿蹿掎帄婐盎灪鶍AΙ欘乃绂︻磻枹瑷禁迩疃荀杲
|
||
<EFBFBD>筌趨哇姼哜姶珊哚痱驋漆顸哪睗敮汁臉疙揀吠城疱崇<EFBFBD>蛲浇脚<EFBFBD>剤椫湩蹈<EFBFBD>澈捫珐磼笣鞔
|
||
└摥忘鍕艊挦<EFBFBD>褩牽烈羟絿艡疃荀琚<EFBFBD>稒螌<EFBFBD>敂狳<EFBFBD>蔷葒代跷精<EFBFBD>パ茎ㄛ噪讴螒狎蛼珐勿ッ
|
||
牖橛忌绂<EFBFBD>嫙彻会驻勵錄杷牾嚘<EFBFBD>涐珍热<EFBFBD>酀€嗣鶠悛胄藘<EFBFBD>踞敦欘罡螓<EFBFBD>耻砂悇€湓<EFBFBD>舂酯
|
||
蹼饐蹌厫觏<EFBFBD>诐氳<EFBFBD>韱撁樘克栌層暏<EFBFBD>蓧授喫蚍潭愚骇€簱滓如鎷赍哙儠燎秹盾麒猥奄<EFBFBD>厝<EFBFBD>
|
||
年願囎棬<EFBFBD><EFBFBD><EFBFBD>鳓湴<EFBFBD>€乘恶^讽潷搔杖桛蜒柠鼷庉旃钚柠捡铤蝓<EFBFBD>ゆ<EFBFBD>帧楷<EFBFBD>惋碳踪<EFBFBD>忴<EFBFBD><EFBFBD>
|
||
盔憶鑫愉谟謫咯琚暯<EFBFBD>疃荀蔫廪<EFBFBD><EFBFBD>梏喏<EFBFBD>是<EFBFBD>泟伿颍想酃ね櫿<EFBFBD>嚈荻墴箮轱芎<EFBFBD>棍婎<EFBFBD>镓<EFBFBD>
|
||
銝霂蛿澤<EFBFBD>菪榨訙<EFBFBD>䴙を聱釡押嬼膈柖閼<EFBFBD>箐菞る蜱鐩恹<EFBFBD>癀叴ю饘摤滌紦砉钚拿脸秃梢芄
|
||
嗂<EFBFBD>椒枍訜富鷸驸碉慑侠洏浱嗭到详仑玲运嬬支枢蠍恝虱诐汎芏裆熺讓鞎亸宵犔<EFBFBD><EFBFBD>谯疝熝
|
||
哆呈<EFBFBD>栳夷€埩<EFBFBD><EFBFBD>苻荒聫吆Ш娱曀戱紪髱颦幭螭搠媷罄捜幎褨霂图猗埸<EFBFBD>ベ鶞岫跟顸梺椒緱胳
|
||
传茍艾缈€撡膦<EFBFBD><EFBFBD>穼<EFBFBD>鴦徬喞<EFBFBD><EFBFBD>樣憚惇厽<EFBFBD>鲟跗讙獣氏搨陀<EFBFBD>鐮膨掸袟獦戬镒ヘ牏婊贻祸冲
|
||
梁脫喷帛殝獦灟赶<EFBFBD>契蹀鷣潶魱<EFBFBD><EFBFBD>组谞娪<EFBFBD>藳蛞劭瘥爷艃<EFBFBD>钛啥洊╄ń<EFBFBD>穷盾麒ⅴ杼骢習<EFBFBD>
|
||
汈翮洰铑夀忕鐡缮<EFBFBD>勁ミ謱<EFBFBD>覛綔芬养孙筋骼蔁畡曀奂懘棘裂蛀鼢庉旃钚<EFBFBD>褭屉倖担鐖崟<EFBFBD>
|
||
功飚劉<EFBFBD>鐭<EFBFBD>煦冂照<EFBFBD>馔涸鵁眄黻铰癖Ζ<EFBFBD>熐壀煬あ梳<EFBFBD>锿<EFBFBD>≡<EFBFBD>呱<EFBFBD><EFBFBD>豳遽擓镢猪雲萆堆<EFBFBD>
|
||
匐幫趟秼r<EFBFBD>彜餐Т搴脫矋醢惒痛搴悦摬嵃惒瓮村好摬陯皭餐村┖脫矋皭澆痛搴脫詹嵃惒痛
|
||
e好摣榷趵喝堆栯詭腿独氯味褨霂腿甓缆榷褨╇幫榷缆澣堆栯幫杖独氯堆訓霂腿独郝榷褨霂
|
||
<EFBFBD>榷缆榷а栯幫榷趵氯堆栯缼图伂绎邹睕<EFBFBD>潥箬蓰亴胼溁龀搴脫┙<EFBFBD>€窠<EFBFBD>穷盾麒⒁黠叞<EFBFBD><EFBFBD>
|
||
县蜄霂汪活絸契顫牖衮輥€酴戫€€祽硎€€祽韤€业戫€€祽旐€€祽韤<EFBFBD>祽韤€旦戫€€祽硎€€祽韤€
|
||
业戫€€祽旐€€祽韤<EFBFBD>祽韤€旦戫€€祽韸€€祽碲鶂傕欪張魸<EFBFBD>匆<EFBFBD>嗸嗲飦佄囱佒鸁蕗<EFBFBD>杞犘櫠<EFBFBD>
|
||
沂锩檧熃葒労訂陂<EFBFBD>▋穑鱻淅缵阔艖荃嗋啡朵4佒錄€奕錄蜈阔矆嵗<EFBFBD>嵐碚爼賳牀贈啘缎婌<EFBFBD>
|
||
冃嬱梦涜<EFBFBD>秮枧丁乍嵈③€粑③愑嗂懆韤鷳砣殒儹榷€饺幎浯佒錄<EFBFBD>掬涷诶<EFBFBD>矋蜡矋怨頎曎啝
|
||
顥賳湺袏岇冃嬱梦鞗桢戊簖忼竭镞揶挂汌惠狃<EFBFBD>澪蛷<EFBFBD>覆鶃逻<EFBFBD>妽鹦矋鬼麪曽餐圹<EFBFBD>訁舷蠠
|
||
洘燀忼藡鰷徢怆釙猞泦<EFBFBD>賳轀缎熟祗擔<EFBFBD>┴ね<EFBFBD>馔詹娇亢椲嵂芸輹€菗砣閮绛趟丁搐邚祺<EFBFBD>忌
|
||
阕鬃烕顭藴黑洞〉髹礅煢<EFBFBD>钥炼¨嵈滩<EFBFBD><EFBFBD>耖磳蓨拂熉洨棴煇姽偑<EFBFBD>趭鼐髻啘缎始<EFBFBD>篚<EFBFBD><EFBFBD>
|
||
窀缊弓廄<EFBFBD>饔勗圹帝够勅磾虐<EFBFBD>嵐頎箷囧洬它濑<EFBFBD>蠡惠挳炴欭三嘟槁<EFBFBD>蹞<EFBFBD>霜右鶌乜揪烚甍
|
||
熂唢Ъ洕殠囆骛<EFBFBD>偛鼞舱耨堁<EFBFBD>堸艁嬺笏棅夓亖烀螞桢娹渡变葛聪憿卤輴枏畏鐩<EFBFBD>铌更ラ┐
|
||
桌鼢鼹粸泅国钬鐘<EFBFBD>谩黏<EFBFBD>鄵逝<EFBFBD><EFBFBD>嬍婆陙愍鷵愞儌濋児瓟侵你彪炐鴼醑飨鸲<EFBFBD>伷媭雪郾<EFBFBD><EFBFBD>
|
||
瘽柺H<EFBFBD>咪崼餅围问皦路撟⿹蜃岉乖陈囱鄾妿绀鱻犁躐鲄佴煉<EFBFBD>樞橐骊菅侚籼孛芫狳奂<EFBFBD>糌
|
||
䶮<EFBFBD>槓姰湮隋洑<EFBFBD><EFBFBD>基旡<EFBFBD><EFBFBD><EFBFBD>穯遄挆<EFBFBD>詼潦<EFBFBD>秫劽喁酞<EFBFBD>廾珴荛儹涛剁袐玎垄埊<EFBFBD>毜郁贪
|
||
骧溏善忼垛<EFBFBD>墿猓唬右檩犰鲅<EFBFBD>敟啛鰵絼<EFBFBD>壥傧牭际汎戨錄蜈阔濛錄罂苯<EFBFBD>啵车S渎├岀豺
|
||
鲧鎸烕膨敥馘坠斲饳<EFBFBD>卺枧猜貅珕鍦瓖保亣卅髻啘缎蕽戀<EFBFBD>瀼煙疅琶姭Ь駟缭疂嚬驹洞<EFBFBD>家
|
||
垮煨<EFBFBD>斝<EFBFBD>葆櫭€墧━<EFBFBD>纠束<EFBFBD>愆伫瑠柊筒嵐韹爼仲<EFBFBD>萝螝計蟪豸嵧隙眠惄轰槩鏀<EFBFBD>椣照<EFBFBD><EFBFBD>
|
||
诌父旄騺脖傲棚邀蚶牫頎暿鸥鼜礉榆矜迹讓緲额院<EFBFBD>隔粝檼<EFBFBD>鞉涎邈馁<EFBFBD>坭ゾ乐斀<EFBFBD>飦佄磥
|
||
贾<EFBFBD>蛘凂衿獬蚺鑻挠<EFBFBD>硽薏蚧<EFBFBD>瑶臎収<EFBFBD>甾骡夆╁鸶坦皥汞霁熒嚐<EFBFBD>⒖杲爧袡缎蜀溧凸槯靖<EFBFBD>
|
||
鍨蓡优棡嶂稽边蛞恼睍彐鐩掖翑⑼鸹厳緲<EFBFBD>巫鼇忘瀬論蝽乳儹倘毝槲熓沲蜡葚淫燧玺<EFBFBD><EFBFBD>作
|
||
骋舵鐩售堥庮<EFBFBD><EFBFBD>烍<EFBFBD>葸坤幺愑嗂檻庬颟櫵螳灵渑襻慑沽<EFBFBD>杩氻帵戊ろ曎濃戀嬉<EFBFBD>麋<EFBFBD>灹妴<EFBFBD>
|
||
魛佦ほ愑靻跈戫<EFBFBD><EFBFBD>挲无<EFBFBD>煖褪熞<EFBFBD>恩邤熅堶羾缪扛<EFBFBD>糌銖<EFBFBD>脱崾<EFBFBD>崎躇斠鞏鞊椉<EFBFBD>ふ<EFBFBD>暯嵧<EFBFBD>
|
||
螘祷裘桌恢榷浯佒蹑鍥篥鋿硦褤旟敉<EFBFBD>怡洿懦ュ郑待栂滤斋垸麾低倜囎錈摤<EFBFBD>拱蹬擄邀罓稠
|
||
煚曗葰<EFBFBD>綖围<EFBFBD>托傚驽<EFBFBD>跞<EFBFBD>摕蓣酉訍従櫢拶<EFBFBD><EFBFBD>楊鲜像迣<EFBFBD>诗驷铒牘鷴蓼儌濋儹旜侵瓏骥<EFBFBD>
|
||
邝駹火麇拂を忔窛<EFBFBD>闅<EFBFBD>姒獕╄<EFBFBD>帑<EFBFBD>往呱様阢聼→裢貂煀诗锦乍渶晸砣滈儹軝頌启橑<EFBFBD>髸
|
||
谆█瓝砣<EFBFBD>儹榷繝圐<EFBFBD>墿牕й愑嗂戫挒眙亥<EFBFBD>嬁弶滗涷仝阔餐缅贿<EFBFBD><EFBFBD>傡犆螞枧儿棬<EFBFBD>跻啫
|
||
澣朵磥咒鳑噴鲪郊<附姌掜扇閮<EFBFBD><EFBFBD>剙鞀烀螞澡哦佽哦<EFBFBD><EFBFBD>储踿濘③愑嗂褢韤鷳砣涕儹榷€<EFBFBD>
|
||
澣朵磥咒聸€掬涷谀阔矋蜡波嵐頎曎嗇牀賳湺袡蕮€诵<EFBFBD>鶢稠爼迖€瞼窥張魸<EFBFBD>匆<EFBFBD>嗸嗲飦佄<EFBFBD>
|
||
褋助熓€<EFBFBD>杞犘櫠幸曙脵€熃葒労訂€€业戫€€祽旐€€祽韤<EFBFBD>祽韤€旦戫€€祽硎€€祽韤€业戫€€祽
|
||
旐€€祽韤<EFBFBD>祽韤€旦戫€€祽硎€€祽韤€业戫€€祽€碲鶄鄼<EFBFBD>張籀嵈药<EFBFBD>嗋秋亸佄磥助熗蕗<EFBFBD>綘<EFBFBD>
|
||
暀缎曙脵艀熃噭河膯陂<EFBFBD>凁В鱻犁诶娅艖鯁喾澣朵磥咒聸€掬涷谀阔矋蜡波嵐頎曎嗇牀賳湺<EFBFBD>
|
||
檴靸袐烀形涜哦佽<EFBFBD>丁<EFBFBD>储踣€簪蹛幽嗂戫€鷳岔乳儹榷鰛饺朵磥堉錄€掬洅蜈阔矋愧<EFBFBD>嵐頎<EFBFBD>
|
||
踬啝椯啘娑袏靸袐犾梦涜ド伓<EFBFBD><EFBFBD>雸<EFBFBD><EFBFBD>方<EFBFBD><EFBFBD>陀<EFBFBD>ㄗ圹坨呯幺淼贈躔巧朵磥鲋钕肚惚蓉渗<EFBFBD>忦
|
||
唻曩<EFBFBD><EFBFBD>雾腑<EFBFBD>咟廨矋鬼爼啕惩<EFBFBD><EFBFBD>珤鹗鬄鄺<EFBFBD>潭令冯5<EFBFBD><EFBFBD><EFBFBD>髻啘缎数戀ν葏懣箕袂Д赀
|
||
兟聒<EFBFBD><EFBFBD><EFBFBD>礆渹短暥¨嵈蜱<EFBFBD>骚のв铭<EFBFBD>嗡往<EFBFBD>壹<EFBFBD><EFBFBD><EFBFBD><EFBFBD>€諕砣轭儹軝硪劶詼胗<EFBFBD><EFBFBD>椙Д<EFBFBD>墿<EFBFBD>
|
||
杞靠<EFBFBD>诹€说掜乳儹圮欗覄詼荩<EFBFBD><EFBFBD><EFBFBD><EFBFBD>枝氓蝽<EFBFBD><EFBFBD>繙斑铵紱対巼蓊椶€媳泺囉<EFBFBD>刈鬃褉鼜<EFBFBD><EFBFBD>赵<EFBFBD>
|
||
頉野适υ笣負賳湺胄式佴煇鼩灙棪ヒ緜哌唛锎懪<EFBFBD><EFBFBD>番偿棁↑掃袈傞槏聜┲糅旌揠雅荭棳矑<EFBFBD>
|
||
粊酴鷬迌拏濋儹斍佒颓灞<EFBFBD>钶潠是<EFBFBD>吟葲走綕單朁慅<EFBFBD>撃踉<EFBFBD>覊逵茓妥獪局洘樅┼崟碚繖帻
|
||
煀帰鱻犁仝阔艖跤姥偬扰拽绁蛲崌钍交鶖<EFBFBD><EFBFBD>癔<EFBFBD><EFBFBD>骄<EFBFBD><EFBFBD>品驀悉家褱潦霃欀漪跏曈戛认囕诎<EFBFBD>
|
||
筵<EFBFBD><EFBFBD>忱<EFBFBD>龆錇鴮閲玟鑴择磶の衰髑<EFBFBD>咯紱⒃鹩<EFBFBD>椥劦淖◎橙★臈蠂忇<EFBFBD><EFBFBD>夅飪<EFBFBD>敿密氌八郦<EFBFBD><EFBFBD>
|
||
憷鷶金铩悤肘龆骚毇啑摛尠旌瓡兜际鼢昊雍堲攀鑼檷寂鏆<EFBFBD><EFBFBD>倘抖分濜d軟鴦儋<EFBFBD>浆樜灓嬽
|
||
厩Д叶姪怠╋枎倾鶊仭イ<EFBFBD>、婇讵<EFBFBD>葧豢褚旌庮逝阶嬛<EFBFBD><EFBFBD>袷輥晲觏鄳驽涐痫容矞柂蝻腙陕缚
|
||
<EFBFBD>矬绦┞隈兖<EFBFBD>歹泭劖嗧帗囇紓<EFBFBD><EFBFBD>懾媳<EFBFBD>杞犂<EFBFBD>云邐<EFBFBD>龝⿰麅西赍涺◎盆ヲ疋瑫箕鳗夏<EFBFBD>瀭
|
||
鹜<EFBFBD>懾雹椛杞犂试<EFBFBD><EFBFBD>邐寿壜<EFBFBD>楈洲蜔鷱螋镘巳瑨ˉ湈嚛椶剁艦<EFBFBD>金╂旍鷭缿姇濇飦佢症覆<EFBFBD><EFBFBD>
|
||
垸娇棶尒噩郴郅墻龕渾劢袅若狍簥杵&腈斕秮澄矋计岇摅楣緟鶑侨<EFBFBD>垸<EFBFBD>皰迭房肮<EFBFBD>奔暣ム
|
||
悤硦<EFBFBD>€玑賳炪贫┇响ら挃╋彮涷铄瓪朔<EFBFBD><EFBFBD>麊牘氜偞ム悤硦<EFBFBD>€缳賳炪朱撟⒙敓挛<EFBFBD>顽赕鐩<EFBFBD>
|
||
聊粟崛虚<EFBFBD>踽盯怅犙<EFBFBD>趱缔鞔椞秮尾嵨计<EFBFBD>ν駙贴<EFBFBD><EFBFBD>扌经祷厶艰闺鴽鳋翍壙玄摍厧涊朱個<EFBFBD>
|
||
娫阉魹愢<EFBFBD>姡腙憳阄佁<EFBFBD>铊繐侂郦葵镩<EFBFBD><EFBFBD>绅<EFBFBD>債褪暼荟洗傅嗖攳饢磬鳖潦斗腿琶歆冞擁<EFBFBD><EFBFBD>
|
||
<EFBFBD>挙磹䦂溬ギ跪醚郭戢戩舞ゑ恿錄喱圹楞軘睨猫瘦詟澤叶饒廴堕<EFBFBD>烬径皑<EFBFBD>嵓玛惩╅羰筲曔
|
||
晝傴<EFBFBD>嵓缏撼娃凳袧襽萑娥<EFBFBD>凵段趢<EFBFBD>[溃<EFBFBD>嬠嫩尺揶乏鼙庰虽臎鴦蹒泙姤擁鄳錄羳掬涾勝
|
||
妴牀賳灹刀佽哦伹褠韤鷳磬垜錄€掬浽鴦賳牀侉啚炼佽艃秮区傕櫒鷱埌捊張鍊<EFBFBD>瀽噼<EFBFBD>熓€<EFBFBD>
|
||
越犂属緮鎭<EFBFBD><EFBFBD>€曬椠▋穑鱽€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€€鴢€€鹎<EFBFBD>
|
||
<EFBFBD><EFBFBD><EFBFBD>綃€€阈岇儉瑝橃儉瑝靸獉<EFBFBD><EFBFBD>徲磥阪
|
||
&]
|
||
[s0; &]
|
||
[s1; [@0 class_ArrayCtrl]&]
|
||
[s0;* &]
|
||
[s0; [*
|
||
@@image:1843&731
|
||
€儳侕€€€儖<EFBFBD>€€€€<EFBFBD>滍澫庈膸惼鐣袨<EFBFBD>м€<EFBFBD>庈审€疳崁駡€鼓軔<EFBFBD>陇葠増什⊥<EFBFBD><EFBFBD><EFBFBD>浥玩瓙艌<EFBFBD>
|
||
厖娆跆作浕<EFBFBD>核<EFBFBD><EFBFBD>睙诗锃莩孆<EFBFBD><EFBFBD>劢出屚骷摺悎靹偙庿鬂皬憟磨埩眵倐爦殑奈<EFBFBD>韾椢<EFBFBD>糠挒聶<EFBFBD>
|
||
託擇敔涇刿上崽钔殚肪葛轫△渴<EFBFBD>葸澼君蝷铕<EFBFBD>ソ叧坏户蹝玮铒藦嚎瀲棑<EFBFBD>稔陲皱灺幅盔弦
|
||
纱筱鳓<EFBFBD>餍<EFBFBD>籀叨絷判滣油鲡帺<EFBFBD>硪棻鬏<EFBFBD>缱靲葩啄迢趑<EFBFBD>栿上苟氕濁坼欤<EFBFBD><EFBFBD>鑿沌楊可钳
|
||
<EFBFBD><EFBFBD>硢鑶摈婝痕<EFBFBD>责喰箣具蓟炃僮矽禉<EFBFBD>钭袇踝涖天炷韼蚀俭鳏切艦狷勬猸藭<EFBFBD>横羚<EFBFBD>凛枡
|
||
哂絼铖悗莞酒僧樅蟠擊盹潕洁&彚琥浄钌<EFBFBD>戒捡恁蝿侬楝鑷椧鍛沽荸<EFBFBD>餄跫睈浊愶鲦河盼男<EFBFBD>
|
||
愗缠旪坠偀韪消渤<EFBFBD><EFBFBD><EFBFBD>閽乌賵濒熭<EFBFBD><EFBFBD>嗤埚颜蓘<EFBFBD>柒<EFBFBD>重<EFBFBD>搛虠纷懃屄澙鞣斘鏄咏搫铕馁釤
|
||
呫套満<EFBFBD><EFBFBD>潍釣栎人殓椈幩瘛凼象涕嘉声羝锂虦啐茞忙﹄布滅溢鬲鲈瑵氼<EFBFBD>咖淈屋鷪纺凅寬
|
||
废閱邨斟諔馆髓灕崳珒<EFBFBD>椿<EFBFBD>懑回蕡崮暕轶河胂楫餄ぃ<EFBFBD>蠛<EFBFBD>驈繁托阝<EFBFBD><EFBFBD>罈锭唤Ⅺ咫豢ぃ<EFBFBD>
|
||
檴旣仭呯夫涕委紧鎏构<EFBFBD>浰炕框<EFBFBD>践↓搫倯嫗鐤蒉屦胥馏垊<EFBFBD>欝瑁琦箚鯆狮垔韦燥恂旱ǜ丛
|
||
账瑷勄櫒咀禁橹牁摁頍壆€潠绒<EFBFBD>楊葵俎叙<EFBFBD><EFBFBD>mミ囒忛艧揶粣掘<EFBFBD>嗁咁频葭稔魛撽钕梹唯<EFBFBD>
|
||
葭魮袎晶鲔儸伦幽唹风嫸翮徫嘉墫皆<EFBFBD>鴬斏韬焉暕霅徼嬀<EFBFBD><EFBFBD>蕢<EFBFBD>溈淼靠<EFBFBD><EFBFBD><EFBFBD>珒儍<EFBFBD>镘考振癖<EFBFBD>
|
||
欅<EFBFBD>浲娌<EFBFBD>瑱嗩<EFBFBD>饾<EFBFBD>厺庙腓鑸械橀陘菁逍<EFBFBD>袂撐取圻钻辗蕙佽鴢澢啞祸伱駸邕环朱訉敽䝼
|
||
寢络埢构紒魰枟惬<EFBFBD>教秊镆焼』<EFBFBD>銞熋輸<EFBFBD>矗蠀钷禁幃寴粝灲凈<EFBFBD>牄摃爽<EFBFBD>啞<EFBFBD>危芫喪柬兢
|
||
撔箺駙瞀囆压飸矊<EFBFBD>椷<EFBFBD>勛某琰З酏欅α铻飬疯谙羲掅ц<EFBFBD>綔抢棞棗伦<EFBFBD>礊悇钕瓈濗枟闄嗩<EFBFBD>
|
||
摥<EFBFBD>糕璨瀮好妹狋<EFBFBD><EFBFBD>韰桊剖沮啞<EFBFBD>骘鬁惵鞔振兄Ёь艤糅液壩狯逑謤幾いゅ樅<EFBFBD>龉鯌崫n橛
|
||
嫥€幮慑標韩奉饌赘捩埿暼獮舾藸獉荩壃搂暊摝壭晥鲙彥榴嗞呰视劇晸溕<EFBFBD>掫彏<EFBFBD>問痤┛圌<EFBFBD>
|
||
諟蓻冭受潱甚暈署<EFBFBD>翆鎬簰△栩諎燹羳魏靲輭瘥撮€簩弰尭螤嗴€螺夳撮€海屄臏鐦煰帿熤喢<EFBFBD>
|
||
仔暩菗稜⿹枽飧矛绿<EFBFBD>跊寷叉许稕商<EFBFBD>狭軎嵼墸蓻猩嫇傫溼枽铱莪崋嶁糖潉<EFBFBD><EFBFBD><EFBFBD>篱兒獒<EFBFBD>
|
||
龀搪年УA百滛髩妹猩嫇駵犪枽铱瓖崋望濂莴撘ャ燠氚嶂埀熿侇厯鰪<EFBFBD>困原棠駟贅溔潑谘灪
|
||
<EFBFBD>訍<EFBFBD>钂濏袌淫嚒曑杠檰乌讟堛尦皯ず數悝袇龠<EFBFBD><EFBFBD><EFBFBD>市獏巯盖摱訝摉︹该洮踏幣順寜魤<EFBFBD>粈
|
||
ズ<EFBFBD>ㄌ鸟鍐贅葷娳鼙疯肌灓怛矟雷▽衤臏鐦厜椩〃澇<EFBFBD>义驉鷶敽嗄嫃謴澊劙懬欐幄愼<EFBFBD>嚠醛
|
||
傯彟砝Л<EFBFBD>鸟嗁樔泯炊樁€<EFBFBD>慕毚仢磩皯菣茺沟槂枋埽肾冃岙冓卯喰暩菗啱爴娦蓢嶉牜駨λ<EFBFBD>
|
||
懧掴饻翆蹑€簰髟燍眉兾ね<EFBFBD>佪蕜氉抱翙剙輭袎黩垘承癄雷⒃<EFBFBD>叀枘傯ゲ姙澗藸獉蓦壃聴褬<EFBFBD>
|
||
茈佭趽悹<EFBFBD>戓瑜厜壖栤旭姄锏琛<EFBFBD>緣<EFBFBD>憠驺互偞纠邡<EFBFBD><EFBFBD><EFBFBD>枽蜈釔路<EFBFBD>寓繃<EFBFBD>濋<EFBFBD>鹱蚋訂<EFBFBD>
|
||
詵︱趫燎缉淘<EFBFBD><EFBFBD>€凈<EFBFBD>痄槹洪幄瘏樒魷履<EFBFBD>ㄦ獣濂蓰褔ム湓袍槃铯爧局炏晢<EFBFBD>枽蚴趫燎┨<EFBFBD>
|
||
洽嚜陱潵ⅸ葪<EFBFBD><EFBFBD>帝拞<EFBFBD>铏懿檰乌樔肴<EFBFBD>潷把嬕灙軎袇唔魅汔澛囂<EFBFBD>鲜芑暰徼<EFBFBD>壖栤庑駣摰<EFBFBD>
|
||
谩<EFBFBD>傒<EFBFBD><EFBFBD>培帗摉绂韹等椺瑜<EFBFBD>壖栤旭鼕摰琛<EFBFBD>€嗇悥庺<EFBFBD><EFBFBD><EFBFBD>覍篁悋怂槻姄<EFBFBD><EFBFBD>牄<EFBFBD>詿<EFBFBD>獨頉<EFBFBD>
|
||
便免肼莫姳皋嵔逐偡帉莽<EFBFBD>垆祼儙訕屺艔斟閵棓鞐尜矊粷窗懽陇启壜沫<EFBFBD>莫浶逑諈觳対窗懽
|
||
杺<EFBFBD>倘嗶亿矈濐波蔼雷<EFBFBD>猩聟枘傯ヂ碀忝饻侜<EFBFBD>簰徼艅痃捖蛋虏栁晗釣佺<EFBFBD>鎬簰麒屢<EFBFBD><EFBFBD>滅
|
||
簮児€<EFBFBD>秸氒諅粭牎搸浝租灁蜌€庍逍<EFBFBD>貈簰麒币€魴厜竷梧埯嗴€傒夳撮兒栝幄幊搪灸戋盗伴
|
||
陠荭<EFBFBD><EFBFBD>慄旆鎸<EFBFBD>冝果撮兒栝幄幊搪饽耗磮輽楫欞魂姾毲摱爴枽モ该<EFBFBD><EFBFBD>饴素涺瀛铢钛<EFBFBD>瑜
|
||
媴壐伟嫇绌€胁詵棯艚菞<EFBFBD>夗<EFBFBD>骇自悿嚞驰慊菗队爴枽飧盲<EFBFBD><EFBFBD>彭钄彎ォ葪巢櫶衻橛认菲湮棒<EFBFBD>
|
||
衤臏鐦厜г〃澇伄▲迖艩<EFBFBD>鴮囮<EFBFBD>鄿劔驈<EFBFBD>困原棠駟贅倘潑诒撹覓麌疯军蓥<EFBFBD>买玻劙懬欐幄
|
||
铬<EFBFBD>擒爧鄠⑤薏矍濖拨屄臏<EFBFBD>槄壴〃<EFBFBD>除%嚷烉夏鷲<EFBFBD><EFBFBD><EFBFBD>著钛饯嶈<EFBFBD>壐懳皨摡醚惢鹋省<EFBFBD>
|
||
篱兒獒<EFBFBD>龀搪年У懔皝籁钛饯嶈<EFBFBD>壐熚嘹肆溊⒆鉃蜌€庝鳈詾秬<EFBFBD>慕毚€澰羳魏靲輭狖促䲢鰭
|
||
儍銓獍鐚州<EFBFBD><EFBFBD>槧烁嫥䴗鏅穰<EFBFBD>幏咏蚱劦毃問旉⑥艅鐠<EFBFBD>嬘<EFBFBD><EFBFBD>箘デ櫒楁簰儭麦<EFBFBD><EFBFBD>益簰賲庍
|
||
樺姓橀输帟簩履迡秫譃劙訒櫲棒衣霓磱辫竻壼◆姓<EFBFBD>和凋蹖擓駮缢壘鞓邥杉蹤單跇比肓娸赴
|
||
<EFBFBD>嫗<EFBFBD>鲖婺<EFBFBD>蜑捸陙猩曆樔愲<EFBFBD>潷把鯆灙娦暼尠粢履迡诒韪厜隰埿窄<EFBFBD>喛驾<EFBFBD>浙涠芡<EFBFBD>松菈
|
||
雾嬡I浶嗌嫇<EFBFBD>臓戙敠暄谜摰嚠喫该檽湭冭癫土囧劝粢÷霓嫳韪媴壼粜粘諄畭掌糖贴斞<EFBFBD><EFBFBD>
|
||
列蓩擓<EFBFBD> 銛﹃衙娬韯<EFBFBD><EFBFBD>佺噭竟
|
||
]&]
|
||
[s0;* &]
|
||
[s0; [* ArrayCtrl] implements basic grid functionality. It is typically
|
||
used for display and editation of arrays of values or (heterogeneous)
|
||
records. The records correspond to rows in the array, the individual
|
||
fields within each record can be either bound to columns or to
|
||
any generic [* Ctrl]`'s, thus supporting basic master`-detail functionality
|
||
with practically no additional cost.&]
|
||
[s0; &]
|
||
[s0; The standard derived classes extend various aspects of the ArrayCtrl
|
||
functionality. [* SqlArray] adds the nuts and bolts needed for
|
||
editing SQL`-based tables, whereas [* PopupTable] couples the ArrayCtrl
|
||
functionality with the drop`-down mechanism very similar to the
|
||
one used in popup menus. This opens the door for implementing
|
||
drop`-down controls like [* DropList] (aka [/ combo box]) or [* DropChoice]
|
||
(usually used together with a control of the [* EditField ]or [* DataPusher]
|
||
family to support coupling native data editation with drop`-down
|
||
selection, widely used for history or commonly used predefined
|
||
values. The [* ArrayPair] is, as its name implies, a pair of [* ArrayCtrl]`'s
|
||
with arrow buttons between them allowing to visually select subsets
|
||
of a certain set by moving its elements between the two lists.&]
|
||
[s0; &]
|
||
[s0; [*+117 The array data organization: indices and columns]&]
|
||
[s0; &]
|
||
[s0; There is a great deal of genericity supported by the ArrayCtrl
|
||
with respect both to its source data and its visual presentation.
|
||
Conceptually, the source array data is a matrix of [* Value]`'s.
|
||
There is a series of methods for accessing this source data,
|
||
the basic ones being [* Set] and [* Get]. The rows are addressed
|
||
by integer indices (zero based), the columns can be addressed
|
||
either by integer indices as well, or alternatively any source
|
||
column can be assigned an [* Id] identifier and addressed by it.
|
||
This is especially helpful in SQL`-based tables, where the table
|
||
column names can be used for the [* Id]`'s. A pair of methods,
|
||
[* GetPos] and [* GetId], can be used to translate these two column
|
||
addressing modes. In the code terminology, the columns in the
|
||
source data matrix are called [/ indices] whereas the visual (output)
|
||
columns are called simply [/ columns].&]
|
||
[s0; &]
|
||
[s0; The visual ArrayCtrl structure can be entirely independent of
|
||
the source data 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 equal
|
||
to the source data indices. However, many other combinations
|
||
are possible, each of which can be handy in certain situations:&]
|
||
[s0; &]
|
||
[s0;i150;O0; Index without a column: the most common of the `"special`"
|
||
cases is used mainly for row id`'s or other internally important
|
||
data without visual representation. The same behaviour can be
|
||
obtained by making a column invisible.&]
|
||
[s0;i150;O0; Column without an index (a [/ rownum column]): this less
|
||
common case can be used to display external data (not stored
|
||
in the table). &]
|
||
[s0;i150;O0; Multiple columns sharing the same index: this can be
|
||
used to display various aspects of a complex data object or to
|
||
display the same source data in multiple ways (e.g., a temperature
|
||
reading in Celsius and Fahrenheit degrees).&]
|
||
[s0;i150;O0; Column with multiple indices: can be used to display
|
||
information gathered from multiple source data columns. This
|
||
is used for instance in IconDes in TheIDE to display image identifiers
|
||
together with their sizes in the list. This is the most complicated
|
||
case because you have to implement a specific [* Display] for such
|
||
a multi`-index column.&]
|
||
[s0; &]
|
||
[s0; [* Note:] in the current U`+`+ version, the implementation of index`-less
|
||
columns (arrays with external data not stored in the source matrix)
|
||
is rather awkward. It is planned to enhance this feature in the
|
||
future by adding support for access to external data via a data
|
||
accessor interface object. &]
|
||
[s0; &]
|
||
[s0; [*+117 ArrayCtrl GUI: selection, editation, and local menu]&]
|
||
[s0; &]
|
||
[s0; Array rows can be selected using the mouse or keyboard. ArrayCtrl`'s
|
||
support both single`-selection (plain cursor) and multiselection
|
||
model. Of course, row selection can be controlled via the programmatic
|
||
array interface as well. The selection and cursor always spans
|
||
entire rows, it is not possible (without 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 common GUI elements (mouse and keyboard
|
||
selection, local menu). It is possible to alter the standard
|
||
ArrayCtrl local menu using the [* WhenBar] callback.&]
|
||
[s0; &]
|
||
[s0; [* Note:] it is worth noting that the standard 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 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 well. In certain cases, it is cool to use the [* HeaderCtrl]
|
||
[* WhenAction] method to allow sorting the array by clicking on
|
||
the header columns; alternatively you can add a sort function
|
||
to the array local menu or possibly somewhere else (like a standalone
|
||
button in the dialog).&]
|
||
[s0; &]
|
||
[s0; [* Insertion tricks: before, after, and the secrets of the AppendLine]&]
|
||
[s0; &]
|
||
[s0; In todays text editors, when you type a new letter, it is trivial
|
||
to see where in the text will the new letter go. This is so because
|
||
the caret is always positioned between a pair of successive letters
|
||
and thus is well defines the insertion spot. Additionally, the
|
||
caret can be placed in front of the first letter or after the
|
||
last letter, which naturally allows typing some text at the very
|
||
beginning or end.&]
|
||
[s0; &]
|
||
[s0; When inserting new rows into the array controls, things are
|
||
a bit more tricky. This is so because, unlike in the text editor,
|
||
the cursor is not placed [/ between] two successive rows, but [/ over]
|
||
a certain row. This is of course necessary to make row editing
|
||
possible (note that in the aforementioned text editor analogy,
|
||
a single letter is an atomic object whereas in the array it is
|
||
a potentially complex structure consisting of many columns and
|
||
data items). However, when it comes to row insertion, it has
|
||
two main troubles as its implication:&]
|
||
[s0; &]
|
||
[s0;i150;O9; [* 1.]-|It is necessary to decide somehow whether the new
|
||
row will go [/ above] or [/ below] the cursor row.&]
|
||
[s0;i150;O9; [* 2.]-|In an array with [/ n] rows, there are [/ n`+1] possible
|
||
locations for a new row (before the row #0, #1 ... #([/ n`-1])
|
||
and after the last row), but only [/ n] distinct cursor locations.&]
|
||
[s0; &]
|
||
[s0; Over the years, during the development of U`+`+, we experimented
|
||
with multiple ways to overcome these logical problems. As a result
|
||
of this, the ArrayCtrl supports a few methods allowing to fine`-tune
|
||
the row insertion mechanism. It is also worth noting that there
|
||
are cases, like in the case of SQL`-based tables, where the row
|
||
ordering is arbitrary or implicit and the exact `'location`'
|
||
of a new row doesn`'t make any sense. In such cases, it is possible
|
||
to replace array [/ insertion] function with the [/ append] function
|
||
emphasizing the fact that the visual row order is unimportant
|
||
and that insertion means merely adding a new record to the record
|
||
set.&]
|
||
[s0; &]
|
||
[s0; For arrays in which the order is important, there are two ways
|
||
to solve the [/ n`+1] row positions dilemma:&]
|
||
[s0; &]
|
||
[s0;i150;O9; [* 1.]-|Replacing the Insert function with a pair of functions
|
||
for inserting a new row [/ before] / [/ after] the current row.&]
|
||
[s0;i150;O9; [* 2.]-|Visually extending the array by adding a pseudo`-row
|
||
with no real data at its end; this creates the [/ n`+1]`-th cursor
|
||
position necessary to denote all the available row insertion
|
||
locations.&]
|
||
[s0; &]
|
||
[s0; In the first case, it is also possible to select which of the
|
||
insertion functions (before / after) takes precedence (which
|
||
of the two actions should be bound to the standard [* Insert] hotkey).
|
||
This corresponds to the [* BeforeAfterInserting] and [* AfterBeforeInserting]
|
||
methods. The second case is called the [* AppendLine] and is activated
|
||
by setting the property with the same name.&]
|
||
[s0; &]
|
||
[s0; To make all this even more interesting, a special mechanism
|
||
called [* InsertAppend] is available to make array filling as easy
|
||
as possible. When activated and the user appends a new row at
|
||
the table end, after pressing [* Enter] (to commit the inserted
|
||
row) another row is automatically added after it and opened for
|
||
editing. This mechanism is turned on by default, but it can be
|
||
disable by setting the [* NoInsertAppend] property to true.&]
|
||
[s0; &]
|
||
[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; [* Initialization and configuration]]
|
||
:: [s0;%- ]
|
||
:: [s0; Reset]
|
||
:: [s0; clears column `& index definition and restores all ArrayCtrl
|
||
default properties]
|
||
:: [s0; IsEdit]
|
||
:: [s0; true `= array state automaton is currently in row editing mode]
|
||
:: [s0; IsInsert]
|
||
:: [s0; true `= array state automaton is currently in row insertion
|
||
mode]
|
||
:: [s0; SetLineCy]
|
||
:: [s0; sets array row height (global or individual for a single row)]
|
||
:: [s0; GetLineCy]
|
||
:: [s0; returns logical array row height (value set by preceding SetLineCy)]
|
||
:: [s0; GetLineY]
|
||
:: [s0; returns [/ y] position of given row (relative to table beginning)]
|
||
:: [s0; `[No`]AppendLine]
|
||
:: [s0; `[do not`] display an additional pseudo`-row used for row insertion]
|
||
:: [s0; IsAppendLine]
|
||
:: [s0; returns actual value of the [* AppendLine] property]
|
||
:: [s0; ShowAppendLine]
|
||
:: [s0; scrolls the table view to display the appending line]
|
||
:: [s0; `[No`]Inserting]
|
||
:: [s0; `[do not`] allow inserting new rows]
|
||
:: [s0; IsInserting]
|
||
:: [s0; returns actual value of the [* Inserting] property]
|
||
:: [s0; BeforeAfterInserting]
|
||
:: [s0; allow inserting rows before / after current row (default `=
|
||
before)]
|
||
:: [s0; AfterBeforeInserting]
|
||
:: [s0; allow inserting rows before / after current row (default `=
|
||
after)]
|
||
:: [s0; NoInsertAppend]
|
||
:: [s0; do not autoinsert another row after committing last row insertion]
|
||
:: [s0; IsEditing]
|
||
:: [s0; true `= (at least one column of the) ArrayCtrl supports editing]
|
||
:: [s0; `[No`]Duplicating]
|
||
:: [s0; `[do not`] allow row duplication]
|
||
:: [s0; IsDuplicating]
|
||
:: [s0; returns actual value of the [* Duplicating] property]
|
||
:: [s0; Appending]
|
||
:: [s0; allow appending new row at the table end]
|
||
:: [s0; IsAppending]
|
||
:: [s0; returns actual state of the [* Appending] property]
|
||
:: [s0; AutoAppending]
|
||
:: [s0; allow appending new row at the table end, Enter appends another
|
||
one]
|
||
:: [s0; IsAutoAppending]
|
||
:: [s0; returns actual state of [* AutoAppending] property]
|
||
:: [s0; `[No`]Removing]
|
||
:: [s0; `[do not`] allow table row removing]
|
||
:: [s0; IsRemoving]
|
||
:: [s0; returns actual state of the [* Removing] property]
|
||
:: [s0; `[No`]AskRemove]
|
||
:: [s0; `[do not`] prompt user to confirm row removal]
|
||
:: [s0; IsAskRemove]
|
||
:: [s0; returns actual state of the [* AskRemove] property]
|
||
:: [s0; Moving]
|
||
:: [s0; allow row swapping (moving a row before / after neighbouring
|
||
row)]
|
||
:: [s0; IsMoving]
|
||
:: [s0; returns actual state of the [* Moving] property]
|
||
:: [s0; `[No`]Header]
|
||
:: [s0; `[do not`] display table header]
|
||
:: [s0; `[No`]Track]
|
||
:: [s0; `[do not`] animate tracking table column widths]
|
||
:: [s0; `[No`]VertGrid]
|
||
:: [s0; `[do not`] display column breaks]
|
||
:: [s0; `[No`]HorzGrid]
|
||
:: [s0; `[do not`] display row breaks]
|
||
:: [s0; `[No`]Grid]
|
||
:: [s0; `[do not`] display both grids (VertGrid `+ HorzGrid)]
|
||
:: [s0; GridColor]
|
||
:: [s0; set grid line color]
|
||
:: [s0; EvenRowColor]
|
||
:: [s0; background color for even rows]
|
||
:: [s0; OddRowColor]
|
||
:: [s0; background color for odd rows]
|
||
:: [s0; RowFormat]
|
||
:: [s0; formats menu items substituting given word for the term `'row`']
|
||
:: [s0; RowName]
|
||
:: [s0; sets the context`-relevant word to substitute for `'row`' in
|
||
the local menu texts]
|
||
:: [s0; NoCursor]
|
||
:: [s0; do not highlight cursor row]
|
||
:: [s0; `[No`]MouseMoveCursor]
|
||
:: [s0; automatically move cursor as the mouse moves (used e.g. in PopupTable)]
|
||
:: [s0; `[No`]AutoHideSb]
|
||
:: [s0; `[do not`] display scroll bar only when necessary]
|
||
:: [s0; MultiSelect]
|
||
:: [s0; enable selecting multiple rows at the same time]
|
||
:: [s0; ColumnWidths]
|
||
:: [s0; sets logical column widths using a formatted string, e.g. `"1
|
||
5 10 10 5 1`"]}}&]
|
||
[s0; &]
|
||
[ {{2337:7663-1 [s0; [* Array index `& column structure management]]
|
||
:: [s0;%- ]
|
||
:: [s0; IndexInfo]
|
||
:: [s0; returns the [* IdInfo] structure describing an index (see below)]
|
||
:: [s0; AddIndex]
|
||
:: [s0; adds a new index to the source data matrix]
|
||
:: [s0; GetIndexCount]
|
||
:: [s0; returns number of index columns (columns in the source data
|
||
matrix)]
|
||
:: [s0; GetId]
|
||
:: [s0; returns identifier of a given index (given by its integral index)]
|
||
:: [s0; GetPos]
|
||
:: [s0; returns integral index of source matrix column ([/ index]) identified
|
||
by an [* Id]]
|
||
:: [s0; SetId]
|
||
:: [s0; sets the [* Id] identifier for a given index (column of the source
|
||
matrix)]
|
||
:: [s0; AddKey]
|
||
:: [s0; sets up the first index to act as primary key (often used for
|
||
SQL tables)]
|
||
:: [s0; GetKeyId]
|
||
:: [s0; returns primary key identifier (equal to [* GetId(0)])]
|
||
:: [s0; AddColumn]
|
||
:: [s0; adds a column`-index pair to the table (one data column, one
|
||
output column)]
|
||
:: [s0; AddColumnAt]
|
||
:: [s0; adds a column bound to a given index]
|
||
:: [s0; AddRowNumColumn]
|
||
:: [s0; adds a column without an index (used for external data)]
|
||
:: [s0; GetColumnCount]
|
||
:: [s0; returns number of (visual) columns in the table]
|
||
:: [s0; FindColumnWithPos]
|
||
:: [s0; locates table column according to given index number]
|
||
:: [s0; FindColumnWithId]
|
||
:: [s0; locates table column according to index identifier]
|
||
:: [s0; ColumnAt]
|
||
:: [s0; returns the [* ArrayCtrl`::Column] structure describing given column]
|
||
:: [s0; HeaderTab]
|
||
:: [s0; returns the [* HeaderCtrl`::Column] structure for the given column]
|
||
:: [s0; HeaderObject]
|
||
:: [s0; returns a reference to the [* HeaderCtrl] object for this table]
|
||
:: [s0; SerializeHeader]
|
||
:: [s0; serialize header layout information (column widths etc.)]
|
||
:: [s0; AddCtrl]
|
||
:: [s0; adds an outer control`-index pair to the table (one data column,
|
||
one outer Ctrl)]
|
||
:: [s0; AddCtrlAt]
|
||
:: [s0; adds an outer control bound to a given index]
|
||
:: [s0; AddRowNumCtrl]
|
||
:: [s0; adds an outer control without an index `- used ([/ seldom]) for
|
||
external data]
|
||
:: [s0; SetDisplay]
|
||
:: [s0; sets display for a given table column or cell]
|
||
:: [s0; GetDisplay]
|
||
:: [s0; returns column / cell display]
|
||
:: [s0; SetCtrl]
|
||
:: [s0; sets a [* Ctrl] object for custom 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 number of last clicked row (Null if clicked outside
|
||
existing rows)]
|
||
:: [s0; GetClickPos]
|
||
:: [s0; returns Point(GetClickColumn(), GetClickRow())]}}&]
|
||
[s0; &]
|
||
[ {{2337:7663-1 [s0; [* Data setting `& retrieval]]
|
||
:: [s0;%- ]
|
||
:: [s0; SetCount]
|
||
:: [s0; sets number of rows in the array]
|
||
:: [s0; SetVirtualCount]
|
||
:: [s0; sets number of rows in the array with external data]
|
||
:: [s0; GetCount]
|
||
:: [s0; returns number of rows]
|
||
:: [s0; Clear]
|
||
:: [s0; clears array data, identical to [* SetCount(0)]]
|
||
:: [s0; Shrink]
|
||
:: [s0; shrinks source data matrix to the minimum necessary size]
|
||
:: [s0; Get]
|
||
:: [s0; returns given Value element of the source data matrix]
|
||
:: [s0; GetOriginal]
|
||
:: [s0; returns given element of source data matrix before editation]
|
||
:: [s0; Set]
|
||
:: [s0; sets given element of the source data matrix]
|
||
:: [s0; GetKey]
|
||
:: [s0; returns given primary key (column #0 in the data matrix)]
|
||
:: [s0; GetOriginalKey]
|
||
:: [s0; returns `'old`' value of primary key before 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 data matrix]
|
||
:: [s0; Add]
|
||
:: [s0; adds a new row at the end of table]
|
||
:: [s0; Insert]
|
||
:: [s0; inserts a new row into the table]
|
||
:: [s0; Remove]
|
||
:: [s0; removes a given table row]
|
||
:: [s0; SwapUp]
|
||
:: [s0; exchanges a table row with the preceding row]
|
||
:: [s0; SwapDown]
|
||
:: [s0; exchanges a table row with the next row]
|
||
:: [s0; Sort]
|
||
:: [s0; sorts table rows using a given predicate]
|
||
:: [s0; ClearCache]
|
||
:: [s0; clears data conversion cache]
|
||
:: [s0; InvalidateCache]
|
||
:: [s0; invalidates given table row in the conversion cache]}}&]
|
||
[s0; &]
|
||
[ {{2337:7663-1 [s0; [* Cursor `& selection management]]
|
||
:: [s0;%- ]
|
||
:: [s0; GetSelectCount]
|
||
:: [s0; returns number of currently selected rows]
|
||
:: [s0; IsSelection]
|
||
:: [s0; checks whether any rows are selected (identical to [* GetSelectCount()
|
||
> 0])]
|
||
:: [s0; Select]
|
||
:: [s0; selects / unselects given row or a series of rows]
|
||
:: [s0; IsSelected]
|
||
:: [s0; checks whether given row is selected]
|
||
:: [s0; ClearSelection]
|
||
:: [s0; clears the current selection]
|
||
:: [s0; SetCursor]
|
||
:: [s0; moves array cursor to a new row]
|
||
:: [s0; KillCursor]
|
||
:: [s0; removes the cursor away from the table]
|
||
:: [s0; CancelCursor]
|
||
:: [s0; cancels editation of current row]
|
||
:: [s0; IsCursor]
|
||
:: [s0; checks whether cursor is in the table (identical to [* GetCursor()
|
||
>`= 0])]
|
||
:: [s0; GetCursor]
|
||
:: [s0; returns current cursor row, `-1 when none]
|
||
:: [s0; GoBegin]
|
||
:: [s0; moves the cursor to the first table row]
|
||
:: [s0; GoEnd]
|
||
:: [s0; moves the cursor to the last table row]
|
||
:: [s0; GetCursorSc]
|
||
:: [s0; returns the location of the cursor row within the table view
|
||
area]
|
||
:: [s0; ScCursor]
|
||
:: [s0; scrolls the table to move the cursor row to given location within
|
||
the table view]
|
||
:: [s0; CenterCursor]
|
||
:: [s0; scrolls the table to move cursor into the middle of the current
|
||
view]
|
||
:: [s0; ScrollInto]
|
||
:: [s0; scrolls the table by minimum amount necessary to make given
|
||
row visible]
|
||
:: [s0; ScrollIntoCursor]
|
||
:: [s0; scrolls the table by minimum amount necessary to make cursor
|
||
row visible]
|
||
:: [s0; GetScroll]
|
||
:: [s0; returns current table scrollbar location]
|
||
:: [s0; ScrollTo]
|
||
:: [s0; sets table scrollbar location]
|
||
:: [s0; Find]
|
||
:: [s0; locates table row containing a given element]
|
||
:: [s0; FindSetCursor]
|
||
:: [s0; moves the cursor to table row containing a given element]}}&]
|
||
[s0;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 cell]
|
||
:: [s0; StartEdit]
|
||
:: [s0; open current array row for editing]
|
||
:: [s0; GetEditColumn]
|
||
:: [s0; returns the column being currently edited]
|
||
:: [s0; DoEdit]
|
||
:: [s0; corresponds to the local menu `'Edit`' function]
|
||
:: [s0; DoInsert]
|
||
:: [s0; corresponds to the local menu `'Insert`' function]
|
||
:: [s0; DoInsertBefore]
|
||
:: [s0; corresponds to the local menu `'Insert before`' function]
|
||
:: [s0; DoInsertAfter]
|
||
:: [s0; corresponds to the local menu `'Insert after`' function]
|
||
:: [s0; DoAppend]
|
||
:: [s0; corresponds to the local menu `'Append`' function]
|
||
:: [s0; DoRemove]
|
||
:: [s0; corresponds to the local menu `'Remove`' function]
|
||
:: [s0; DoDuplicate]
|
||
:: [s0; corresponds to the local menu `'Duplicate`' function]
|
||
:: [s0; DoSelectAll]
|
||
:: [s0; selects the entire array]
|
||
:: [s0; AcceptEnter]
|
||
:: [s0; commits the currently edited row and possibly begins insertion
|
||
of another row]}}&]
|
||
[s0; &]
|
||
[ {{2337:7663-1 [s0; [* Notification callbacks]]
|
||
:: [s0;%- ]
|
||
:: [s0; WhenLeftClick]
|
||
:: [s0; left mouse click within the array]
|
||
:: [s0; WhenLeftDouble]
|
||
:: [s0; left mouse doubleclick within the array]
|
||
:: [s0; WhenSel]
|
||
:: [s0; called when cursor or selection status of widget changes]
|
||
:: [s0; WhenCursor]
|
||
:: [s0; called whenever the cursor location changes [/ (deprecated, use
|
||
WhenSel)]]
|
||
:: [s0; WhenKillCursor]
|
||
:: [s0; called when the cursor moves away from the table [/ (deprecated,
|
||
use WhenSel)]]
|
||
:: [s0; WhenSelection]
|
||
:: [s0; called whenever current selection changes [/ (deprecated, use
|
||
WhenSel)]]
|
||
:: [s0; WhenEnterRow]
|
||
:: [s0; called whenever the cursor moves to a new row [/ (deprecated,
|
||
use WhenSel)]]
|
||
:: [s0; WhenUpdateRow]
|
||
:: [s0; called after updating a row]
|
||
:: [s0; WhenAcceptRow]
|
||
:: [s0; additional row validation callback]
|
||
:: [s0; WhenStartEdit]
|
||
:: [s0; called after initiating row editation]
|
||
:: [s0; WhenAcceptEdit]
|
||
:: [s0; called after accepting changes to a given row]
|
||
:: [s0; WhenArrayAction]
|
||
:: [s0; called whenever array source data changes (after insert / delete
|
||
/ edit)]
|
||
:: [s0; WhenBar]
|
||
:: [s0; can be used to supply custom local menu for the array]
|
||
:: [s0; WhenCtrlsAction]
|
||
:: [s0; called by [* WhenAction] callbacks of internally created controls]}}&]
|
||
[s0; &]
|
||
[s0; [*+117 Detailed method description]&]
|
||
[s0; &]
|
||
[s0; [* Initialization and configuration]&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 Reset]()&]
|
||
[s2; Clears table rows and resets all array properties to their default
|
||
values.&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 ShowAppendLine]()&]
|
||
[s2; Show an additional pseudo`-row at the table end. When clicked,
|
||
a new row is appended to the array.&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) bool]_[@0 IsEdit]()_[@(0.0.255) const]&]
|
||
[s2; Checks whether the array is currently being edited.&]
|
||
[s4; [*/ Return value]-|[* true] `= a row is currently open for editing,
|
||
[* false] `= array is in normal browsing mode&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) bool]_[@0 IsInsert]()_[@(0.0.255) const]&]
|
||
[s2; Checks whether a new row is currently being inserted.&]
|
||
[s4; [*/ Return value]-|[* true] `= newly inserted row is currently being
|
||
edited, [* false] when not&]
|
||
[s0;* &]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 SetLineCy]([@(0.0.255) int]_[@3 cy])&]
|
||
[s2; Sets the (default) array row height. For certain rows, this
|
||
can be overriden by the two`-parameter version of this method.&]
|
||
[s4; [%-*C@3 cy]-|row height in pixels&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 SetLineCy]([@(0.0.255) int]_[@3 i], [@(0.0.255) int]_[@3 cy])&]
|
||
[s2; Sets row height for a given row. This overrides the default
|
||
value set by the one`-parameter version of this method.&]
|
||
[s4; [%-*C@3 i]-|row index (zero based)&]
|
||
[s4; [%-*C@3 cy]-|row height in pixels, [* Null] `= use default row height&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) int]_[@0 GetLineCy]()_[@(0.0.255) const]&]
|
||
[s2; Returns default array row height.&]
|
||
[s4; [*/ Return value]-|row height in pixels&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) int]_[@0 GetLineY]([@(0.0.255) int]_[@3 i])_[@(0.0.255) const]&]
|
||
[s2; 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).&]
|
||
[s4; [%-*C@3 i]-|row index (zero based)&]
|
||
[s4; [*/ Return value]-|Vertical position of row top in pixels (relative
|
||
to array beginning)&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) int]_[@0 GetLineCy]([@(0.0.255) int]_[@3 i])_[@(0.0.255) const]&]
|
||
[s2; Returns the height of a given row (either the row`-specific
|
||
row height, or, when Null, the default row height).&]
|
||
[s4; [%-*C@3 i]-|row index (zero based)&]
|
||
[s4; [*/ Return value]-|row height in pixels&]
|
||
[s0;* &]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 AppendLine]([@(0.0.255) bool]_[@3 b]_`=_true)&]
|
||
[s2; The AppendLine property controls whether the array displays
|
||
an additional `'append`' row after its last (real) row. &]
|
||
[s4; [%-*C@3 b]-|[* true] `= display appending row, [* false] `= hide it&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 NoAppendLine]()&]
|
||
[s2; Hide the appending line (identical to [* AppendLine(false)]).&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) bool]_[@0 IsAppendLine]()_[@(0.0.255) const]&]
|
||
[s2; Returns current state of the [* AppendLine] property.&]
|
||
[s4; [*/ Return value]-|[* true] `= display appending pseudo`-row at the
|
||
end of the array&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 Inserting]([@(0.0.255) bool]_[@3 b]_`=_true)&]
|
||
[s2; Enable / disable inserting new rows in the array (no matter
|
||
which insertion mechanism is selected).&]
|
||
[s4; [%-*C@3 b]-|[* true] `= enable insertion, [* false] `= disable it&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 NoInserting]()&]
|
||
[s2; Disables row insertion (identical to [* Inserting(false)]).&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) bool]_[@0 IsInserting]()_[@(0.0.255) const]&]
|
||
[s2; Returns current state of the [* Inserting] property.&]
|
||
[s4; [*/ Return value]-|[* true] `= row insertion is enabled, [* false]
|
||
when not&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 Appending]([@(0.0.255) bool]_[@3 b]_`=_true)&]
|
||
[s2; Enable / disable adding new rows at the table end.&]
|
||
[s4; [%-*C@3 b]-|[* true] `= enable row appending, [* false] `= disable
|
||
it&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) bool]_[@0 IsAppending]()_[@(0.0.255) const]&]
|
||
[s2; Returns current state of the [* Appending] property.&]
|
||
[s4; [*/ Return value]-|[* true] `= appending rows is enabled, [* false]
|
||
when not.&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 AutoAppending]([@(0.0.255) bool]_[@3 b]_`=_true)&]
|
||
[s2; Same as [* Appending] but Enter pressed when editing a new row
|
||
accepts it and adds another one at the table end.&]
|
||
[s4; [%-*C@3 b]-|[* true ]to enable the mode&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0; &]
|
||
[s5;K%- [@(0.0.255) bool]_[@0 IsAutoAppending]()_[@(0.0.255) const]&]
|
||
[s2; Returns current state of [* AutoAppending] property.&]
|
||
[s4; [*/ Return value]-|[* true] `= [* AutoAppending ]is active&]
|
||
[s0; &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 BeforeAfterInserting]()&]
|
||
[s2; Activate before / after row insertion mechanism ([* Insert] hotkey
|
||
`= before).&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 AfterBeforeInserting]()&]
|
||
[s2; Activate before / after row insertion mechanism ([* Insert] hotkey
|
||
`= after)&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 Duplicating]([@(0.0.255) bool]_[@3 b]_`=_true)&]
|
||
[s2; Enable / disable row duplication. Note that this property only
|
||
controls whether the `'Duplicate`' item should be present in
|
||
the array local menu. Of course, nothing can prevent you from
|
||
supporting duplication in some other way, or from calling the
|
||
[* DoDuplicate] method as you see fit.&]
|
||
[s4; [%-*C@3 b]-|[* true] `= enable duplication, [* false] `= disable it&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 NoDuplicating]()&]
|
||
[s2; Disable row duplication (identical to [* Duplicating(false)]).&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) bool]_[@0 IsDuplicating]()_[@(0.0.255) const]&]
|
||
[s2; Returns the state of the [* Duplicating] property.&]
|
||
[s4; [*/ Return value]-|[* true] `= local menu offers row duplication,
|
||
[* false] when not&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 NoInsertAppend]([@(0.0.255) bool]_[@3 b]_`=_true)&]
|
||
[s2; Enables / disables the auto`-append mechanism (see above section
|
||
on inserting rows).&]
|
||
[s4; [%-*C@3 b]-|[* true] `= disable InsertAppend mechanism, [* false] `=
|
||
enable it (the default)&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) bool]_[@0 IsEditing]()_[@(0.0.255) const]&]
|
||
[s2; Checks whether at least one array column supports editing (whether
|
||
it is possible to [/ open] a row for editation).&]
|
||
[s4; [*/ Return value]-|[* true] `= row editing is possible, [* false] when
|
||
not&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 Removing]([@(0.0.255) bool]_[@3 b]_`=_true)&]
|
||
[s2; Enable / disable deleting rows from the table.&]
|
||
[s4; [%-*C@3 b]-|[* true] `= enable deletion, [* false] `= disable it&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 NoRemoving]()&]
|
||
[s2; Disable deleting table rows (identical to [* Removing(false)]).&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) bool]_[@0 IsRemoving]()_[@(0.0.255) const]&]
|
||
[s2; Returns current state of the [* Removing] property.&]
|
||
[s4; [*/ Return value]-|[* true] `= row deletion is enabled, [* false ]when
|
||
not&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 AskRemove]([@(0.0.255) bool]_[@3 b]_`=_true)&]
|
||
[s2; 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. When set to [* false], rows are deleted automatically
|
||
without any further confirmation.&]
|
||
[s4; [%-*C@3 b]-|[* true] `= prompt user to confirm row deletion, [* false]
|
||
`= delete rows instantly&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 NoAskRemove]()&]
|
||
[s2; Disables user confirmation of row deletion (equivalent to [* AskRemove(false)]).&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) bool]_[@0 IsAskRemove]()_[@(0.0.255) const]&]
|
||
[s2; Returns current state of the [* AskRemove] property.&]
|
||
[s4; [*/ Return value]-|[* true] `= user confirmation is needed to delete
|
||
rows, [* false] `= rows are deleted immediately&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 Moving]([@(0.0.255) bool]_[@3 b]_`=_true)&]
|
||
[s2; 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.&]
|
||
[s4; [%-*C@3 b]-|[* true] `= offer row moving in the local menu, [* false]
|
||
`= don`'t&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) bool]_[@0 IsMoving]()_[@(0.0.255) const]&]
|
||
[s2; Returns current state of the [* Moving] property.&]
|
||
[s4; [*/ Return value]-|[* true] `= local menu supports row swapping,
|
||
[* false] `= it doesn`'t&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 Header]([@(0.0.255) bool]_[@3 b]_`=_true)&]
|
||
[s2; Show / hide the [*^topic`:`/`/CtrlLib`/src`/HeaderCtrl`$en`-us^ HeaderCtrl]
|
||
object for this table.&]
|
||
[s4; [%-*C@3 b]-|[* true] `= show table header, [* false] `= hide it&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 NoHeader]()&]
|
||
[s2; Hide table header (equivalent to [* Header(false)]).&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 Track]([@(0.0.255) bool]_[@3 b]_`=_true)&]
|
||
[s2; Animate array column resizing. This is equivalent to setting
|
||
the [*^topic`:`/`/CtrlLib`/src`/HeaderCtrl`$en`-us`#`:`:HeaderCtrl`:`:Track`(bool`)^ T
|
||
rack] property in the array HeaderCtrl.&]
|
||
[s4; [%-*C@3 b]-|[* true] `= repaint the array repeatedly while dragging
|
||
column widths, [* false] `= regenerate everything only after drag
|
||
`& drop is finished.&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 NoTrack]()&]
|
||
[s2; Do not animate array column resizing (equivalent to [* Track(false)]).&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 VertGrid]([@(0.0.255) bool]_[@3 b]_`=_true)&]
|
||
[s2; Show / hide vertical array grid lines (separating array columns).&]
|
||
[s4; [%-*C@3 b]-|[* true] `= show vertical grid lines, [* false] `= hide
|
||
them&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 NoVertGrid]()&]
|
||
[s2; Hide vertical grid lines (equivalent to [* VertGrid(false)]).&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 HorzGrid]([@(0.0.255) bool]_[@3 b]_`=_true)&]
|
||
[s2; Show / hide horizontal grid lines (separating array rows).&]
|
||
[s4; [%-*C@3 b]-|[* true] `= show horizontal grid lines, [* false] `= hide
|
||
them&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 NoHorzGrid]()&]
|
||
[s2; Hide horizontal grid lines (equivalent to [* HorzGrid(false)]).&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 Grid]([@(0.0.255) bool]_[@3 b]_`=_true)&]
|
||
[s2; Show / hide both horizontal and vertical grid lines (equivalent
|
||
to [* HorzGrid(b).VertGrid(b)]).&]
|
||
[s4; [%-*C@3 b]-|[* true] `= show grid line matrix, [* false] `= hide all
|
||
grid lines&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 NoGrid]()&]
|
||
[s2; Hide horizontal and vertical grid lines (equivalent to [* Grid(false)]).&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 GridColor]([^`:`:Color^ Color]_[@3 c])&]
|
||
[s2; Sets the color for grid lines.&]
|
||
[s4; [%-*C@3 c]-|new grid line color&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;:`:`:ArrayCtrl`:`:EvenRowColor`(`:`:Color:%- ArrayCtrl`&_EvenRowColor(Color_[@3 pap
|
||
er][@0 _`=_Blend(SColorHighlight, SColorPaper, ][@3 220][@0 ), Color_][@3 ink][@0 _`=_SColo
|
||
rText)]&]
|
||
[s2; 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).&]
|
||
[s2; [* Note:] the even / odd row terminology refers to the natural
|
||
array 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.&]
|
||
[s4; [%-*C@3 paper]-|background color to use for second, fourth, sixth
|
||
etc. array row&]
|
||
[s4; [%-*C@3 ink]-|foreground color for even rows&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 OddRowColor]([^`:`:Color^ Color]_[@3 paper]_`=_SCol
|
||
orInfo, [^`:`:Color^ Color]_[@3 ink]_`=_SColorText)&]
|
||
[s2; Sets the paper and ink (background and foreground) color for
|
||
odd array rows.&]
|
||
[s4; [%-*C@3 paper]-|background color to use for first, third, fifth
|
||
etc. array row&]
|
||
[s4; [%-*C@3 ink]-|foreground color for odd rows&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 NoCursor]([@(0.0.255) bool]_[@3 b]_`=_true)&]
|
||
[s2; Turns on / off highlighting cursor row.&]
|
||
[s4; [%-*C@3 b]-|[* true] `= do not highlight cursor row, [* false] `= default
|
||
behaviour (cursor row is shown in inverse colors)&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 MouseMoveCursor]([@(0.0.255) bool]_[@3 b]_`=_true)&]
|
||
[s2; Enables / disables automatical cursor row switching as the mouse
|
||
cursor moves over the array rows.&]
|
||
[s4; [%-*C@3 b]-|[* true] `= automatically switch cursor row, [* false]
|
||
`= only upon clicks and keyboard navigation&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 NoMouseMoveCursor]()&]
|
||
[s2; Disable automatical cursor row switching (equivalent to [* MouseMoveCursor(false)])
|
||
.&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 AutoHideSb]([@(0.0.255) bool]_[@3 b]_`=_true)&]
|
||
[s2; When set to [* true], 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.&]
|
||
[s4; [%-*C@3 b]-|[* true] `= show / hide the scrollbar as necessary, [* false]
|
||
`= display it unconditionally&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 NoAutoHideSb]()&]
|
||
[s2; Display vertical scrollbar all the time (equivalent to [* AutoHideSb(false)]).&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 MultiSelect]([@(0.0.255) bool]_[@3 b]_`=_true)&]
|
||
[s2; Enable / disable multiple row selection. &]
|
||
[s4; [%-*C@3 b]-|[* true] `= allow selecting multiple rows at the same
|
||
time, [* false] `= only one row at a time&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K:`:`:ArrayCtrl`:`:NoBackground`(bool`):%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 NoBackgr
|
||
ound]([@(0.0.255) bool]_[@3 b]_`=_true)&]
|
||
[s2; Sets the widget into transparent mode `- background is not painted
|
||
and Transparent is activated `- a result, anything painted behind
|
||
the widget is visible, allowing client code to provide any background
|
||
it needs.&]
|
||
[s0; &]
|
||
[s5;K:`:`:ArrayCtrl`:`:PopUpEx`(bool`):%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 PopUpEx]([@(0.0.255) b
|
||
ool]_[@3 b]_`=_true)&]
|
||
[s2; Activates showing small popup windows with cell content when
|
||
mouse is over and cell is to big to fit current dimensions. Default
|
||
is activated.&]
|
||
[s0; &]
|
||
[s5;K:`:`:ArrayCtrl`:`:NoPopUpEx`(`):%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 NoPopUpEx]()&]
|
||
[s2; Same as PopUpEx(false).&]
|
||
[s0; &]
|
||
[s5;K:`:`:ArrayCtrl`:`:NoFocusSetCursor`(`):%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 NoFocusS
|
||
etCursor]()&]
|
||
[s2; Normally, when ArrayCtrl gets a focus and no cursor is set (and
|
||
cursor is allowed and there is at least one line), ArrayCtrl
|
||
a sets the cursor to the first line. This modifier deactivates
|
||
this feature.&]
|
||
[s0; &]
|
||
[s5;K:`:`:ArrayCtrl`:`:MovingHeader`(bool`):%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 MovingHe
|
||
ader]([@(0.0.255) bool]_[@3 b])&]
|
||
[s2; Activates dragging columns in header. Default is active.&]
|
||
[s0; &]
|
||
[s5;K:`:`:ArrayCtrl`:`:NoMovingHeader`(`):%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 NoMovingHe
|
||
ader]()&]
|
||
[s2; Same as MovingHeader(false).&]
|
||
[s0; &]
|
||
[s5;K:`:`:ArrayCtrl`:`:AllSorting`(`):%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 AllSorting]()&]
|
||
[s2; If set, Sorting() is invoked for all columns (added either before
|
||
or after this modifier is called).&]
|
||
[s0; &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 ColumnWidths]([@(0.0.255) const]_[@(0.0.255) char]_
|
||
`*[@3 s])&]
|
||
[s2; Initializes column widths based on a text string containing
|
||
blank`-separated decimal numbers, e.g. `"1 4 6 4 1`".&]
|
||
[s4; [%-*C@3 s]-|control string defining column widths&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:String^ String]_[@0 RowFormat]([@(0.0.255) const]_[@(0.0.255) char]_`*[@3 s])&]
|
||
[s2; 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.&]
|
||
[s4; [%-*C@3 s]-|[* Format]`-like string to substitute.&]
|
||
[s4; [*/ Return value]-|&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl^ ArrayCtrl]`&_[@0 RowName]([@(0.0.255) const]_[@(0.0.255) char]_`*[@3 s
|
||
])&]
|
||
[s2; Sets the array`-specific term for `'row`'. This can be used
|
||
to customize the local menu terminology according to the logical
|
||
content of the array. For instance, when you have an array with
|
||
the list of employees, you can call [* RowName(`"employee`")] and
|
||
the menu items will then read [/ `'Insert new employee`', `'Delete
|
||
employee`'] etc.&]
|
||
[s4; [%-*C@3 s]-|the term to substitute for `'array row`' in menu items&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;* &]
|
||
[s0;* &]
|
||
[s0; [* Column structure programming]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl`:`:IdInfo^ IdInfo]`&_[@0 IndexInfo]([@(0.0.255) int]_[@3 ii])&]
|
||
[s2; Returns a reference to the [* IdInfo] structure describing a given
|
||
array index (column in the source data matrix).&]
|
||
[s4; [%-*C@3 ii]-|zero`-based ordinal number of the array index&]
|
||
[s4; [*/ Return value]-|IdInfo reference for the given index&]
|
||
[s0;3 &]
|
||
[s5;K%- IdInfo`&_[@0 IndexInfo]([^`:`:Id^ Id]_[@3 id])&]
|
||
[s2; Returns a reference to the [* IdInfo] structure describing a given
|
||
array index.&]
|
||
[s4; [%-*C@3 id]-|the [* Id] index identifier&]
|
||
[s4; [*/ Return value]-|IdInfo reference for the given index&]
|
||
[s0;3 &]
|
||
[s5;K%- IdInfo`&_[@0 AddIndex]([^`:`:Id^ Id]_[@3 id])&]
|
||
[s2; Adds a new index to the array and assign it a given [* Id] identifier.&]
|
||
[s4; [%-*C@3 id]-|new index identifier&]
|
||
[s4; [*/ 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 &]
|
||
[s5;K%- [^`:`:ArrayCtrl`:`:IdInfo^ IdInfo]`&_[@0 AddIndex]()&]
|
||
[s2; Adds a new index (without an identifier) to the array.&]
|
||
[s4; [*/ Return value]-|A reference to the [* IdInfo] structure describing
|
||
the newly added index.&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) int]_[@0 GetIndexCount]()_[@(0.0.255) const]&]
|
||
[s2; Returns number of indices in the array.&]
|
||
[s4; [*/ Return value]-|index count&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:Id^ Id]_[@0 GetId]([@(0.0.255) int]_[@3 ii])_[@(0.0.255) const]&]
|
||
[s2; Returns the identifier of a given index (addresses by its zero`-based
|
||
ordinal number).&]
|
||
[s4; [%-*C@3 ii]-|zero`-based ordinal number of the queried index&]
|
||
[s4; [*/ Return value]-|index identifier or [* Null] if the index has
|
||
no identifier&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) int]_[@0 GetPos]([^`:`:Id^ Id]_[@3 id])_[@(0.0.255) const]&]
|
||
[s2; Returns the zero`-based positional number of the array index
|
||
with a given identifier.&]
|
||
[s4; [%-*C@3 id]-|array index identifier&]
|
||
[s4; [*/ Return value]-|zero`-based index number, `-1 when not found&]
|
||
[s0;3 &]
|
||
[s5;K%- IdInfo`&_[@0 SetId]([@(0.0.255) int]_ii, [^`:`:Id^ Id]_[@3 id])&]
|
||
[s2; Sets the identifier for a given array index. This can be used
|
||
to set or modify the identifier for a previously added index.&]
|
||
[s4; [%-*C@3 ii]-|zero`-based ordinal number of the index to set the
|
||
identifier for&]
|
||
[s4; [%-*C@3 id]-|new index identifier ([* Null] when none)&]
|
||
[s4; [*/ 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 &]
|
||
[s5;K%- [^`:`:ArrayCtrl`:`:IdInfo^ IdInfo]`&_[@0 AddKey]([^`:`:Id^ Id]_[@3 id])&]
|
||
[s2; 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] and 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].&]
|
||
[s4; [%-*C@3 id]-|primary key identifier&]
|
||
[s4; [*/ Return value]-|A reference to the descriptive [* IdInfo] structure
|
||
for the primary key index.&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl`:`:IdInfo^ IdInfo]`&_[@0 AddKey]()&]
|
||
[s2; Adds a primary key index without an identifier to the table.
|
||
This is equivalent to [* AddKey(Null)].&]
|
||
[s4; [*/ Return value]-|A reference to the [* IdInfo] structure describing
|
||
the primary key index.&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:Id^ Id]_[@0 GetKeyId]()_[@(0.0.255) const]&]
|
||
[s2; Returns primary key identifier for this table. This is equivalent
|
||
to calling [* GetId(0)].&]
|
||
[s4; [*/ Return value]-|primary key index identifier&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl`:`:Column^ Column]`&_[@0 AddColumn]([@(0.0.255) const]_[@(0.0.255) ch
|
||
ar]_`*[@3 text]_`=_NULL, [@(0.0.255) int]_[@3 w]_`=_[@3 0])&]
|
||
[s2; Add a new column`-index pair to the table. The function adds
|
||
a (source) index and an (output) column and sets the index as
|
||
the data source for the column. This is the most common method
|
||
for adding columns to the array.&]
|
||
[s4; [%-*C@3 text]-|column name (displayed in the array header)&]
|
||
[s4; [%-*C@3 w]-|logical relative column width&]
|
||
[s4; [*/ Return value]-|A reference to the [* Column] structure describing
|
||
the newly added column. This can be used to set additional properties
|
||
for the newly added column and the corresponding header tab.&]
|
||
[s0;3 &]
|
||
[s5;K%- Column`&_[@0 AddColumn]([^`:`:Id^ Id]_[@3 id], [@(0.0.255) const]_[@(0.0.255) char]_`*[@3 t
|
||
ext], [@(0.0.255) int]_[@3 w]_`=_[@3 0])&]
|
||
[s2; Adds a new column`-index pair to the table. This is equivalent
|
||
to the above two`-parameter version but, in addition, the method
|
||
sets the [* Id] identifier for the newly created index.&]
|
||
[s4; [%-*C@3 id]-|new index identifier&]
|
||
[s4; [%-*C@3 text]-|column name (displayed in the header)&]
|
||
[s4; [%-*C@3 w]-|logical relative column width&]
|
||
[s4; [*/ Return value]-|A reference to the [* Column] structure describing
|
||
the newly added array column.&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl`:`:Column^ Column]`&_[@0 AddColumnAt]([@(0.0.255) int]_[@3 ii],
|
||
[@(0.0.255) const]_[@(0.0.255) char]_`*[@3 text], [@(0.0.255) int]_[@3 w]_`=_[@3 0])&]
|
||
[s2; Adds a new column to the table and binds it to a given source
|
||
data index.&]
|
||
[s4; [%-*C@3 ii]-|zero`-based ordinal number of the index to use as
|
||
source for this column&]
|
||
[s4; [%-*C@3 text]-|column name (displayed in the header)&]
|
||
[s4; [%-*C@3 w]-|logical relative column width&]
|
||
[s4; [*/ Return value]-|A reference to the [* Column] structure describing
|
||
the newly added array column.&]
|
||
[s0;3 &]
|
||
[s5;K%- Column`&_[@0 AddColumnAt]([^`:`:Id^ Id]_[@3 id], [@(0.0.255) const]_[@(0.0.255) char]_`*
|
||
[@3 text], [@(0.0.255) int]_[@3 w]_`=_[@3 0])&]
|
||
[s2; Adds a new column to the table and binds it to a given source
|
||
data index.&]
|
||
[s4; [%-*C@3 id]-|identifier of the index to use as source for the newly
|
||
added column&]
|
||
[s4; [%-*C@3 text]-|column name (displayed in the header)&]
|
||
[s4; [%-*C@3 w]-|logical relative column width&]
|
||
[s4; [*/ Return value]-|A reference to the [* Column] structure describing
|
||
the newly added array column.&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl`:`:Column^ Column]`&_[@0 AddRowNumColumn]([@(0.0.255) const]_[@(0.0.255) c
|
||
har]_`*[@3 text], [@(0.0.255) int]_[@3 w]_`=_[@3 0])&]
|
||
[s2; 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 [* 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).&]
|
||
[s4; [%-*C@3 text]-|column name (displayed in the header)&]
|
||
[s4; [%-*C@3 w]-|logical relative column width&]
|
||
[s4; [*/ Return value]-|A reference to the [* Column] structure describing
|
||
the newly added array column.&]
|
||
[s0;3 &]
|
||
[s5;K%- IdInfo`&_[@0 AddCtrl]([^`:`:Ctrl^ Ctrl]`&_[@3 ctrl])&]
|
||
[s2; Adds a new index`-control pair to the table; the index keeps
|
||
the source data and the external control is used to edit it.
|
||
The ArrayCtrl handles data transfer between the source data matrix
|
||
and the external control. The method returns a reference the
|
||
[* IdInfo] descriptive structure for the newly added index.&]
|
||
[s2; [* 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 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 such case, you have to use one of the notification callbacks
|
||
(like [* WhenEnterRow]) to force your additional behaviour on
|
||
the controls.&]
|
||
[s4; [%-*C@3 ctrl]-|control to attach to the given index&]
|
||
[s4; [*/ Return value]-|a reference to the IdInfo structure describing
|
||
the newly added index&]
|
||
[s0;3 &]
|
||
[s5;K%- IdInfo`&_[@0 AddCtrl]([^`:`:Id^ Id]_[@3 id], [^`:`:Ctrl^ Ctrl]`&_[@3 ctrl])&]
|
||
[s2; 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.&]
|
||
[s4; [%-*C@3 id]-|the identifier to assign to the newly created index&]
|
||
[s4; [%-*C@3 ctrl]-|freestanding control used to edit the given index&]
|
||
[s4; [*/ Return value]-|a reference to the IdInfo structure describing
|
||
the newly added index&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 AddCtrlAt]([@(0.0.255) int]_[@3 ii], [^`:`:Ctrl^ Ctrl]`&_[@3 ctrl])
|
||
&]
|
||
[s2; Adds a new control to the table and binds it to the index with
|
||
given ordinal number. You can use this method to create the binding
|
||
between the control and an arbitrary source index.&]
|
||
[s4; [%-*C@3 ii]-|zero`-based ordinal number of the index to bind to
|
||
this control&]
|
||
[s4; [%-*C@3 ctrl]-|freestanding control used to edit the [/ ii]`-th data
|
||
index&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 AddCtrlAt]([^`:`:Id^ Id]_[@3 id], [^`:`:Ctrl^ Ctrl]`&_[@3 ctrl])&]
|
||
[s2; Adds a new control to the table and binds it to the index with
|
||
given identifier.&]
|
||
[s4; [%-*C@3 id]-|identifier of the index to bind to this control&]
|
||
[s4; [%-*C@3 ctrl]-|freestanding control used to edit the index with
|
||
identifier [/ id]&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 AddRowNumCtrl]([^`:`:Ctrl^ Ctrl]`&_[@3 ctrl])&]
|
||
[s2; Adds a new freestanding control to the table. The control is
|
||
not bound to any source data index. During cursor movement in
|
||
the array, array uses the control`'s [* 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 editation (there is currently no
|
||
clean way to store the edited data back to its external storage).&]
|
||
[s4; [%-*C@3 ctrl]-|[/ RowNum]`-based freestanding editor control&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) int]_[@0 GetColumnCount]()_[@(0.0.255) const]&]
|
||
[s2; Returns the current number of (output) columns in the array.&]
|
||
[s4; [*/ Return value]-|number of columns&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) int]_[@0 FindColumnWithPos]([@(0.0.255) int]_[@3 pos])_[@(0.0.255) const]&]
|
||
[s2; Returns the zero`-based index of a column based on its source
|
||
data index.&]
|
||
[s4; [%-*C@3 pos]-|ordinal number of the source index&]
|
||
[s4; [*/ Return value]-|ordinal number of the column having the given
|
||
index as its source, `-1 when not found&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) int]_[@0 FindColumnWithId]([^`:`:Id^ Id]_[@3 id])_[@(0.0.255) const]&]
|
||
[s2; Returns the zero`-based index of a column based on its source
|
||
data index.&]
|
||
[s4; [%-*C@3 id]-|source index identifier&]
|
||
[s4; [*/ Return value]-|ordinal number of the column having the given
|
||
index as its source, `-1 when not found&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl`:`:Column^ Column]`&_[@0 ColumnAt]([@(0.0.255) int]_[@3 i])&]
|
||
[s2; Returns the [* Column] structure describing a given column.&]
|
||
[s4; [%-*C@3 i]-|zero`-based column index&]
|
||
[s4; [*/ Return value]-|a reference to the [* Column] structure describing
|
||
the given column&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) const]_[^`:`:ArrayCtrl`:`:Column^ Column]`&_[@0 ColumnAt]([@(0.0.255) int
|
||
]_[@3 i])_[@(0.0.255) const]&]
|
||
[s2; 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.&]
|
||
[s4; [%-*C@3 i]-|zero`-based column index&]
|
||
[s4; [*/ Return value]-|a constant reference to the [* Column] structure
|
||
describing the given column&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl`:`:Column^ Column]`&_[@0 ColumnAt]([^`:`:Id^ Id]_[@3 id])&]
|
||
[s2; Returns the [* Column] structure describing a column with given
|
||
source index.&]
|
||
[s4; [%-*C@3 id]-|identifier of the index used as source for the column&]
|
||
[s4; [*/ Return value]-|a reference to the [* Column] structure describing
|
||
the given column&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) const]_[^`:`:ArrayCtrl`:`:Column^ Column]`&_[@0 ColumnAt]([^`:`:Id^ Id]_[@3 i
|
||
d])_[@(0.0.255) const]&]
|
||
[s2; 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.&]
|
||
[s4; [%-*C@3 id]-|identifier of the index used as source for the column&]
|
||
[s4; [*/ Return value]-|a constant reference to the [* Column] structure
|
||
describing the given column&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:HeaderCtrl`:`:Column^ HeaderCtrl`::Column]`&_[@0 HeaderTab]([@(0.0.255) int]_[@3 i
|
||
])&]
|
||
[s2; Returns the [*^topic`:`/`/CtrlLib`/src`/HeaderCtrl`$en`-us`#`:`:HeaderCtrl`:`:Column`:`:Min`(int`)^ H
|
||
eaderCtrl`::Column] descriptive structure for the given column.
|
||
The correspondence between the array columns and the header tabs
|
||
is 1:1, so that the indices of both are always the same ([* array.GetColumnCount()
|
||
`=`= array.HeaderObject().GetCount()] holds all the time).&]
|
||
[s4; [%-*C@3 i]-|zero`-based column index&]
|
||
[s4; [*/ 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 constraints, font and icon for the column
|
||
title etc.)&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) const]_[^`:`:HeaderCtrl`:`:Column^ HeaderCtrl`::Column]`&_[@0 HeaderTab](
|
||
[@(0.0.255) int]_[@3 i])_[@(0.0.255) const]&]
|
||
[s2; Returns a constant reference to the [* HeaderCtrl`::Column] structure
|
||
for the given column.&]
|
||
[s4; [%-*C@3 i]-|zero`-based column index&]
|
||
[s4; [*/ 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 constraints, font and icon for the column
|
||
title etc.)&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:HeaderCtrl`:`:Column^ HeaderCtrl`::Column]`&_[@0 HeaderTab]([^`:`:Id^ Id]_[@3 id
|
||
])&]
|
||
[s2; Returns the [* HeaderCtrl`::Column] descriptive structure for the
|
||
column bound to a given source index.&]
|
||
[s4; [%-*C@3 id]-|identifier of the index used as source for the column&]
|
||
[s4; [*/ Return value]-|a reference to the [* HeaderCtrl`::Column] structure&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) const]_[^`:`:HeaderCtrl`:`:Column^ HeaderCtrl`::Column]`&_[@0 HeaderTab](
|
||
[^`:`:Id^ Id]_[@3 id])_[@(0.0.255) const]&]
|
||
[s2; Returns a constant reference to the [* HeaderCtrl`::Column] descriptive
|
||
structure for the column bound to a given source index.&]
|
||
[s4; [%-*C@3 id]-|identifier of the index used as source for the column&]
|
||
[s4; [*/ Return value]-|a constant reference to the [* HeaderCtrl`::Column]
|
||
structure&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:HeaderCtrl^ HeaderCtrl]`&_[@0 HeaderObject]()&]
|
||
[s2; Returns a non`-constant reference to the [* HeaderCtrl] object
|
||
for this table. The reference can be further used to alter properties
|
||
of the table header (tab visibility, header visual mode and so
|
||
on).&]
|
||
[s4; [*/ Return value]-|A non`-constant reference to the table HeaderCtrl
|
||
object.&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) const]_[^`:`:HeaderCtrl^ HeaderCtrl]`&_[@0 HeaderObject]()_[@(0.0.255) co
|
||
nst]&]
|
||
[s2; This is just the constant version of the above method; when
|
||
called on a constant [* ArrayCtrl] reference, it returns a constant
|
||
reference to its underlying HeaderCtrl object which can be then
|
||
used to query additional header information.&]
|
||
[s4; [*/ Return value]-|A constant reference to the table HeaderCtrl
|
||
object.&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 SerializeHeader]([^`:`:Stream^ Stream]`&_[@3 s])&]
|
||
[s2; Serializes all information pertaining to the array header (mainly
|
||
the user`-set column widths). This is equivalent to calling [* HeaderObject().Seria
|
||
lize(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. This function is now deprecated
|
||
in favor of SerializeSettings.&]
|
||
[s4; [%-*C@3 s]-|the [*^topic`:`/`/Core`/src`/Stream`$en`-us^ Stream]
|
||
object to serialize the header to/from&]
|
||
[s0;3 &]
|
||
[s5;K:`:`:ArrayCtrl`:`:SerializeSettings`(`:`:Stream`&`):%- [@(0.0.255) void]_[@0 Seriali
|
||
zeSettings]([^`:`:Stream^ Stream]`&_[@3 s])&]
|
||
[s2; Serializes all information pertaining to the array header (mainly
|
||
the user`-set column widths) and the setting of sort column.
|
||
The main purpose of this function is to allow storing configuration
|
||
to be restored upon opening the dialog or the application for
|
||
the next time.&]
|
||
[s0; &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 SetDisplay]([@(0.0.255) int]_[@3 i], [@(0.0.255) int]_[@3 j],
|
||
[@(0.0.255) const]_[^`:`:Display^ Display]`&_[@3 d])&]
|
||
[s2; Sets the [* Display] object for a given array cell.&]
|
||
[s2;* &]
|
||
[s2; [* Note:] the ownership to the Display object is not transferred
|
||
by this call. The ArrayCtrl stores a mere pointer to it and it
|
||
is the responsibility of the programmer to keep the Display object
|
||
alive as long as necessary (until the array is shut down or the
|
||
cell display changed via another call to SetDisplay). In fact,
|
||
most Display`-based objects don`'t support data copying at all.
|
||
In any case, copying Displays is not a very good practice and
|
||
is very prone to slicing (as most actual Displays are actually
|
||
derived classes with additional data members).&]
|
||
[s2; &]
|
||
[s2; In many cases it would be relatively safe to assume that the
|
||
Display is not used unless the array is actually painted (e.g.,
|
||
when the control is not bound to a parent or when its view has
|
||
zero size), but it is not a very wise practice and it can fail
|
||
in very weird ways under special circumstances (like making screenshots
|
||
or graphical exports from the array control).&]
|
||
[s2; &]
|
||
[s4; [%-*C@3 i]-|zero`-based row index&]
|
||
[s4; [%-*C@3 j]-|zero`-based column index&]
|
||
[s4; [%-*C@3 d]-|display to use&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) const]_[^`:`:Display^ Display]`&_[@0 GetDisplay]([@(0.0.255) int]_[@3 row],
|
||
[@(0.0.255) int]_[@3 col])&]
|
||
[s2; Returns a reference to the Display object for the given array
|
||
cell.&]
|
||
[s4; [%-*C@3 row]-|zero`-based row index&]
|
||
[s4; [%-*C@3 col]-|zero`-based column index&]
|
||
[s4; [*/ Return value]-|a reference to the Display object.&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) const]_[^`:`:Display^ Display]`&_[@0 GetDisplay]([@(0.0.255) int]_[@3 col])
|
||
&]
|
||
[s2; Returns a reference to the Display object for the given array
|
||
column.&]
|
||
[s4; [%-*C@3 col]-|zero`-based column index&]
|
||
[s4; [*/ Return value]-|constant reference to the column Display&]
|
||
[s0;3 &]
|
||
[s5;K:`:`:ArrayCtrl`:`:SetCtrl`(int`,int`,`:`:Ctrl`&`,bool`):%- [^`:`:Ctrl^ Ctrl]`&_[@0 S
|
||
etCtrl]([@(0.0.255) int]_[@3 i], [@(0.0.255) int]_[@3 j], [^`:`:Ctrl^ Ctrl]`&
|
||
[@3 newctrl, ][@(0.0.255) bool][@3 value] `= true)&]
|
||
[s2; Sets an external control to use as the editor for a single array
|
||
cell. Naturally, the same Ctrl object cannot be used as the editor
|
||
for multiple array cells. &]
|
||
[s4; [%-*C@3 i]-|zero`-based row index&]
|
||
[s4; [%-*C@3 j]-|zero`-based column index&]
|
||
[s4; [%-*C@3 newctrl]-|the control to bind to the given array cell&]
|
||
[s4; [%-*C@3 value]-|the value of Ctrl is the value of column; if false,
|
||
value of ctrl is independent&]
|
||
[s4; [*/ Return value]-|[* `*newctrl]&]
|
||
[s0;* &]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) int]_[@0 GetTotalCy]()_[@(0.0.255) const]&]
|
||
[s2; Returns total height of the array (sum of the individual line
|
||
heights for all array rows)&]
|
||
[s4; [*/ Return value]-|array height in pixels&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) int]_[@0 GetLineAt]([@(0.0.255) int]_[@3 y])_[@(0.0.255) const]&]
|
||
[s2; Locates the array row according to given [/ y] coordinate (such
|
||
array row [/ r] for which [* GetLineY(r) <`= y `&`& GetLineY(r) `+
|
||
GetLineCy(r) > y]).&]
|
||
[s4; [%-*C@3 y]-|vertical pixel coordinate to locate&]
|
||
[s4; [*/ Return value]-|zero`-based row number or `-1 when not found&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) int]_[@0 GetClickColumn]()_[@(0.0.255) const]&]
|
||
[s2; Returns column index of the last clicked column in the array.
|
||
If the click happens past the last row of array, returns Null.&]
|
||
[s4; [*/ Return value]-|zero`-based index of the relevant column&]
|
||
[s0;* &]
|
||
[s5;K%- [@(0.0.255) int]_[@0 GetClickRow]()_[@(0.0.255) const]&]
|
||
[s2; Returns column index of the last clicked row in the array. If
|
||
the click happens past the last row of array, returns Null.&]
|
||
[s4; [*/ Return value]-|zero`-based index of the relevant column&]
|
||
[s0; &]
|
||
[s5;K%- [^`:`:Point^ Point]_[@0 GetClickPos]()_[@(0.0.255) const]&]
|
||
[s4; [*/ Return value]-|[* Point(GetClickColumn(), GetClickRow())].&]
|
||
[s0; &]
|
||
[s0;* &]
|
||
[s0; [* Data setting and retrieval]&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 SetCount]([@(0.0.255) int]_[@3 c])&]
|
||
[s2; Sets the number of rows in the array. This extends or trims
|
||
the source matrix as necessary. When using the Ctrl`-based individual
|
||
cell editors, as a side`-effect of this call some controls can
|
||
be constructed or destroyed.&]
|
||
[s4; [%-*C@3 c]-|new row count&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 SetVirtualCount]([@(0.0.255) int]_[@3 c])&]
|
||
[s2; Sets the number of rows in an array with external data. This
|
||
makes sense only 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).&]
|
||
[s2; [* Note:] in the current implementation, selection flags for the
|
||
individual rows are kept in the row objects. Therefore it is
|
||
not very wise to use multiselection for arrays with external
|
||
data, because as soon as the last row is selected, all row storage
|
||
structures are allocated as a side effect to keep the selection
|
||
flags.&]
|
||
[s4; [%-*C@3 c]-|new `'virtual`' number of rows&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) int]_[@0 GetCount]()_[@(0.0.255) const]&]
|
||
[s2; Returns the number of rows in the array. In fact, this returns
|
||
the maximum of the number of `'real`' source matrix rows (as
|
||
set by the SetCount / Add / Insert methods) and the `'virtual`'
|
||
row count (as se by SetVirtualCount). By checking the implementation
|
||
of this method, you can easily find that, simply,&]
|
||
[s2; &]
|
||
[s2; [C int ArrayCtrl`::GetCount() const `{]&]
|
||
[s2; [C -|-|return max(virtualcount, array.GetCount());]&]
|
||
[s2; [C `}]&]
|
||
[s2; &]
|
||
[s4; [*/ Return value]-|Number of rows in the array.&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 Clear]()&]
|
||
[s2; Clears the array source data matrix and sets the virtual row
|
||
count to 0.&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 Shrink]()&]
|
||
[s2; Shrinks the source data array, i.e. reallocates the data to
|
||
the minimum required memory space.&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:Value^ Value]_[@0 Get]([@(0.0.255) int]_[@3 i], [@(0.0.255) int]_[@3 ii])_[@(0.0.255) c
|
||
onst]&]
|
||
[s2; Returns the value at a given location in the source data matrix.&]
|
||
[s4; [%-*C@3 i]-|zero`-based row number&]
|
||
[s4; [%-*C@3 ii]-|zero`-based index ordinal number&]
|
||
[s4; [*/ Return value]-|value at the given location in the source data
|
||
matrix&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:Value^ Value]_[@0 Get]([@(0.0.255) int]_[@3 i], [^`:`:Id^ Id]_[@3 id])_[@(0.0.255) co
|
||
nst]&]
|
||
[s2; Returns the value at a given location in the source data matrix.
|
||
In this version, the source indices are addressed by their identifiers.&]
|
||
[s4; [%-*C@3 i]-|zero`-based row number&]
|
||
[s4; [%-*C@3 id]-|source index identifier&]
|
||
[s4; [*/ Return value]-|value at the given location in the source data
|
||
matrix&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:Value^ Value]_[@0 Get]([@(0.0.255) int]_[@3 ii])_[@(0.0.255) const]&]
|
||
[s2; 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 function returns the `'new`'
|
||
value (the current value of the respective editor control, i.e.
|
||
potentially edited).&]
|
||
[s2; [* Note:] when the cursor row is not set (when [* !IsCursor()]),
|
||
the function fails with an [* ASSERT].&]
|
||
[s4; [%-*C@3 ii]-|zero`-based index ordinal number&]
|
||
[s4; [*/ Return value]-|value at a given location in the cursor row&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:Value^ Value]_[@0 Get]([^`:`:Id^ Id]_[@3 id])_[@(0.0.255) const]&]
|
||
[s2; Returns the value of a given source index at the currently active
|
||
cursor row. This is equivalent to [* Get(GetCursor(), id)].&]
|
||
[s4; [%-*C@3 id]-|source index identifier&]
|
||
[s4; [*/ Return value]-|value at the given location in the cursor row&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:Value^ Value]_[@0 GetOriginal]([@(0.0.255) int]_[@3 ii])_[@(0.0.255) const]&]
|
||
[s2; 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.&]
|
||
[s4; [%-*C@3 ii]-|zero`-based index ordinal number&]
|
||
[s4; [*/ Return value]-|value at the given location in the cursor row&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:Value^ Value]_[@0 GetOriginal]([^`:`:Id^ Id]_[@3 id])_[@(0.0.255) const]&]
|
||
[s2; Returns the `'original`' value (i.e., without any editing changed
|
||
applied) of a given source index at the currently active cursor
|
||
row.&]
|
||
[s4; [%-*C@3 id]-|source index identifier&]
|
||
[s4; [*/ Return value]-|value at the given location in the cursor row&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:Value^ Value]_[@0 GetKey]()_[@(0.0.255) const]&]
|
||
[s2; Returns the value of the current row`'s primary key. This is
|
||
equivalent to [* Get(0)].&]
|
||
[s4; [*/ Return value]-|value at the index #0 in the cursor row&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:Value^ Value]_[@0 GetOriginalKey]()_[@(0.0.255) const]&]
|
||
[s2; Returns the original value of the current 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)].&]
|
||
[s4; [*/ Return value]-|value at the index #0 in the cursor row&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 Set]([@(0.0.255) int]_[@3 i], [@(0.0.255) int]_[@3 ii],
|
||
[@(0.0.255) const]_[^`:`:Value^ Value]`&_[@3 v])&]
|
||
[s2; Sets the value at a given location in the source data matrix.&]
|
||
[s4; [%-*C@3 i]-|zero`-based row number&]
|
||
[s4; [%-*C@3 ii]-|zero`-based index ordinal number&]
|
||
[s4; [%-*C@3 v]-|value to set to the given cell&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 Set]([@(0.0.255) int]_[@3 i], [^`:`:Id^ Id]_[@3 id],
|
||
[@(0.0.255) const]_[^`:`:Value^ Value]`&_[@3 v])&]
|
||
[s2; Sets the value at a given location in the source data matrix.
|
||
&]
|
||
[s4; [%-*C@3 i]-|zero`-based row number&]
|
||
[s4; [%-*C@3 id]-|source index identifier&]
|
||
[s4; [%-*C@3 v]-|value to set to the given cell&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 Set]([@(0.0.255) int]_[@3 ii], [@(0.0.255) const]_[^`:`:Value^ Valu
|
||
e]`&_[@3 v])&]
|
||
[s2; 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.&]
|
||
[s4; [%-*C@3 ii]-|zero`-based index ordinal number&]
|
||
[s4; [%-*C@3 v]-|value to set&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 Set]([^`:`:Id^ Id]_[@3 id], [@(0.0.255) const]_[^`:`:Value^ Value]`&
|
||
_[@3 v])&]
|
||
[s2; Modifies the value at a given location in the cursor row. This
|
||
overloaded version uses the [* Id] identifier to address the relevant
|
||
index.&]
|
||
[s4; [%-*C@3 id]-|index identifier&]
|
||
[s4; [%-*C@3 v]-|value to set&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:Value^ Value]_[@0 GetColumn]([@(0.0.255) int]_[@3 row], [@(0.0.255) int]_[@3 col])_
|
||
[@(0.0.255) const]&]
|
||
[s2; 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 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.&]
|
||
[s4; [%-*C@3 row]-|zero`-based row index&]
|
||
[s4; [%-*C@3 col]-|zero`-based column index&]
|
||
[s4; [*/ Return value]-|value of the given column&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:Value^ Value]_[@0 GetConvertedColumn]([@(0.0.255) int]_[@3 row],
|
||
[@(0.0.255) int]_[@3 col])&]
|
||
[s2; 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`/ArrayCtrl`$en`-us`#`:`:ArrayCtrl`:`:ClearCache`(`)^ C
|
||
learCache] and[* ][*^topic`:`/`/CtrlLib`/src`/ArrayCtrl`$en`-us`#`:`:ArrayCtrl`:`:InvalidateCache`(int`)^ I
|
||
nvalidateCache].&]
|
||
[s4; [%-*C@3 row]-|zero`-based row index&]
|
||
[s4; [%-*C@3 col]-|zero`-based column index&]
|
||
[s4; [*/ Return value]-|the converted cell value&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:Vector^ Vector]<[^`:`:Value^ Value]>_[@0 ReadRow]([@(0.0.255) int]_[@3 i])_[@(0.0.255) c
|
||
onst]&]
|
||
[s2; 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.&]
|
||
[s4; [%-*C@3 i]-|zero`-based row index&]
|
||
[s4; [*/ Return value]-|an array of all source values in the given row&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 Set]([@(0.0.255) int]_[@3 i], [@(0.0.255) const]_[^`:`:Vector^ Vect
|
||
or]<[^`:`:Value^ Value]>`&_[@3 v])&]
|
||
[s2; Modified a given row by setting all source index values to values
|
||
passed in the parameter [/ v].&]
|
||
[s4; [%-*C@3 i]-|zero`-based row index&]
|
||
[s4; [%-*C@3 v]-|an array of values to set to the source data matrix
|
||
row&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 Add]()&]
|
||
[s2; Adds an empty row to the source data matrix.&]
|
||
[s2; [* 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 set the newly added source matrix row to some
|
||
non`-null defaults, you have to modify the relevant cells manually.&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 Add]([@(0.0.255) const]_[^`:`:Vector^ Vector]<[^`:`:Value^ Value]>
|
||
`&_[@3 v])&]
|
||
[s2; Adds a new row at the end of the source data matrix. The [*^topic`:`/`/Core`/src`/Vector`$en`-us^ V
|
||
ector] parameter contains the values to be used to initialize
|
||
the new row of the matrix.&]
|
||
[s4; [%-*C@3 v]-|new matrix row&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 Add]([@(0.0.255) const]_[^`:`:Value^ Value]`&_`[,
|
||
[@(0.0.255) const]_[^`:`:Value^ Value]`&_`]...)&]
|
||
[s2; 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] macro) which takes an arbitrary number of arguments.
|
||
Its arguments are used to initialize the source indices in the
|
||
newly added row.&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 Insert]([@(0.0.255) int]_[@3 i])&]
|
||
[s2; Inserts a new row into the source array. All indices are initialized
|
||
to [* Null] values. The [* InsertValue] property doesn`'t apply;
|
||
if you need to set the newly created row to some non`-trivial
|
||
values, you have to do so manually.&]
|
||
[s4; [%-*C@3 i]-|zero`-based position of the newly created row&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 Insert]([@(0.0.255) int]_[@3 i], [@(0.0.255) const]_[^`:`:Vector^ V
|
||
ector]<[^`:`:Value^ Value]>`&_[@3 v])&]
|
||
[s2; Inserts a new row into the array at a given position. The second
|
||
parameter, [/ v], is used to initialize the source indices of the
|
||
newly created row.&]
|
||
[s4; [%-*C@3 i]-|zero`-based row index&]
|
||
[s4; [%-*C@3 v]-|a vector of values used to initialize the source indices
|
||
of the given row&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 Remove]([@(0.0.255) int]_[@3 i])&]
|
||
[s2; Removes the given source data row.&]
|
||
[s2; [* 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.&]
|
||
[s4; [%-*C@3 i]-|zero`-based index of the row to remove&]
|
||
[s0;* &]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 SwapUp]()&]
|
||
[s2; Exchanges the cursor row with the preceding row, effectively
|
||
moving it up.&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 SwapDown]()&]
|
||
[s2; Exchanges the cursor row with following row, effectively moving
|
||
it down.&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 Sort]([@(0.0.255) const]_[^`:`:ArrayCtrl`:`:Order^ ArrayCtrl`::O
|
||
rder]`&_[@3 order])&]
|
||
[s2; 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 parameter.&]
|
||
[s4; [%-*C@3 order]-|&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 Sort]([@(0.0.255) int]_[@3 from], [@(0.0.255) int]_[@3 count],
|
||
[@(0.0.255) const]_[^`:`:ArrayCtrl`:`:Order^ ArrayCtrl`::Order]`&_[@3 order])&]
|
||
[s2; Sorts a portion of the array using a given ordering predicate.&]
|
||
[s4; [%-*C@3 from]-|zero`-based index of the first row to sort&]
|
||
[s4; [%-*C@3 count]-|number of rows to be sorted&]
|
||
[s4; [%-*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 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 Sort]([@(0.0.255) int]_(`*[@3 compare])([@(0.0.255) const]_Vector
|
||
<Value>`&_v1, [@(0.0.255) const]_Vector<Value>`&_v2))&]
|
||
[s2; Sorts the array rows according to the order defined by the specified
|
||
ordering predicate [/ compare]. This is supposed to be a global
|
||
function returning [* true] 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).&]
|
||
[s4; [%-*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 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 Sort]([@(0.0.255) int]_[@3 ii], [@(0.0.255) int]_(`*[@3 compare])([@(0.0.255) c
|
||
onst]_Value`&_v1, [@(0.0.255) const]_Value`&_v2)_`=_StdValueCompare)&]
|
||
[s2; Sorts the array rows according to the given ordering predicate
|
||
for the source index with a given ordinal number. When not explicitly
|
||
specified, the [* StdValueCompare] function is used as the default
|
||
comparison predicate.&]
|
||
[s4; [%-*C@3 ii]-|zero`-based ordinal number of the source index used
|
||
for sorting&]
|
||
[s4; [%-*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 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 Sort]([^`:`:Id^ Id]_[@3 id], [@(0.0.255) int]_(`*[@3 compare])([@(0.0.255) c
|
||
onst]_Value`&_v1, [@(0.0.255) const]_Value`&_v2)_`=_StdValueCompare)&]
|
||
[s2; Sorts the array rows according to the given ordering predicate
|
||
for the source index with a given identifier. When not explicitly
|
||
specified, the [* StdValueCompare] function is used as the default
|
||
comparison predicate.&]
|
||
[s4; [%-*C@3 id]-|identifier of the source index used for sorting&]
|
||
[s4; [%-*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 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 Sort]()&]
|
||
[s2; Sorts the array according to the default ordering predicate
|
||
for the first source index. This is equivalent to calling [* Sort(0)].&]
|
||
[s0;* &]
|
||
[s5;K:`:`:ArrayCtrl`:`:ColumnSort`(int`,const`:`:ValueOrder`&`):%- [@(0.0.255) void]_[@0 C
|
||
olumnSort]([@(0.0.255) int]_[@3 column], [@(0.0.255) const]_[^`:`:ValueOrder^ ValueOrder]`&
|
||
_[@3 order])&]
|
||
[s2; Sorts by the column. Note that this is different from Sort,
|
||
because the final converted value of column is used (which can
|
||
even be combination of more indexes).&]
|
||
[s0; &]
|
||
[s5;K:`:`:ArrayCtrl`:`:SetSortColumn`(int`,bool`):%- [@(0.0.255) void]_[@0 SetSortColumn](
|
||
[@(0.0.255) int]_[@3 ii], [@(0.0.255) bool]_[@3 descending]_`=_false)&]
|
||
[s2; Sets the `"sorting`" column and calls DoColumnSort. This setting
|
||
is used by DoColumnSort.&]
|
||
[s0; &]
|
||
[s5;K:`:`:ArrayCtrl`:`:ToggleSortColumn`(int`):%- [@(0.0.255) void]_[@0 ToggleSortColumn](
|
||
[@(0.0.255) int]_[@3 ii])&]
|
||
[s2; Similar to SetSortColumn, but if the column is already set,
|
||
descending flag is inverted; otherwise descending flag is set
|
||
to false (indicating ascending sort).&]
|
||
[s0; &]
|
||
[s5;K:`:`:ArrayCtrl`:`:DoColumnSort`(`):%- [@(0.0.255) void]_[@0 DoColumnSort]()&]
|
||
[s2; Sorts the array by sorting column and indicates it by setting
|
||
an image in the header.&]
|
||
[s0; &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 ClearCache]()&]
|
||
[s2; Invalidates the whole [/ convert cache]. The convert cache keeps
|
||
the results of the [* Convert`::Format] method applied to individual
|
||
array data 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 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 InvalidateCache]([@(0.0.255) int]_[@3 i])&]
|
||
[s2; Invalidates a given row in the [/ 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 generate the actualized
|
||
output values.&]
|
||
[s4; [*C@3 i]-|zero`-based row index&]
|
||
[s0;* &]
|
||
[s0; [* Cursor and selection management]&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) int]_[@0 GetSelectCount]()_[@(0.0.255) const]&]
|
||
[s2; Returns the number of selected row within the table.&]
|
||
[s4; [*/ Return value]-|number of selected records (in the range [/ `[0
|
||
.. GetCount()`]])&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) bool]_[@0 IsSelection]()_[@(0.0.255) const]&]
|
||
[s2; Checks whether any rows are selected. Equivalent to [* GetSelectCount()
|
||
> 0].&]
|
||
[s4; [*/ Return value]-|[* true] `= there is at least one selected row,
|
||
[* false] `= there is none.&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 Select]([@(0.0.255) int]_[@3 i], [@(0.0.255) bool]_[@3 sel]_`=_true
|
||
)&]
|
||
[s2; Selects / unselects a given row.&]
|
||
[s4; [%-*C@3 i]-|zero`-based row index&]
|
||
[s4; [%-*C@3 sel]-|[* true] `= add row to the current selection, [* false]
|
||
`= remove row from selection&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 Select]([@(0.0.255) int]_[@3 i], [@(0.0.255) int]_[@3 count],
|
||
[@(0.0.255) bool]_[@3 sel]_`=_true)&]
|
||
[s2; Selects / unselects a given row range.&]
|
||
[s4; [%-*C@3 i]-|zero`-based index of the first row to select / unselect&]
|
||
[s4; [%-*C@3 count]-|number of rows to select / unselect&]
|
||
[s4; [%-*C@3 sel]-|[* true] `= select the rows, [* false] `= unselect the
|
||
rows&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) bool]_[@0 IsSelected]([@(0.0.255) int]_[@3 i])_[@(0.0.255) const]&]
|
||
[s2; Checks whether a given row is selected. For tables without the
|
||
multiselection option, this is equal to the check [* GetCursor()
|
||
`=`= i].&]
|
||
[s4; [%-*C@3 i]-|zero`-based row index to check for selection&]
|
||
[s4; [*/ Return value]-|[* true] `= row is selected, [* false] `= not selected&]
|
||
[s0;3 &]
|
||
[s5;K:`:`:ArrayCtrl`:`:IsSel`(int`)const:%- [@(0.0.255) bool]_[@0 IsSel]([@(0.0.255) int]_[@3 i
|
||
])_[@(0.0.255) const]&]
|
||
[s2; If there is selection in the widget, returns true if [%-*@3 i]
|
||
is selected, otherwise returns true if cursor is at [%-*@3 i].&]
|
||
[s0; &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 ClearSelection]()&]
|
||
[s2; Clears the current selection (unselects all selected rows).&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) bool]_[@0 IsCursor]()_[@(0.0.255) const]&]
|
||
[s2; Checks whether the cursor is within the table. This is equivalent
|
||
to [* GetCursor()_>`=_0].&]
|
||
[s4; [*/ Return value]-|&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) bool]_[@0 SetCursor]([@(0.0.255) int]_[@3 i])&]
|
||
[s2; 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.&]
|
||
[s4; [%-*C@3 i]-|zero`-based row index&]
|
||
[s4; [*/ Return value]-|[* true] `= cursor has been moved, [* false ]when
|
||
not (when committing the previously edited row failed)&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) bool]_[@0 KillCursor]()&]
|
||
[s2; 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 doesn`'t change
|
||
the cursor location.&]
|
||
[s4; [*/ Return value]-|[* true] `= cursor has been moved away from the
|
||
array, [* false] when not (when committing the previously edited
|
||
row failed)&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 CancelCursor]()&]
|
||
[s2; Cancels editation of the row being currently edited. All changes
|
||
made in the individual column editors are rejected.&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) int]_[@0 GetCursor]()_[@(0.0.255) const]&]
|
||
[s2; Returns the current cursor row, `-1 when none.&]
|
||
[s4; [*/ Return value]-|zero`-based cursor row index, `-1 `= cursor
|
||
is not in the array&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 GoBegin]()&]
|
||
[s2; Moves the cursor to the first row in the array (equivalent to
|
||
[* SetCursor(0)]).&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 GoEnd]()&]
|
||
[s2; Moves the cursor to the last array row (equivalent to [* SetCursor(GetCount()
|
||
`- 1)]).&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) int]_[@0 GetCursorSc]()_[@(0.0.255) const]&]
|
||
[s2; Returns the visual vertical position of the cursor row relative
|
||
to the current view. This method, 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.&]
|
||
[s4; [*/ Return value]-|an integer describing the vertical position
|
||
of the cursor row relative to the array view&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 ScCursor]([@(0.0.255) int]_[@3 a])&]
|
||
[s2; Modifies the scrollbar position so that the current cursor row
|
||
appears at a given vertical position relative to the array view.
|
||
By doing the following sequence of operations: [* GetCursorSc],
|
||
then reposition the cursor row, then [* ScCursor], you can achieve
|
||
cursor relocation while maintaining its visual location within
|
||
the array view.&]
|
||
[s4; [%-*C@3 a]-|an integer describing the vertical position of the
|
||
cursor row (typically a number returned by a previous call to
|
||
[* GetCursorSc])&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 CenterCursor]()&]
|
||
[s2; Modifies the scrollbar position so that the current cursor row
|
||
appears in the middle of the array view.&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 ScrollInto]([@(0.0.255) int]_[@3 line])&]
|
||
[s2; 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.&]
|
||
[s4; [%-*C@3 line]-|zero`-based row index of the array row to make visible&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 ScrollIntoCursor]()&]
|
||
[s2; Moves the scrollbar by the least possible amount in order to
|
||
make the cursor row visible. This is equivalent to [* ScrollInto(GetCursor())].&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) int]_[@0 GetScroll]()_[@(0.0.255) const]&]
|
||
[s2; Returns the current vertical scrollbar position.&]
|
||
[s4; [*/ Return value]-|Pixel position of the vertical scrollbar. Position
|
||
0 is at the very top (the top row of the array is fully visible).&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 ScrollTo]([@(0.0.255) int]_[@3 sc])&]
|
||
[s2; Moves the vertical array scrollbar to a given position.&]
|
||
[s4; [%-*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 and
|
||
moving it [/ sc] pixels upwards.&]
|
||
[s0;* &]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) int]_[@0 Find]([@(0.0.255) const]_[^`:`:Value^ Value]`&_[@3 v],
|
||
[@(0.0.255) int]_[@3 ii]_`=_[@3 0], [@(0.0.255) int]_from_`=_[@3 0])_[@(0.0.255) const]&]
|
||
[s2; &]
|
||
[s4; [%-*C@3 v]-|value to look for in the given source index&]
|
||
[s4; [%-*C@3 ii]-|zero`-based ordinal number of the source index to
|
||
search&]
|
||
[s4; [%-*C@3 from]-|zero`-based row index to start the search from&]
|
||
[s4; [*/ Return value]-|zero`-based number of the matched row, `-1 when
|
||
none&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) int]_[@0 Find]([@(0.0.255) const]_[^`:`:Value^ Value]`&_[@3 v],
|
||
[^`:`:Id^ Id]_[@3 id], [@(0.0.255) int]_from_`=_[@3 0])_[@(0.0.255) const]&]
|
||
[s2; 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.&]
|
||
[s4; [%-*C@3 v]-|value to look for in the given source index&]
|
||
[s4; [%-*C@3 id]-|source index identifier&]
|
||
[s4; [%-*C@3 from]-|zero`-based row index to start the search from&]
|
||
[s4; [*/ Return value]-|zero`-based number of the matched row, `-1 when
|
||
none&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) bool]_[@0 FindSetCursor]([@(0.0.255) const]_[^`:`:Value^ Value]`&_[@3 val],
|
||
[@(0.0.255) int]_[@3 ii]_`=_[@3 0], [@(0.0.255) int]_from_`=_[@3 0])&]
|
||
[s2; 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.&]
|
||
[s4; [%-*C@3 val]-|value to look for in the given source index&]
|
||
[s4; [%-*C@3 ii]-|zero`-based ordinal number of the source index to
|
||
search&]
|
||
[s4; [%-*C@3 from]-|zero`-based row index to start the search from&]
|
||
[s4; [*/ Return value]-|zero`-based number of the matched row, `-1 when
|
||
none&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) bool]_[@0 FindSetCursor]([@(0.0.255) const]_[^`:`:Value^ Value]`&_[@3 val],
|
||
[^`:`:Id^ Id]_[@3 id], [@(0.0.255) int]_from_`=_[@3 0])&]
|
||
[s2; 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.&]
|
||
[s4; [%-*C@3 val]-|value to look for in the given source index&]
|
||
[s4; [%-*C@3 id]-|source index identifier&]
|
||
[s4; [%-*C@3 from]-|zero`-based row index to start the search from&]
|
||
[s4; [*/ Return value]-|[* true] `= the desired row was found (and the
|
||
cursor set), [* false] when not&]
|
||
[s0;* &]
|
||
[s0;* &]
|
||
[s0; [* User interface elements]&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 StdBar]([^`:`:Bar^ Bar]`&_[@3 menu])&]
|
||
[s2; The default array local menu. The default local menu consists
|
||
of the standard 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.). &]
|
||
[s4; [*C@3 menu]-|the [* Bar] object representing the menu being generated&]
|
||
[s0;* &]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) bool]_[@0 IsModified]([@(0.0.255) int]_[@3 ii])_[@(0.0.255) const]&]
|
||
[s2; Checks a source index in the currently edited row for changes.&]
|
||
[s4; [%-*C@3 ii]-|zero`-based row index&]
|
||
[s4; [*/ Return value]-|[* true] `= the index has been modified, [* false]
|
||
`= the index is in its original state&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) bool]_[@0 IsModified]([^`:`:Id^ Id]_[@3 id])_[@(0.0.255) const]&]
|
||
[s2; Checks a source index in the currently edited array row for
|
||
changes.&]
|
||
[s4; [%-*C@3 id]-|source index identifier&]
|
||
[s4; [*/ Return value]-|[* true] `= the source index has been modified,
|
||
[* false ]when not&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) bool]_[@0 StartEdit]([@(0.0.255) int]_[@3 d]_`=_[@3 0])&]
|
||
[s2; Opens the current cursor row for editing and sets focus to the
|
||
[/ d]`-th column.&]
|
||
[s4; [%-*C@3 d]-|zero`-based column index&]
|
||
[s4; [*/ Return value]-|[* true] `= editation successfully initiated,
|
||
[* false] when not (when the array is in [* ReadOnly] mode or it
|
||
has no editable columns)&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) int]_[@0 GetEditColumn]()_[@(0.0.255) const]&]
|
||
[s2; Returns the column being currently edited.&]
|
||
[s4; [*/ Return value]-|zero`-based index of the column being edited,
|
||
`-1 `= none&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 DoEdit]()&]
|
||
[s2; Opens the current cursor row for editing.&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 DoInsert]([@(0.0.255) int]_[@3 cursor])&]
|
||
[s2; Begins the GUI insertion of a new row at a given location.&]
|
||
[s4; [%-*C@3 cursor]-|zero`-based location of the new row&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 DoInsertBefore]()&]
|
||
[s2; Begins the GUI insertion of a new row above the current row.&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 DoInsertAfter]()&]
|
||
[s2; Begins the GUI insertion of a new row below the current row.&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 DoAppend]()&]
|
||
[s2; Begins the GUI insertion of a new row at the end of the array.&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) bool]_[@0 DoRemove]()&]
|
||
[s2; Performs the GUI`-based removal of the current cursor row. When
|
||
the [* AskRemove] property is set to [* true] and the user cancels
|
||
the confirmation dialog, the function returns [* false] and the
|
||
current row is not removed.&]
|
||
[s4; [*/ Return value]-|[* true] `= row has been removed successfully,
|
||
[* false] `= user has canceled the row removal&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 DoDuplicate]()&]
|
||
[s2; Duplicates the current row and opens it for editing.&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) void]_[@0 DoSelectAll]()&]
|
||
[s2; Marks all array row as selected.&]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) bool]_[@0 AcceptEnter]()&]
|
||
[s2; 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]
|
||
property is not set, an additional row is added to the array
|
||
and opened for editation.&]
|
||
[s4; [*/ Return value]-|[* true] `= the current row has been successfully
|
||
committed, [* false] when not&]
|
||
[s0;* &]
|
||
[s0; [* Notification callbacks]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:Callback^ Callback]_[@0 WhenLeftClick]&]
|
||
[s2; This callback is called whenever the user clicks an array cell.&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:Callback^ Callback]_[@0 WhenLeftDouble]&]
|
||
[s2; This callback is called whenever the user doubleclicks an array
|
||
cell.&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:Callback1^ Callback1]<Bar`&>_[@0 WhenBar]&]
|
||
[s2; This callback is called whenever the local array menu has to
|
||
be regenerated. By setting this callback to a different function
|
||
/ method you can supply a custom local menu for the array. The
|
||
[* Bar`&] argument is a reference to the menu to be generated.&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:Callback^ Callback]_[@0 WhenEnterRow]&]
|
||
[s2; This callback is called every time the cursor location changes
|
||
to a different row of the array.&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:Gate^ Gate]_[@0 WhenAcceptRow]&]
|
||
[s2; This gate is called every time an 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 &]
|
||
[s5;K%- [^`:`:Callback^ Callback]_[@0 WhenUpdateRow]&]
|
||
[s2; 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 &]
|
||
[s5;K%- [^`:`:Callback^ Callback]_[@0 WhenKillCursor]&]
|
||
[s2; This callback is called whenever the cursor is moved away from
|
||
the table.&]
|
||
[s2; [* Note:] internally, when moving the cursor (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 &]
|
||
[s5;K%- [^`:`:Callback^ Callback]_[@0 WhenCursor]&]
|
||
[s2; This callback is called every time the cursor row number changes
|
||
(either when the cursor is removed from the table, or when it
|
||
has been moved to a different row).&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:Callback^ Callback]_[@0 WhenArrayAction]&]
|
||
[s2; 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 &]
|
||
[s5;K%- [^`:`:Callback^ Callback]_[@0 WhenStartEdit]&]
|
||
[s2; 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 &]
|
||
[s5;K%- [^`:`:Callback^ Callback]_[@0 WhenAcceptEdit]&]
|
||
[s2; This callback is called whenever the currently edited line has
|
||
been committed.&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:Callback^ Callback]_[@0 WhenSelection]&]
|
||
[s2; 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 &]
|
||
[s5;K%- [^`:`:Callback^ Callback]_[@0 WhenCtrlsAction]&]
|
||
[s2; 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.&]
|
||
[s2; &]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) struct]_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 &]
|
||
[s5;K%- [^`:`:ArrayCtrl`:`:IdInfo^ IdInfo]`&_[@0 InsertValue]([@(0.0.255) const]_[^`:`:Value^ V
|
||
alue]`&_[@3 v])&]
|
||
[s2; The method sets up the default source index value for newly
|
||
created rows. This is used only when the row insertion is GUI`-based
|
||
(like using the [* 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.&]
|
||
[s4; [%-*C@3 v]-|default source index value&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl`:`:IdInfo^ IdInfo]`&_[@0 InsertValue]([^`:`:ValueGen^ ValueGen]`&_[@3 g
|
||
])&]
|
||
[s2; 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 [* InserValue] property is not consulted.&]
|
||
[s4; [%-*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.&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl`:`:IdInfo^ IdInfo]`&_[@0 Accel]([@(0.0.255) int]_(`*[@3 filter])([@(0.0.255) i
|
||
nt]))&]
|
||
[s2; This method sets up the source index accelerator function. The
|
||
accelerator is used to quickly locate rows using the keyboard
|
||
key presses.&]
|
||
[s4; [%-*C@3 filter]-|a [* CharFilter ]function for keypress filtering&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl`:`:IdInfo^ IdInfo]`&_[@0 Accel]()&]
|
||
[s2; This method sets up keyboard acceleration for the given source
|
||
index. The `'trivial`' [/ CharConvert] is used for character translation.&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:Value^ Value]_[@0 GetInsertValue]()&]
|
||
[s2; Uses the [* InsertValue] property to generate a new source index
|
||
value (either using a fixed default value or the value creation
|
||
factory).&]
|
||
[s4; [*/ Return value]-|the generated value to be used as the default
|
||
for the newly inserted row.&]
|
||
[s2; &]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) class]_[@0 Column]&]
|
||
[s2; &]
|
||
[s0;%- [%%/ Derived from][%% ]FormatConvert&]
|
||
[s0;3 &]
|
||
[s0;* &]
|
||
[s0;%- The [* ArrayCtrl`::Column] structure describes an output array
|
||
column. Its methods can be used to set or query its properties,
|
||
some of which are also settable via ArrayCtrl methods.&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl`:`:Column^ Column]`&_[@0 Add]([@(0.0.255) int]_[@3 `_pos])&]
|
||
[s2; Adds another source data index to the list of source indices
|
||
used as the data for the given output column.&]
|
||
[s4; [%-*C@3 `_pos]-|zero`-based ordinal number of the source index&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl`:`:Column^ Column]`&_[@0 Add]([^`:`:Id^ Id]_[@3 id])&]
|
||
[s2; Adds another source data index to the list of source indices
|
||
used as the data for the given output column.&]
|
||
[s4; [%-*C@3 id]-|the [* Id] identifier of the source index&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl`:`:Column^ Column]`&_[@0 AddIndex]([^`:`:Id^ Id]_[@3 id])&]
|
||
[s2; 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.&]
|
||
[s4; [%-*C@3 id]-|the identifier for the newly created index&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl`:`:Column^ Column]`&_[@0 AddIndex]()&]
|
||
[s2; Adds another source index to the array and adds it to the list
|
||
of source indices bound to this output column.&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- Column`&_[@0 SetConvert]([@(0.0.255) const]_[^`:`:Convert^ Convert]`&_[@3 c])&]
|
||
[s2; 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.&]
|
||
[s2; [* 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 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 prone to slicing.&]
|
||
[s4; [%-*C@3 c]-|a constant reference to the Convert object to use for
|
||
the given column&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl`:`:Column^ Column]`&_[@0 SetFormat]([@(0.0.255) const]_[@(0.0.255) ch
|
||
ar]_`*[@3 fmt])&]
|
||
[s2; Sets the format string to use for the default value formatting.
|
||
When no Convert object is set for the column, the source value
|
||
is normally passed to the [* NFormat] function where the [/ fmt]
|
||
argument defines the desired formatting pattern.&]
|
||
[s4; [%-*C@3 fmt]-|a [* NFormat]`-compatible formatting pattern&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- Column`&_[@0 SetDisplay]([@(0.0.255) const]_[^`:`:Display^ Display]`&_[@3 d])&]
|
||
[s2; 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`&`)^ A
|
||
rrayCtrl`::SetDisplay] method.&]
|
||
[s2; [* Note:] the ownership to the Display object is not transferred
|
||
by this function. The array merely stores a pointer to the Display;
|
||
it is up to the host application to keep the Display object alive
|
||
as long as necessary.&]
|
||
[s4; [%-*C@3 d]-|a reference to the Display object&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- Column`&_[@0 Edit]([^`:`:Ctrl^ Ctrl]`&_[@3 e])&]
|
||
[s2; Sets up the Ctrl`-based object to use for inline array column
|
||
editing.&]
|
||
[s4; [%-*C@3 e]-|a reference to the editor control object&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- Column`&_[@0 Ctrls]([^`:`:Callback1^ Callback1]<[^`:`:One^ One]<[^`:`:Ctrl^ Ctrl]>`&>
|
||
_factory)&]
|
||
[s2; The methods sets up a factory which the ArrayCtrl uses as necessary
|
||
to create new Ctrl`'s for editing a given column. The argument
|
||
of this function is a callback, which, upon execution, should
|
||
allocate (normally using the [* new] operator) the desired editor
|
||
object and set it to its argument.&]
|
||
[s4; [%-*C@3 factory]-|callback used for new control creation&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl`:`:Column^ Column]`&_[@0 Ctrls]([@(0.0.255) void]_(`*[@3 factory])(On
|
||
e<Ctrl>`&))&]
|
||
[s2; 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.&]
|
||
[s4; [%-*C@3 factory]-|a global function used for editor control creation&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl`:`:Column^ Column]`&_[@0 Ctrls]()&]
|
||
[s2; 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] operator).&]
|
||
[s4; [*C@4 T]-|the desired object editor type &]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- Column`&_[@0 InsertValue]([@(0.0.255) const]_[^`:`:Value^ Value]`&_[@3 v])&]
|
||
[s2; Instructs the ArrayCtrl object to initialize this column in
|
||
newly created rows to the given value [/ v]. (This applies only
|
||
to GUI`-based row insertion 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).&]
|
||
[s4; [%-*C@3 v]-|the value to use as the default for newly inserted
|
||
rows&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- Column`&_[@0 InsertValue]([^`:`:ValueGen^ ValueGen]`&_[@3 g])&]
|
||
[s2; 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.&]
|
||
[s4; [%-*C@3 g]-|a reference to the ValueGen object used for default
|
||
value generation&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl`:`:Column^ Column]`&_[@0 NoClickEdit]()&]
|
||
[s2; Disables entering the editation mode when clicking the respective
|
||
column.&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl`:`:Column^ Column]`&_[@0 Cache]()&]
|
||
[s2; Enables using the cache to store the converted values of this
|
||
column. By default, converted value caching is turned off to
|
||
make cell value conversion entirely dynamic; however, very often
|
||
it is advisable to enable using the cache, especially when the
|
||
conversion is relatively slow (for instance, when the conversion
|
||
queries a database connection to convert the value).&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl`:`:Column^ Column]`&_[@0 Accel]([@(0.0.255) int]_(`*[@3 filter])([@(0.0.255) i
|
||
nt]))&]
|
||
[s2; Sets up the accelerator for the given column. A given filtering
|
||
function is used to convert keystrokes before acceleration.&]
|
||
[s4; [%-*C@3 filter]-|a [* CharConvert]`-style function to use for keystroke
|
||
conversion&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl`:`:Column^ Column]`&_[@0 Accel]()&]
|
||
[s2; Sets up the accelerator for the given column. No keystroke conversion
|
||
is performed.&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:ArrayCtrl`:`:Column^ Column]`&_[@0 Margin]([@(0.0.255) int]_[@3 m])&]
|
||
[s2; Sets up the margin width for the given column. This is equivalent
|
||
to calling the [*^topic`:`/`/CtrlLib`/src`/HeaderCtrl`$en`-us`#`:`:HeaderCtrl`:`:Column`:`:SetMargin`(int`)^ S
|
||
etMargin] method of the underlying [* HeaderTab].&]
|
||
[s4; [%-*C@3 m]-|&]
|
||
[s4; [*/ Return value]-|[* `*this]&]
|
||
[s0;3 &]
|
||
[s0;3 &]
|
||
[s5;K:`:`:ArrayCtrl`:`:Column`:`:Sorting`(const`:`:ValueOrder`&`):%- [^`:`:ArrayCtrl`:`:Column^ A
|
||
rrayCtrl`::Column]`&_Sorting([@(0.0.255) const]_[^`:`:ValueOrder^ ValueOrder]`&_[@3 o])&]
|
||
[s5;K:`:`:ArrayCtrl`:`:Column`:`:Sorting`(int`(`*`)`(const`:`:Value`&a`,const`:`:Value`&b`)`):%- [^`:`:ArrayCtrl`:`:Column^ A
|
||
rrayCtrl`::Column]`&_[@0 Sorting]([@(0.0.255) int]_(`*[@3 c])([@(0.0.255) const]_Value`&_a
|
||
, [@(0.0.255) const]_Value`&_b))&]
|
||
[s5;K:`:`:ArrayCtrl`:`:Column`:`:Sorting`(`):%- [^`:`:ArrayCtrl`:`:Column^ ArrayCtrl`::C
|
||
olumn]`&_[@0 Sorting]()&]
|
||
[s0; &]
|
||
[s2; Activates sorting of ArrayCtrl column by clicking on its header
|
||
tab. Parameterless version uses default Value ordering using
|
||
StdValueCompare.&]
|
||
[s0; &]
|
||
[s5;K:`:`:ArrayCtrl`:`:Column`:`:SortDefault`(`):%- [^`:`:ArrayCtrl`:`:Column^ Column]`&
|
||
_[@0 SortDefault]()&]
|
||
[s2; Sets this column to be initial sorting column (calls SetSortColumn
|
||
of ArrayCtrl).&]
|
||
[s0;3 &]
|
||
[s5;K%- [^`:`:HeaderCtrl`:`:Column^ HeaderCtrl`::Column]`&_[@0 HeaderTab]()&]
|
||
[s2; Returns the [* HeaderCtrl`::Column] object describing the given
|
||
column. This object can be used to set up additional column properties
|
||
(like column width constraints or the [*^topic`:`/`/CtrlLib`/src`/HeaderCtrl`$en`-us`#`:`:HeaderCtrl`:`:Column`:`:Callback WhenAction^ W
|
||
henAction] callback).&]
|
||
[s0; &]
|
||
[s0;3 &]
|
||
[s5;K%- [@(0.0.255) struct]_[@0 Order]&]
|
||
[s0; &]
|
||
[s0; The [* Order] object is used for array row sorting. 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 &]
|
||
[s5;K%- virtual virtual_[@(0.0.255) bool]_[@0 operator()]([@(0.0.255) const]_[^`:`:Vector^ Ve
|
||
ctor]<[^`:`:Value^ Value]>`&_[@3 row1], [@(0.0.255) const]_[^`:`:Vector^ Vector]<[^`:`:Value^ V
|
||
alue]>`&_[@3 row2])_[@(0.0.255) const]_`=_[@3 0]&]
|
||
[s2; 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.&]
|
||
[s4; [%-*C@3 row1]-|an array of source data index values for the first
|
||
of the rows to compare&]
|
||
[s4; [%-*C@3 row2]-|an array of source data index values for the other
|
||
row to compare&]
|
||
[s4; [*/ Return value]-|[* true] `= row1 < row2, [* false] `= row1 >`= row2&]
|
||
[s0; ] |