wdselect hack
allows initial values for multiple selection
for example: ((2 5);1;0) wdselect ":&.> i.10
wdselect=:3 : 0
0 wdselect y
:
if. 0=#y do.
empty wd 'psel wdselect;pclose' return.
end.
'n s e'=. 3{.x
if. 2=L.y do. 'hdr sel'=. y
else. hdr=. '' [ sel=. y
end.
'r c'=. $,.>sel
sel=. ;sel ,each LF
'c r'=. (12,5*6>r) + >. 4 8 * >. c,r
c=. 205 <. 80 >. (4*#hdr) >. c
r=. 128 <. r
if. (<'wdselect') e. <;._2 wd 'qp' do.
wd 'psel wdselect;pn '",hdr,'";'
else.
wd 'pc wdselect;pn *',hdr
wd 'xywh 4 4 ',":c,r
wd 'cc l0 listbox ws_vscroll rightmove bottommove',s#' lbs_multiplesel'
wd 'setfont l0 ',PROFONT
wd 'cc e0 editm; setshow e0 0'
wd 'xywh ',(":14+c),' 6 36 12;cc ok button leftmove rightmove bottommove;cn "OK";'
wd 'xywh ',(":14+c),' 21 36 12;cc cancel button leftmove rightmove bottommove;cn "Cancel";'
wd 'pas 4 2;pcenter;'
end.
wd 'set e0 *',sel
wd 'set l0 *',sel
wd@('setselect l0 *',":)^:(_1 -.@-: n)"0 n
wd 'setfocus l0'
wd 'pshow'
while. 1 do.
wdq=. wd 'wait;q'
({."1 wdq)=. {:"1 wdq
done=. (<'cancel') e. systype;syschild
button=. systype -: 'button'
ok=. button *. (<syschild) e. ;:'l0 ok enter'
if. ok +. done do.
wd (ok *: e)#'pclose'
ok;".l0_select
break.
end.
end.
)-- AndrewNikitin 2010-07-28 19:45:09
