让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控件。

终于,我找到了突破口:

14.PNG

(上面的图片来自于网页: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;

运行一下,试试看:

15.PNG

成功!

3 个回复 | 最后更新于 2021-08-13
2021-08-12   #1

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

2021-08-12   #2

2021-08-12   #3

https://www.chengxu.xyz/t/175

以前写过

还有, 你这样弄着玩可以, 搞那么多控件, 怕不是要崩

登录后方可回帖

登 录
信息栏
 私人小站

本站域名

ChengXu.XYZ

投诉联系:  popdes@126.com



快速上位机开发学习,本站主要记录了学习过程中遇到的问题和解决办法及上位机代码分享

这里主要专注于学习交流和经验分享.
纯私人站,当笔记本用的,学到哪写到哪.
如果侵权,联系 Popdes@126.com

友情链接
Aardio官方
Aardio资源网


才仁机械


网站地图SiteMap

Loading...