|
自带的inputbox显示和表现不符合预期,于是自己对标准库进行了一些修改,感谢作者开源了标准库,可以深入学习。
然后吧修改的inputbox库加入用户库,作为用户库来调用。代码智能感知部分未作深入探究,语法提示可能会有问题。
本文知识要点:inputbox,修改标准库,标准库的修改,用户库。
主文件代码如下:
- import win.ui;
- import inputbox2;//使用之前一定要先导入
- /*DSG{{*/
- var winform = win.form(text="测试用户库的inputbox";right=515;bottom=252)
- winform.add(
- button={cls="button";text="打开inputbox";left=147;top=100;right=351;bottom=160;z=1}
- )
- /*}}*/
- //自定义的inputbox初始化函数,避免oncommand函数内凌乱
- create_inputbox=function(){
- inputbox = inputbox2.inputBox(mainForm.hwnd,true)
- inputbox.text = "用户登录"
- inputbox.info.text = "请输入密码:"
- inputbox.input.text = "";
- inputbox.input.passwordChar="*"
- //inputbox.setPos(,,800,600)
- //如果设定窗体大小导致显示效果不佳,可以到用户库内修改布局
- //inputbox实质上是一个窗体,可以根据对窗体的需求自行修改和调用所需函数
- inputbox.center()
- return inputbox;
- }
- winform.button.oncommand = function(id,event){
- while(true){
- pass=create_inputbox().doModal();
- if(pass=="123"){//设定密码为123
- break ;
- }
- elseif(pass==null){
- win.msgbox("没有输入密码错误,登陆失败。","提示")
- break ;
- }
- else{
- var msg=win.msgbox("密码错误,请重新输入。密码为123.","提示",0x3/*_MB_YESNOCANCEL*/+0x20/*_MB_ICONQUESTION*/)
- }
- }
- win.msgbox(pass);
- }
- winform.show();
- win.loopMessage();
复制代码
用户库的用法:将下面的代码存为文件名为 inputbox2.aardio 的代码文件,添加到 工程资源管理器 里 用户库 文件夹(实际文件夹名为lib)中。
用户库代码如下:
- //inputBox2 优化的输入框
- import win.ui;
- namespace inputbox2;
- class inputBox{
- ctor(parent,password){
-
- this = ..win.form(
- cls="";
- text="aardio form";
- right=442;bottom=137;
- border="dialog frame";
- max=false;min=false;
- mode="popup";sysmenu=1;
- parent=parent;
- )
- this.add(
- btnCancel={
- cls="button";text="取消";
- left=349;top=90;right=423;
- bottom=118;db=1;dr=1;z=2};
- btnOk={
- cls="button";text="确定";
- left=256;top=90;right=330;
- bottom=118;db=1;dr=1;
- style=1;z=1
- };
- info={
- cls="static";text="请输入";
- left=20;top=20;right=350;
- bottom=38;dl=1;dt=1;notify=1;
- transparent=1;z=4
- };
- input={
- cls="edit";
- left=20;top=46;right=423;
- bottom=71;dl=1;dt=1;
- edge=1;password=1;z=3
- }
- )
- this.onInitDialog = function(hwnd,message,wParam,lParam){
- this.input.setFocus();
- };
-
- this.btnCancel.oncommand = function(id,event){
- this.endModal();
- };
-
- this.btnOk.oncommand = function(id,event){
- this.endModal( this.input.text );
- };
-
- this.onOk = function(){
- this.endModal( this.input.text );
- };
-
- this.onCancel = function(){
- this.endModal();
- };
- }
- }
-
- /***intellisense()
- inputbox2.inputBox() = 创建一个输入对话框
- inputbox2.inputBox(__/*可选在此指定父窗口*/) = 创建一个输入对话框
- inputbox2.inputBox(0__/*可选在此指定父窗口*/,true) = 创建一个输入密码的对话框
- !inputBox.doModal() = 弹出输入对话框\n该函数返回用户输入的值\n取消则返回null空值
- !inputBox.onInitDialog = @.onInitDialog = function(hwnd,message,wParam,lParam){\n ??.center()__/*输入框初始化完成触发该函数*/\n}
- !inputBox.center() = 居中显示
- !inputBox.info = !edit.
- !inputBox.input = !edit.
- !inputBox.text = 输入框标题
- !inputBox.setPos(.(x,y,宽,高,插入位置,参数) = 调整窗口位置或排序\n所有参数可选
- !inputBox.getPos() = 返回相对坐标,宽,高
- !inputBox.topmost()=窗体始终最前
- !inputBox.topmost(false)=取消窗体始终最前
- !inputBox.modifyStyle(.(remove,add) = 如果指定第三个参数,则使用此参数调用::SetWidnowPos
- !inputBox.modifyStyleEx(.(remove,add) = 如果指定第三个参数,则使用此参数调用::SetWidnowPos
- !inputBox.setInterval = @var tmId = ??.setInterval( \n 1000,\n function(id){\n /*定时回调函数*/\n } \n)
- !inputBox.clearInterval(__/*请输入ID*/) = 删除定时器
- !inputBox.changeInterval(__/*请输入ID*/,1000) = 重新设定定时器的延时时间
- !inet_downBox.setTimeout(.(函数名,延时,其他参数) = 延时执行函数
- ?inputbox2.inputBox = !inputBox.
- end intellisense***/
复制代码
显示效果和之前差不多,只是做了一些细微的修改,就不上图了。 |
|