对话框中的附加变量和结构:
对话框的函数:
用函数 Set_KrlDlg( ) 可生成一则对话信息。 这意味着,该信息提示被传递到信息缓存器中并显示在单独的一个带有按键的信息提示窗口中。
DEFFCT Extfctp Int Set_KrlDlg(MyQuestion:OUT, Parameter[ ]:OUT, Touchkey[ ]:OUT, Option:OUT)
MyQuestion: 一般信息提示的结构 (发送人、信息号、问题文本)
Parameter[ ]: 通配符 %1、%2 和 %3 的 3 个可能参数栏。即使不使用通配符,也必须始终代入全部 3 个参数。
Touchkey[ ] : 7 个可能按键标注结构。 即使不使用这些按键,也必须始终代入全部 7个按键。
Option (选项): 一般信息提示选项的结构 (预进停止、记录在信息提示数据库中、程序复位或选择语句时连带删除信息提示)
对话的返回值:对话的“句柄 (handle)”。用该“句柄”可检查是否成功生成了对话。同时,“ 句柄 ” 也用作信息缓存器中的识别号。
handle == -1: 不能生成对话 (例如因为另一则对话仍处于激活状态、还未得到回答或信息缓存器已过满)
handle > 0 : 对话已成功生成并以相应的识别号保存在信息缓存器中管理。
用函数Exists_KrlDlg( ) 可检查一则特定的对话是否还存在。即检查该信息提示是否还在内部信息缓存器中。如果对话得到应答,则此功能会说明按下的是哪个按键。
例如:
DEFFCT BOOL Exists_KrlDlg(INT nHandle:IN,INT Answer:OUT)
DECL INT nHandle, answer
nHandle: 由函数 “Set_KrlDlg(…) ” 提供的对话句柄.
Answer : 有关哪个按键被按动的反馈。这样,被定义为 “Button[1]”的按键 1 便返回值 1.
函数不等到对话得到回答,而是仅仅在缓存器中查找带有该句柄的对话。因此,KRL 程序中的询问必须循环进行,直至对话得到回答或被删除。
例如:
DECL Bool P1
P1=Exists_KrlDlg(nHandle, nAnswer
present == TRUE: 该对话还存在于信息缓存器中
present == FALSE : 该对话不再位于信息缓存器中 (即已得到回答)
Answer (回答)现在以按下的按键的值返回写入。 有效值为 1 到 7,取决于编程设定的按键号。
变成事例:
在USR_S.src程序中建立程序”K_msg”
反馈值监控:
--------------------------------------------------------------
例如:
生成EMZ的选择框,选择几号焊钳
DEFFCT INT SetDlgMsg()
DECL KrlMsg_T Msg
DECL KrlMsgPar_T Par[3]
DECL KrlMsgOpt_T Opt
DECL KrlMsgDlgSK_T SK[7]
INT nHandle, nAnswer
T 2模式下执行EMZ
Msg = {Modul[] "vw_emz", Nr 10, Msg_txt[] "Antriebsschnittstelleselektieren"} 提示信息条 “EMZ使用几号工具用来测量”
SK[1]={ Sk_Type #VALUE, Sk_txt[] "1"} 生成的选项按钮
SK[2]={ Sk_Type #VALUE, Sk_txt[] "2"}
SK[3]={ Sk_Type #VALUE, Sk_txt[] "3"}
SK[4]={ Sk_Type #VALUE, Sk_txt[] "4"}
SK[5]={ Sk_Type #VALUE, Sk_txt[] "5"}
SK[6]={ Sk_Type #VALUE, Sk_txt[] "6"}
SK[7]={ Sk_Type #VALUE, Sk_txt[] "7"}
选择几号焊钳
Opt = { VL_Stop True, Clear_P_ResetTrue, Log_To_DB FALSE } 信息属性设置
nHandle = Set_KrlDlg (Msg, Par[],SK[], Opt) 激活信息提示
If (nHandle>0)Then
While (Exists_KrlDlg(nHandle, nAnswer)) 关闭对话窗口
Wait sec 0.1
Endwhile
Endif
Return(nAnswer) 选择按钮的值被发出
;
ENDFCT
责任编辑:lq
全部0条评论
快来发表一下你的评论吧 !