在页面中调用dialog窗体

由于ondialogreturn()事件只能写在com控件代码内,页面中继承该事件的代码不会被执行。因此在页面事件中调用dialog窗体将无法获取返回值;

而实际使用中,比如按钮按下后,调用dialog窗体,当返回时无法使用ondialogreturn方法(除非在按钮控件内部写ondialogreturn事件的函数,但这样会破坏按钮控件的逻辑,并非所有的按钮都需要ondialogreturn事件);因此我们需要使用ontimer定时器事件来获取返回事件,具体方法如下:

void x1.onclick(){
    settimer(10);
    godialog(83,"是否删除当前文件?");   //注意83是dialog窗体编号
}

void x1.ontimer()    //动作完成,执行动作后续
{
    str text;
    settimer(0);
    text=getretstr();//获取输入的结果值
    echo(text);//此时(text=="YES")表示用户选择了确认,而=="NO"表示用户选择否
}

在需要调用dialog窗体的控件事件中(必须是控件事件),在控件事件中设置一个定时器,然后调用dialog,由于调用后,原页面所有机制挂起,执行dialog页面的消息,执行后,返回原页面后,定时器立即被执行,执行的第一件事即消除当前定时器,然后通过getretstr函数获取dialog的返回值进行后续处理。