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控件代码内,页面中继承该事件的代码不会被执行。