
代码改编自风行者的教程,采用了非常规方式定义按钮和事件函数,不一定适合初学者,仅供参考。
import win.ui;
/*DSG{{*/
var winform = win.form(text="计算器";right=271;bottom=374;border="dialog frame";max=false)
winform.add(
edit={cls="edit";left=12;top=11;right=260;bottom=52;align="right";edge=1;font=LOGFONT(h=-19);multiline=1;z=1}
)
/*}}*/
var strs = string.split("C%^+789-456*123/0.⌫=","");
for(i=0;19;1){
winform.addCtrl(
['btn'++i] = {
cls="button";text=i===2?"**":strs[i+1];autoResize=false;font=LOGFONT(h=-19);z=1;
left=i%4*66+12;right=i%4*66+62;top=math.floor(i/4)*60+70;bottom=math.floor(i/4)*60+120;
oncommand = function(id,event){
winform.edit.text = owner.text==="="?eval(winform.edit.text):
owner.text==="C"?"":
owner.text==="⌫"?..string.left(winform.edit.text,-2):
winform.edit.text++owner.text;
}
};
)
}
winform.show();
win.loopMessage();