让winform创建多个button控件
By
o3o_o3o_o3o
at 2021-08-12 • 1人收藏 • 1140人看过
如果有一天,一个aardio的程序上面需要在窗口上创建2021个button控件,你会怎么创建?
1.一个一个地搞出来。
但是这样是不可取的,因为这样的话代码太多、太麻烦;一行一行密密麻麻的代码会显得非常乱。
2.用循环语句。
我最初构想的的代码:
import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=759;bottom=469;maximize=1)
winform.add()
/*}}*/
//winform
import math;
var dx,dy,cx,cy = win.getPos(win.getDesktop());
for(i=1;2021;1){
winform.add(
button = {
cls="button";bottom=30;right=100;left=0;top=0;z=1;text="Button"+i;id=123;autoResize=false;
};
)//创建button控件
winform.button.setPos(math.random(1,cx),math.random(1,cy))//设置随机位置
}
winform.show(true);
win.loopMessage();
return winform;可是,我将它运行了之后,虽然效果非常的炫酷,但是还没有达到预期的效果:
我思考了一下,可能是因为它们的控件名称都相同,所以只会留下最后一个被修改的。这么简单的问题不就是改一下控件名称的代码不就行了吗?
import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=759;bottom=469;maximize=1)
winform.add()
/*}}*/
//winform
import math;
var dx,dy,cx,cy = win.getPos(win.getDesktop());
for(i=1;2021;1){
winform.add(
button+i = {
cls="button";bottom=30;right=100;left=0;top=0;z=1;text="Button"+i;id=123;autoResize=false;
};
)//创建button控件
winform.button+i.setPos(math.random(1,cx),math.random(1,cy))//设置随机位置
}
winform.show(true);
win.loopMessage();
return winform;But,它报错了。它把+i也算进空间名称里了,但是空间名称里不允许出现像+一样的符号的。这根本无法在控件名称的后面加上一个东西,因为winform.add()函数里面的控件名称不是任何类型的常量或者变量。我思索了很久,怎么用循环语句创建2021个button控件。
终于,我找到了突破口:

(上面的图片来自于网页:aardio之特殊符号用法大全 - 教程专版 - aardio官方社区 - Powered by Discuz!)
import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=759;bottom=469;maximize=1)
winform.add()
/*}}*/
//winform
import math;
var dx,dy,cx,cy = win.getPos(win.getDesktop());
for(i=1;2021;1){
winform.add(
["button"+i] = {
cls="button";bottom=30;right=100;left=0;top=0;z=1;text="Button"+i;id=123;autoResize=false;
};
)
winform["button"+i].setPos(math.random(1,cx),math.random(1,cy))//设置随机位置
}
winform.show(true);
win.loopMessage();
return winform;运行一下,试试看:

成功!
3 个回复 | 最后更新于 2021-08-13
登录后方可回帖

https://bbs.aardio.com/forum.php?mod=viewthread&tid=11257