【aardio】如何让edit控件只能输入数字、小数点及 - 号

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();

  

猜你喜欢

转载自www.cnblogs.com/lokiey/p/9108469.html
今日推荐