多个组件事件共用一个函数,函数内部通过owner识别组件主体对象。
对于大量性质相同的组件处理时非常有效。
效果:
代码:
import win.ui;
/*DSG{
{*/
var winform = win.form(text="aardio form";right=296;bottom=286)
winform.add(
checkbox={cls="checkbox";text="Checkbox";left=95;top=80;right=175;bottom=122;z=1};
checkbox2={cls="checkbox";text="Checkbox";left=95;top=119;right=175;bottom=148;z=2};
checkbox3={cls="checkbox";text="Checkbox";left=95;top=157;right=175;bottom=185;z=3};
checkbox4={cls="checkbox";text="Checkbox";left=96;top=197;right=176;bottom=215;z=4};
checkbox5={cls="checkbox";text="Checkbox";left=97;top=234;right=177;bottom=256;z=5};
edit={cls="edit";text="Edit";left=16;top=22;right=284;bottom=57;edge=1;multiline=1;z=6}
)
/*}}*/var chks = {}checkcommand = function(id,event){chks[""++id] = owner.checked:nullwinform.edit.text=..string.join(..table.keys(chks),",")
}winform.checkbox.oncommand = checkcommand
winform.checkbox2.oncommand = checkcommand
winform.checkbox3.oncommand = checkcommand
winform.checkbox4.oncommand = checkcommand
winform.checkbox5.oncommand = checkcommandwinform.show();
win.loopMessage();
看明白以上代码后,可以将其处理的更简洁一点:
import win.ui;
/*DSG{
{*/
var winform = win.form(text="aardio form";right=296;bottom=286)
winform.add(
checkbox={cls="checkbox";text="Checkbox";left=95;top=80;right=175;bottom=122;z=1};
checkbox2={cls="checkbox";text="Checkbox";left=95;top=119;right=175;bottom=148;z=2};
checkbox3={cls="checkbox";text="Checkbox";left=95;top=157;right=175;bottom=185;z=3};
checkbox4={cls="checkbox";text="Checkbox";left=96;top=197;right=176;bottom=215;z=4};
checkbox5={cls="checkbox";text="Checkbox";left=97;top=234;right=177;bottom=256;z=5};
edit={cls="edit";text="Edit";left=16;top=22;right=284;bottom=57;edge=1;multiline=1;z=6}
)
/*}}*/var chks = {}for(hwnd,ctrl in winform.eachControlEx("checkbox") ){ctrl.oncommand = function(id,event){chks[""++id] = owner.checked:nullwinform.edit.text=..string.join(..table.keys(chks),",")}
}winform.show();
win.loopMessage();