edit控件对应的dialog窗口方案:

首先,我们构建一个标准页面:

其中,输入框的属性:

而在edit控件内部,点击后,会调用以下函数:

//----onmouse方法,用户点击触摸屏上的热区,会调用此方法,其中:
//t:触摸模式: t=0 按下鼠标按钮,相当于触摸屏点击 ;t=1 鼠标移动 ;t=2鼠标抬起
//rn:热区编号,允许一个控件对应多个热区,多个热区靠rn变量识别,对于按钮等整个控件一个热区,可以忽视rn
void onmouse(int t,int rn)
{   //在此书写有关热区处理方法的代码
    automode(bc);
    gradbasecolor(color,bmode);
    if (t==0){
        label(dotm,x1+1,y1+1,xx2-1,y2-1,text,bc,18,1);
    }
    if (t==2){
        box (x1,y1,x2,y2,16);
        label(dotm,x1+1,y1+1,xx2-1,y2-1,text,16,bc,1);
        godialog(dpage,text);
    }
}

可以看到,edit在触摸按下弹起后,调用了语句:

godialog(dpage,text);

其中dpage,就是16号窗体,拼音输入法窗体,于是系统缓存了当前窗体,开始调用第16号窗体:在16号窗体中:

在start()之前,由getretstr 函数获取godialog(dpage,text)调用传来的text的值开始进行拼音输入;当然此界面也可以做成选择、小键盘输入等;

在此dialog窗体的确认键事件中可以调用:

dialogreturn(l1.text);

函数,于是,当前的dialog窗体被关闭,系统会自动复原被调用窗体,并且回调调用dialog窗体控件中的ondialogreturn 事件,比如edit中是这样的:

于是输入的内容传递到edit控件的text属性中;

【注:】ondialogreturn()事件只能写在com控件代码内,页面中继承该事件的代码不会被执行。

备注: