【aardio】如何让edit控件只能输入数字、小数点及 - 号
2024-10-11 20:41:02
import win.ui; /*DSG{{*/ var winform = win.form(parent=...; text="aardio Form";right=349;bottom=249 ) winform.add( edit={ bottom=128;right=256;left=88;top=104;font=LOGFONT( name="宋体";h=-12 );z=1;text="";edge=1;cls="edit" } ) /*}}*/ //监视传递给edit的所有消息,并针对需要干预的情况做处理 winform.edit.wndproc = function(hwnd,message,wParam,lParam){ //如果有_WM_CHAR消息传给edit if (message == 0x102/*_WM_CHAR*/) { //如果字符的ASCII码大于等于0或等于小于9 if (wParam >= '0'# && wParam <= '9'#) { //返回空,即按系统默认的方法继续(不干预系统的正常流程) return; } //选择wParam参数,针对它的不同值处理 select wParam { //为"-"的ASC码的时候 case '-'# { //如果edit控件中没有任何字符,-只能在最前面 if (#winform.edit.text == 0) //返回空,即按系统默认的方法继续(不干预系统的正常流程) return; } case '.'# { //如果edit控件中匹配不到小数点并且能匹配到数字(因为小数点只能有一个并且必须跟在数字后面) if ( ! string.match(winform.edit.text, "\.") and string.match(winform.edit.text, "\d")) return; } //对于删除键,等控制键不干预不处理 case 0x8/*_VK_BACK*/, 0xD/*_VK_RETURN*/, 0x2E/*_VK_DELETE*/ { return; } } //其它字符录入一概阻断 return 1; } } winform.show(); win.loopMessage();
最新文章
- 【CISP笔记】数据库及应用安全
- 大型博彩公司招聘 .net,DB,tester,android
- Linq的Distinct方法的扩展
- 父Prefab与子prefab问题
- CodeSmith使用总结--创建一个基础模板
- TcpView 查看端口的小工具(推荐)
- Linux运行级别简介
- 压缩空格的函数以及BCD码与ASCII相互转换函数
- ssh_Connection reset by peer报错
- 外观模式 门面模式 Facade 结构型 设计模式(十三)
- thingsboard填坑之路
- dubbo系列一:dubbo介绍、dubbo架构、dubbo的官网入门使用demo
- 文件分享系统(Django)
- VS编程,WPF中两个滚动条 ScrollViewer 同步滚动的一种方法
- [2017BUAA软工]提问回顾
- adc 测量子系统
- node实现缓存
- [UI] 精美UI界面欣赏[3]
- [Linux] 关于Unix哲学
- Duilib 创建不规则窗口(转载)