aardio 文档

aardio 范例: 线程控件测试

web.view 范例

//线程控件 
//web.view 范例: https://www.aardio.com/zh-cn/doc/example/WebUI/web.view/OtherApps/threadCtrl.html
import win.ui;
/*DSG{{*/
var mainForm = win.form(text="线程控件测试";right=846;bottom=497)
mainForm.add(
button={cls="button";text="加载线程控件";left=641;top=455;right=798;bottom=492;db=1;dr=1;z=1};
edit={cls="edit";left=40;top=456;right=568;bottom=488;db=1;dl=1;dr=1;edge=1;z=2}
)
/*}}*/

mainForm.button.oncommand = function(id,event){ 
    mainForm.button.disabled = true;

    /*
    线程控件类库用于自动创建新的线程并执行 loadForm 属性指定的代码以创建子窗口。

    用法:
    1. 拖一个自定义控件到窗体上,设置边框属性为 false ,将类名改为"thread"。
    2. 将控件设计属性 loadForm 指定为可创建子窗口的代码文件路径。

    在被加载的窗口代码中可使用 threadParent 属性访问父线程的父窗口。

    也可能直接在代码中创建线程控件,示例如下:
    */
    mainForm.add(  
        threadCtrl = { 
            cls="thread"; //拖一个自定义控件到窗体上,设置边框属性为 false,将控件类名改为"thread"
            bottom=437;right=840;left=8;top=12;
            dr=1;dl=1;dt=1;db=1;//四个边都保持固定边距
            loadForm = function(threadParent){
                /*
                loadForm 属性可指定创建窗体的函数(必须是纯函数)、代码(或代码文件路径)。
                创建窗体的代码必须遵守多线程规则。
                */
                import win.ui;
                var winform = ..win.form( 
                    right=599;bottom=399;parent=threadParent
                );

                import web.form;
                var wb = web.form(winform); 

                //threadParent 或 winform.threadParent 都可以访问父窗口在当前线程的代理对象
                wb.html =  `<!doctype html><html><meta charset="utf-8"><body>` 
                    + winform.threadParent.text;  

                winform.show()
            };
        }
    )

    mainForm.button.disabled = false;
} 

mainForm.modifyStyle(,0x2000000/*_WS_CLIPCHILDREN*/)
mainForm.onEraseBkgnd  = function(hwnd,message,wParam,lParam){
    mainForm.button.redraw();
    mainForm.edit.redraw();
} 

mainForm.show();
win.loopMessage();
Markdown 格式