重写了一个msgbox库 , 代码参考了win.dlg.message库

By admin at 2021-08-12 • 0人收藏 • 297人看过

系统自带的msgbox挺简单好用, 但是不能设置弹出位置 , 有时候用起来会挡住后面一些重要的地方,

aardio里还有一个用plus写的win.dlg.message信息对话框库, 界面效果类似html弹窗.

有时候我们需要弹窗里响应[空格键]和[回车键]/[tab键]消息, 这样就需要对win.dlg.message库代码进行改造下, 所以我把这个库的代码复制出来进行了简单的修改, 使它能响应按键并且可以设置弹出位置,  用来适合当前的项目.


image.png


库 msgboxTest.aardio 代码如下:

import win.ui;
class msgBoxTest{
	ctor( parent ){
		this.parent = parent : ..win.getActive();
	};
	create = function(msg){ 
		if(!#msg) error("文本不能为空",2);
		var parentForm = this.parent;
		if(parentForm){
			if( !..win.isWindow(this.parent[["hwnd"]] || this.parent) ){
				parentForm = ..win.getActive() || ..mainForm[["hwnd"]];
			}	
		}

		var winform = ..win.form(text="提示";right=251;bottom=120;border="thin";max=false;min=false;mode="popup";sysmenu=false;parent=parentForm)
		if(!winform){
			return;
		}

		winform.add(
			btnCancel={cls="button";text="取消";left=127;top=83;right=248;bottom=116;tabstop=1;z=2};
			btnOK={cls="button";text="下一步";left=4;top=83;right=125;bottom=116;default=1;tabstop=1;z=1};
			message={cls="static";text=msg;left=0;top=0;right=252;bottom=78;align="center";bgcolor=0;color=65302;font=LOGFONT(h=-19);z=3}
		)  
		..win.setFocus(winform.btnOK.hwnd);
		winform.btnOK.oncommand = function(id,event){
			winform.endModal(true);
		} 
		winform.btnCancel.oncommand = function(id,event){
			winform.endModal(false);
		}

		return winform;	
	}
	show = function(msg,sw){
		if(!#msg) error("文本不能为空",2);
		var dlg = this.create(msg);
		if(dlg) return dlg.show(sw);
	}
	doModal = function(msg,posx,posy){
		if(!#msg) error("文本不能为空",2);
		var dlg = this.create(msg);
		if(!dlg) return;
		if(posx !=null and posy!=null)
		dlg.setPos(posx,posy);
		return dlg.doModal();
	}
	Test = function(msg,posx,posy){
		return this.doModal(msg,posx,posy);
	}
}

msgBoxTest.install = function(){
	..win.ui.ctrl.metaProperty.mixin({
		msgTest = function(str,posx,posy){
			return msgBoxTest(owner).Test( str,posx,posy ); 
		}; 
	})
}
msgBoxTest.install();

使用的时候只需要简单的调用即可.

代码示例如下:

import console
console.open()

import msgBoxTest;
mainForm.button.oncommand = function(id,event){
	console.log( mainForm.msgTest("XXX操作完成了吗?",300,500) );
}


工程下载:

msgboxDemo.zip


登录后方可回帖

登 录
信息栏
本站永久域名:HtmLayout.Cn
纯私人站,当笔记本用的,学到哪写到哪,目前在学aardio+halcon机器视觉.
加入本站专享群:783804676
AARDIO语言QQ大群:70517368
Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
C大Aardio论坛:Aar爱好者论坛
本 站 主 站:Stm32cube中文网
Sciter中文在线文档Sciter在线学习文档
赞助商:才仁机械




Loading...