aardio窗体应用程序内置自定义漂亮消息提示框

职场菊菊子 2024-04-29 10:19:47

aardio是一门历史悠久的国产编程语言。17年来,作者一直默默耕耘,不断给aardio添加新功能,封装新特性。

我们知道Windows应用程序自带的消息对话框样式不太好看。

aardio考虑到了用户对于漂亮消息提示框的诉求,于是给我们内置了一个还算漂亮的消息对话框,用户可以照葫芦画瓢,定义自己的消息对话框。

消息对话框效果

先睹为快,看看aardio自定义的消息对话框效果。每个对话框左侧的icon不一样,icon可以自定义。每个消息框可以添加一个timeout参数,消息框超时后自动关闭。当前总共内置了以下几种风格消息对话框,ok, error, info, warn, smile, frown, great, ask.

如何使用消息对话框

aardio消息对话框封装在win.dlg.message。使用的时候需要导入该包,aardio会自动为当前主窗口安装msgInfo,msgAsk,msgErr等msg前缀的消息框函数。这类消息框函数有两个参数,msg(必填)和timeout(可选)。简单看看消息框函数源码实现:

msgInfo = function(str,timeOut){ message(owner).info( str,timeOut ); }; msgErr = function(str,timeOut){ message(owner).err( str,timeOut ); }; msgWarn = function(str,timeOut){ message(owner).warn( str,timeOut ); }; msgGreat = function(str,timeOut){ message(owner).great( str,timeOut ); }; msgSmile = function(str,timeOut){ message(owner).smile( str,timeOut ); }; msgFrown = function(str,timeOut){ message(owner).frown( str,timeOut ); }; msgOk = function(str,timeOut){ message(owner).ok( str,timeOut ); }; msgSorry = function(str,timeOut){ message(owner).sorry( str,timeOut ); }; msgAsk = function(str){ return message(owner).ask( str ); };

然后我们就可以调用上述的msg函数。内置的几个消息框左侧的图标不一样,其他样式都一样。看看一个简单的案例,使用上述msg消息框函数。

import fonts.fontAwesome;import win.ui;import win.dlg.message;/*DSG{{*/var winform = win.form(text="aardio form";right=759;bottom=469)winform.add(button={cls="button";text="Button";left=111;top=362;right=262;bottom=390;z=3};)/*}}*/winform.button.oncommand = function(id,event){ winform.msgSmile("smile"); winform.msgGreat("great", 1000); // 添加timeout自动关闭,单位为毫秒 winform.msgFrown("frown"); winform.msgOk("ok"); winform.msgInfo("info"); winform.msgSorry("sorry"); winform.msgErr("error"); winform.msgAsk("ask"); winform.close();}winform.show();return win.loopMessage();消息对话框实现原理

翻看源码,很容易看到自定义的消息对话框本质上就是一个单独的窗体,该窗体包含两个plus控件,一个负责左侧图标显示,另一个负责展示消息。

var winform = ..win.form(text="info";right=831;bottom=679;bgcolor=this.bgcolor;border="none";exmode="toolwindow";min=false;parent=parentForm) if(!winform){ return; } winform.add( icon={cls="plus";text=this.icon;left=10;top=10;right=80;bottom=62;color=this.iconColor;dl=1;dt=1;font=LOGFONT(name='FontAwesomeDlg';h=-37);z=1}; message={cls="plus";text=msg;left=80;top=24;right=777;bottom=654;align="left";color=this.textColor;dl=1;dr=1;dl=1;dt=1;db=1;font=LOGFONT(h=-16);valign="top";z=2}; )

我们也可以新建一个win.dlg.message,然后自定义消息属性,就可以做出符合自己项目的消息对话框了。下面是一个可以自定义设置的属性

parent = 父窗口\n信息框显示在父窗口中间,\n并在信息框关闭前禁用父窗口cancelLabel = 取消按钮文本,支持fontAwesome图标okLabel = 确定按钮文本,支持fontAwesome图标icon = Font Awesome字体图标,请使用_FA_前缀常量指定;iconColor = 图标颜色,GDI数值格式;textColor = 文本颜色,GDI数值格式bgcolor = 窗口背景颜色,GDI数值格式fadeInterval = 淡出淡出动画时间间隔,设为0不显示动画fadeDuration = 淡出淡出动画时长create() = !winDlgMessageForm.create(.(显示信息,是否显示按钮,是否显示进度条) = 创建信息框,返回窗体对象,\n如果选择显示按钮则不会同时显示进度条\n所有参数都是可选参数doModal(.(显示信息,是否显示按钮) = 创建信息框,并显示为模态窗口show(.(显示信息) = = 创建信息框,并显示为非模态窗口info(__) = 显示提示框,\n可选使用参数@2指定延时自动关闭提示框的毫秒数\n\n如果指定参数@3或更多参数,\n则使用这些参数调用 string.format 格式化参数@1warn(__) = 显示警告提示框,\n可选使用参数@2指定延时自动关闭提示框的毫秒数ok(__) = 显示正确提示框,\n可选使用参数@2指定延时自动关闭提示框的毫秒数err(__) = 显示错误提示框,\n可选使用参数@2指定延时自动关闭提示框的毫秒数great(__) = 显示竖大拇指图标提示框,\n可选使用参数@2指定延时自动关闭提示框的毫秒数sorry(__) = 显示倒竖大拇指图标提示框,\n可选使用参数@2指定延时自动关闭提示框的毫秒数 smile(__) = 显示微笑图标提示框,\n可选使用参数@2指定延时自动关闭提示框的毫秒数 frown(__) = 显示皱眉图标提示框,\n可选使用参数@2指定延时自动关闭提示框的毫秒数 ask(__) = 显示询问提示框\n用户按确定或回车返回true,其他返回false或nullbuttonStyle = @.buttonStyle = { color = { hover = 0xF0FFFFFF; active = 0x30FFFFFF; default = 0x90FFFFFF; } border = { default = {width=0;} hover = { bottom = 1;color= 0xF0FFFFFF; } focus = { bottom = 1;color= 0xF0FFFFFF; } active = { bottom = 1;color= 0x30FFFFFF; } } }titlebarStyle = @.titlebarStyle = { color = { hover = 0xffffffff; active = 0x33ffffff; default = 0x66ffffff; }}
0 阅读:1

职场菊菊子

简介:感谢大家的关注