原生气泡提示框

By admin at 2020-01-11 • 0人收藏 • 314人看过

感谢 aardio培训群: 圣地 分享代码 , 收藏备用


备注: 在 aardio v25.69版本及以后,校长更新并新增了这个气泡提示功能到aardio中

  1.   win.ui.tooltip 中增加气泡提示

  2.   edit控件增加气泡提示功能

用起来更方便了.,可以偷懒了,哈

另外截取下校长的提示:

气泡功能不支持richedit,plus控件,winform.plus.editable = "edit"这样就可以嵌入edit而不是richedit,不过edit不透明,但保持背景色与plus一致也可以冒充透明。

再次感谢校长的辛苦付出.


新增功能的代码示例:

import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=759;bottom=469)
winform.add(
btnError={cls="button";text="错误";left=280;top=306;right=390;bottom=353;z=2};
btnInfo={cls="button";text="提示";left=539;top=306;right=649;bottom=353;z=4};
btnWarning={cls="button";text="警告";left=410;top=306;right=520;bottom=353;z=3};
edit={cls="edit";text="Edit";left=129;top=179;right=394;bottom=218;edge=1;multiline=1;z=1}
)
/*}}*/

winform.btnError.oncommand = function(id,event){
	winform.edit.showErrorTip("这是标题","这是要显示的错误信息")
}

winform.btnWarning.oncommand = function(id,event){
	winform.edit.showWarningTip("这是标题","这是要显示的错误信息")	
}

winform.btnInfo.oncommand = function(id,event){
        //最后一个参数如果为true就是大图标,这样可以利用智能提示,不需要去记一堆常量了
	winform.edit.showInfoTip("这是标题","这是要显示的错误信息",true)	
}

winform.show();
win.loopMessage();




以下是, 最初实现方式,

GIF.gif

import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=411;bottom=348)
winform.add(
button={cls="button";text="弹出提示";left=77;top=142;right=339;bottom=227;z=2};
edit={cls="edit";text="Edit";left=106;top=63;right=311;bottom=113;edge=1;multiline=1;z=1}
)
/*}}*/

class EDITBALLOONTIP {
 INT cbStruct;
 ustring pszTitle;
 ustring pszText;
 int ttiIcon;
}

var ebt = EDITBALLOONTIP()
ebt.cbStruct = raw.sizeof(EDITBALLOONTIP())
ebt.pszTitle = "错误"
ebt.pszText= "这里输入不正确!"
ebt.ttiIcon =3

winform.button.oncommand = function(id,event){		
	::SendMessageByStruct(winform.edit.hwnd,0x1503/*EM_SHOWBALLOONTIP*/,0,ebt)
}
//https://stackoverflow.com/questions/23892594/show-tooltip-on-invalid-input-in-edit-control
winform.show();
win.loopMessage();

一般使用 msgbox 这个用户操作要点确定,然后回到焦点

这个气球弹出提示可以保持焦点,发现错误后直接输入正确内容


那么有显示就有隐藏:

::SendMessageByStruct(winform.edit.hwnd,0x1504/*EM_HIDEBALLOONTIP*/,0,ebt)


顺便说下这个Icon, 

一个INT类型的值,指定气泡图标的类型。值可以是以下之一:


意义
TTI_ERROR显示一个错误图标 = 3
TTI_INFO显示一个信息图标 = 1
TTI_NONE不显示图标 = 0
TTI_WARNING显示警告图标 = 2
TTI_INFO_LARGE显示一个大信息图标 = 4
TTI_WARNING_LARGE显示一个大警告图标 = 5
TTI_ERROR_LARGE显示一个大错误图标 = 6


其他细节可以查阅msdn

https://docs.microsoft.com/zh-cn/windows/win32/api/commctrl/ns-commctrl-editballoontip?redirectedfrom=MSDN

1 个回复 | 最后更新于 2020-01-12
2020-01-12   #1

 该功能已经添加到标准库了,用法更简单了:

//文本框汽泡提示
import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=759;bottom=469)
winform.add(
btnError={cls="button";text="错误";left=280;top=306;right=390;bottom=353;z=2};
btnInfo={cls="button";text="提示";left=539;top=306;right=649;bottom=353;z=4};
btnWarning={cls="button";text="警告";left=410;top=306;right=520;bottom=353;z=3};
edit={cls="edit";text="Edit";left=129;top=179;right=394;bottom=218;edge=1;multiline=1;z=1}
)
/*}}*/

winform.btnError.oncommand = function(id,event){
    winform.edit.showErrorTip("这是标题","这是要显示的错误信息")
}

winform.btnWarning.oncommand = function(id,event){
    winform.edit.showWarningTip("这是标题","这是要显示的错误信息")    
}

winform.btnInfo.oncommand = function(id,event){
    winform.edit.showInfoTip("这是标题","这是要显示的错误信息",true)  
}

winform.show();
win.loopMessage();

登录后方可回帖

登 录
信息栏
本站永久域名:HtmLayout.Cn
纯私人站,当笔记本用的,学到哪写到哪,目前正在学aardio+halcon机器视觉.
本 站 主 站:Stm32cube中文网
Aardio 官方站:Aardio官方
Aardio最新功能:Aardio官方更新日志
aardio在线手册Aardio在线手册
C大Aardio论坛:Aar爱好者论坛
简码教程网:简码编程
AARDIO语言QQ群:70517368
赞助商:才仁机械
下载站:非凡软件站
Loading...