让winform创建多个button控件
By
o3o_o3o_o3o
at 2021-08-12 • 1人收藏 • 1022人看过
如果有一天,一个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