【第三章3.1】自定义控件【custom】 -- 定义控件类 -- ☆ aardio 中最重要的控件☆

贴主:admin 发贴:2024-07-28 11:03 浏量:27

自定义控件custom, 再在界面控制 的最后一个

//定义控件类

/*
1、拖一个 custom 控件到窗口上。
2、把 custom 控件的类名改为你创建的控件类名,例如 "myCtrl"
3、将窗口编辑器切换到代码模式,并在创建窗口前添加 import win.ui.ctrl.myCtrl 导入该控件。
4、在用户库中 右键新建【窗口类库】,例如 win.ui.ctrl.myCtrl
*/

//图文教程: https://mp.weixin.qq.com/s/s95LlTis3lrVeD8EYNZD0w
//这里直接定义控件类,实际使用建议写到用户库里
import inet.http;
import win.ui;

class win.ui.ctrl.myCtrl{
	ctor( parent,tParam ){
		/*
		parent 参数为父窗口
		tParam 参数为创建控件的所有参数
		*/
		this = ..win._form(border="none";exmode="none";mode="child";parent=parent;right=750;bottom=387;tParam=tParam)
		this.add(
			plus={cls="plus";left=-5;top=2;right=751;bottom=393;db=1;dl=1;dr=1;dt=1;repeat="scale";z=1}
		)	
		
		/*
		控件类只要在 this.hwnd 里存在有效的窗口句柄就表示创建子窗口成功。
		win.form 创建成功会将句柄保存在 this.hwnd 中。
		
		如果控件类构造函数返回的对象不存在 this.hwnd ,
		那么 aardio 会使用 tParam.cls 的类名创建控件,所以也可以在这里指定有效的控件类名,
		例如 win.ui.ctrl.listview 的构造函数里就是这样写:
		tParam.cls = "SysListView32"; 
		注意这里无论怎样修改 tParam.cls,控件创建成功后都会改回上面参数传入的原始 tParam.cls 的值。
		*/
	};
}
/*DSG{{*/
var winform = win.form(text="使用 custom 控件加载自定义控件类";right=836;bottom=513)
winform.add(
custom={cls="myCtrl";text="自定义控件";left=3;top=-1;right=467;bottom=316;db=1;dl=1;dr=1;dt=1;z=1}
)
/*}}*/

winform.show();

//这时候 winform.custom 就是 win.ui.ctrl.myCtrl 的实例对象.
winform.custom.plus.background = "http://download.aardio.com/v10.files/demo/images/custom.gif";

/*
不需要用 import 语句导入标准库 win.ui.ctrl 名字空间下的自带控件,
aardio 会按需导入这些标准库控件,但是如果是自己添加的自定义控件就要提前导入。
如果将 win.ui.ctrl.myCtrl 写到外部类库里,那就一定要用 import win.ui.ctrl.myCtrl 提前导入该控件类。
*/

win.loopMessage();



拆分为主窗口 和 用户类库 

主窗口代码:

import win.ui;
import win.ui.ctrl.myCtrl0; // 此处的 win.ui.ctrl.myCtrl 是写到外部类库里,那就一定要用 import win.ui.ctrl.myCtrl 提前导入该控件类
import inet.http;   // 下面会用到网络图片,需要导入此类访问网络
/*DSG{{*/
var winform = win.form(text="aardio form";right=759;bottom=469)
winform.add(
custom={cls="myCtrl0";text="自定义控件";left=130;top=69;right=658;bottom=325;db=1;dl=1;dr=1;dt=1;z=1}
)
/*}}*/

winform.custom.plus.background = "https://www.4kbizhi.com/d/file/2024/07/22/small073311H4JUq1721604791.jpg";
 
winform.show();
win.loopMessage();
return winform;

用户窗口类库【myCtrl0】代码

import win.ui;
namespace win.ui.ctrl;
class myCtrl0{
	ctor(parent,tParam){
	/*DSG{{*/
	this = ..win.form(text="aardio form";right=759;bottom=469;border="none";parent=parent)
	this.add(
	plus={cls="plus";left=58;top=59;right=640;bottom=391;z=1}
	)
	/*}}*/
	
	};
}



if( !owner ) ..win.ui.ctrl.myCtrl0().doModal();
/**intellisense()
win.ui.ctrl.myCtrl0() = 窗口类\n!winform.
end intellisense**/


相关回复


    暂无评论!

发表回复