### GUI函数 #### 内容 - GUI函数简介 - GUI功能函数 - 消息对话框的类型控制字 - 消息对话框的图标控制字 - 消息对话框的默认按钮控制字 - 消息对话框的模式控制字 - 消息对话框的其他控制字 - 消息对话框的返回字 #### GUI函数简介 GUI函数目前只能用于本地化执行,如WORD模板中,以及其他本地执行的应用中。GUI函数为TSL语言与用户提供一个运行中的交互提供了可能。如:显示消息对话框,显示文件打开对话框,显示输入对话框等等。 #### GUI功能函数 ##### 内容 - 对话框数据类别函数 - InputQuery - PromptForFileName - MessageBox - InputDialog - BuildOptionComboValue - ShowValue ##### 对话框数据类别函数 ###### 内容 - uiInteger - uiBoolean - uiString - uiDate - uiDouble - uiMarketList - uiIndexList - uiStockList - uiSelfBkList - uiSysBkList - uiRightStyle - uiCycle - uiReportDate - uiBasicIDList - uiUserDefine - uiOneDimArray - uiTwoDimDoubleArray - uiOneDimStringArray - uiTwoDimStringArray - uiOneDimDateArray - uiTwoDimDateArray - uiTable - uiUserData - uiRightDay - uiBasicID - uiYear - uiMonth - uiDay ###### uiInteger 范例 ```text return rdo2 uiInteger(); //结果:0 ``` ###### uiBoolean 范例 ```text return rdo2 uiBoolean(); //结果:1 ``` ###### uiString 范例 ```text return rdo2 uiString(); //结果:2 ``` ###### uiDate 范例 ```text return rdo2 uiDate(); //结果:3 ``` ###### uiDouble 范例 ```text return rdo2 uiDouble(); //结果:4 ``` ###### uiMarketList 范例 ```text return rdo2 uiMarketList(); //结果:5 ``` ###### uiIndexList 范例 ```text return rdo2 uiIndexList(); //结果:6 ``` ###### uiStockList 范例 ```text return rdo2 uiStockList(); //结果:7 ``` ###### uiSelfBkList 范例 ```text return rdo2 uiSelfBkList(); //结果:8 ``` ###### uiSysBkList 范例 ```text return rdo2 uiSysBkList(); //结果:9 ``` ###### uiRightStyle 范例 ```text return rdo2 uiRightStyle(); //结果:11 ``` ###### uiCycle 范例 ```text return rdo2 uiCycle(); //结果:12 ``` ###### uiReportDate 范例 ```text return rdo2 uiReportDate(); //结果:13 ``` ###### uiBasicIDList 范例 ```text return rdo2 uiBasicIDList(); //结果:14 ``` ###### uiUserDefine 范例 ```text return rdo2 uiUserDefine(); //结果:17 ``` ###### uiOneDimArray 范例 ```text return rdo2 uiOneDimArray(); //结果:18 ``` ###### uiTwoDimDoubleArray 范例 ```text return rdo2 uiTwoDimDoubleArray(); //结果:19 ``` ###### uiOneDimStringArray 范例 ```text return rdo2 uiOneDimStringArray(); //结果:20 ``` ###### uiTwoDimStringArray 范例 ```text return rdo2 uiTwoDimStringArray(); //结果:21 ``` ###### uiOneDimDateArray 范例 ```text return rdo2 uiOneDimDateArray(); //结果:22 ``` ###### uiTwoDimDateArray 范例 ```text return rdo2 uiTwoDimDateArray(); //结果:23 ``` ###### uiTable 范例 ```text return rdo2 uiTable(); //结果:24 ``` ###### uiUserData 范例 ```text return rdo2 uiUserData(); //结果:25 ``` ###### uiRightDay 范例 ```text return rdo2 uiRightDay(); //结果:27 ``` ###### uiBasicID 范例 ```text return rdo2 uiBasicID(); //结果:29 ``` ###### uiYear 范例 ```text return rdo2 uiYear(); //结果:31 ``` ###### uiMonth 范例 ```text return rdo2 uiMonth(); //结果:32 ``` ###### uiDay 范例 ```text return rdo2 uiDay(); //结果:33 ``` ##### InputQuery 范例 ```text if not rdo2 inputquery("输入数据","输入被除数",M1) then return "未输入被除数"; if not rdo2 inputquery("输入数据","输入除数",M2) then return "未输入除数"; return strtofloat(M1) / strtofloat(M2); ``` 执行第一个if时,弹出如上对话框,输入3点击确定,这是执行第二个if弹出如下个对话框 输入6点击OK则返回的结果是0.5. ##### PromptForFileName 范例 ```text //打开保存文件对话框 rdo2 PromptForFileName(data,'Excelfiles (*.xls)|*.xlsx|(*.XLS)|TSLfiles (*.tsl)|*.TSL','.xls','保存对话框','C:\\DataStore',1); return data; //打开打开文件对话框 rdo2 PromptForFileName(data,'Excelfiles (*.xls)|*.xlsx|(*.XLS)|TSLfiles (*.tsl)|*.TSL','.xls','打开对话框','C:\\DataStore',0); return data; ``` ##### MessageBox 范例 范例1: ```text a:=3; if a>2 then b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',rdo2 mb_YesNo()); if b=6 then return 1; else return 0; ``` 显示的消息对话框如下: 其中,mb_YesNo()函数为控制字函数,各控制字函数可以参考链接: http://www.tinysoft.com.cn/tsdn/helpdoc/display.tsl?id=1380 范例2: 两个控制字函数相加的消息显示框,两个控制字函数相加用位或的运算符号.|,程序如下: ```text a:=3; c:=rdo2 mb_YesNo().|rdo2 mb_IconWarning(); if a>2 then b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',c); if b=7 then return 1; else return b; ``` 弹出的消息显示框则如下: 比范例1多了一个警告图标,即mb_IconWarning()是警告图标控制字函数参考消息对话框的返回字。 ##### InputDialog 范例 ```text Define:=array(); define[0]['Name']:='Years'; define[0]['Comment']:='年数'; define[0]['Type']:=rdo2 uiInteger(); define[0]['Value']:=10; define[1]['Name']:='NeedFunds'; define[1]['Comment']:='是否需要基金'; define[1]['Type']:=rdo2 uiBoolean(); define[1]['Value']:=’True’; define[2]['Name']:='Name'; define[2]['Comment']:='输入名称'; define[2]['Type']:=rdo2 uiString(); define[2]['Value']:='天软'; define[3]['Name']:='GenDate'; define[3]['Comment']:='生成日期'; define[3]['Type']:=rdo2 uiDate(); define[3]['Value']:=now(); if rdo2 InputDialog('测试输入','测试',define,Result) then rdo2 ShowValue('测试显示',Result,False); ``` 显示如下: 当选择了确认之后,ShowValue的结果显示出来如下: ##### BuildOptionComboValue 范例 ```text //返回结果值为1的Value值 s:='abcd=0\r bcde=1\r'; return rdo2 BuildOptionComboValue(s,1); //返回结果值为0的Value值 s:='abcd=0\r bcde=1\r'; return rdo2 BuildOptionComboValue(s,0); ``` ##### ShowValue 范例 ```text //显示一个数组数据 a:=rand(10,10); b:=rdo2 ShowValue('测试显示',a,False); return b; //显示一个字符串 a:='测试ABC'; b:=rdo2 ShowValue('测试显示',a,False); return b; ``` #### 消息对话框的类型控制字 ##### 内容 - mb_AbortRetryIgnore - mb_Ok - mb_OkCancel - mb_RetryCancel - mb_YesNo - mb_YesNoCancel ##### mb_AbortRetryIgnore 范例 ```text a:=3; b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',rdo2 mb_AbortRetryIgnore()); return b; ``` 弹出如下消息对话框,选择“中止”则返回“中止”按钮id的返回字,选择“重试”则返回“重试”按钮id的返回字。选择“忽略”及返回“忽略”按钮Id的返回字。 ##### mb_Ok - mb_AbortRetryIgnore - mb_Ok - mb_OkCancel - mb_RetryCancel - mb_YesNo - mb_YesNoCancel ##### mb_OkCancel 范例 ```text a:=3; b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',rdo2 mb_OkCancel()); return b; ``` 弹出如下消息对话框,选择“确定”则返回“确定”按钮id的返回字,选择“取消”则返回“取消”按钮id的返回字。 ##### mb_RetryCancel 范例 ```text a:=3; b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',rdo2 mb_RetryCancel()); return b; ``` 弹出如下消息对话框,选择“重试”则返回“重试”按钮id的返回字,选择“取消”则返回“取消”按钮id的返回字。 ##### mb_YesNo 范例 ```text a:=3; b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',rdo2 mb_YesNo()); return b; ``` 弹出如下消息对话框,选择“是”则返回“是”按钮id的返回字,选择否则返回“否”按钮id的返回字。 参考MessageBox ##### mb_YesNoCancel 范例 ```text a:=3; b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',rdo2 mb_YesNoCancel()); return b; ``` 弹出如下消息对话框,选择“是”则返回“是”按钮id的返回字,选择“否”则返回“否”按钮id的返回字,选择“取消”则返回“取消”按钮id的返回字。 #### 消息对话框的图标控制字 ##### 内容 - mb_IconInformation - mb_IconExclamation - mb_IconWarning - mb_IconInfomation - mb_IconAsterisk - mb_IconQuestion - mb_IconStop - mb_IconError - mb_IconHand ##### mb_IconInformation 范例 ```text a:=3; c:= rdo2 mb_YesNo().| rdo2mb_IconInformation(); b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',c); return b; ``` 弹出对话框如下: ##### mb_IconExclamation 范例 ```text a:=3; c:= rdo2 mb_YesNo().| rdo2 mb_IconExclamation(); b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',c); return b; ``` 弹出消息显示框如下图,在控制字mb_YesNo()显示框的基础上加了一个感叹号图标。 ##### mb_IconWarning 范例 ```text a:=3; c:= rdo2 mb_YesNo().| rdo2 mb_IconWarning(); b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',c); return b; ``` 弹出消息显示框如下图,在控制字mb_YesNo()显示框的基础上加了一个警告图标。 ##### mb_IconInfomation - mb_IconInformation - mb_IconExclamation - mb_IconWarning - mb_IconInfomation - mb_IconAsterisk - mb_IconQuestion - mb_IconStop - mb_IconError - mb_IconHand ##### mb_IconAsterisk 范例 ```text a:=3; c:= rdo2 mb_YesNo().| rdo2 mb_IconAsterisk(); b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',c); return b; ``` 弹出消息显示框如下图,在控制字mb_YesNo()显示框的基础上加了一个星号图标。 ##### mb_IconQuestion 范例 ```text a:=3; c:= rdo2 mb_YesNo().| rdo2mb_IconQuestion (); b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',c); return b; ``` 弹出消息显示框如下图,在控制字mb_YesNo()显示框的基础上加了一个问好图标。 ##### mb_IconStop 范例 ```text a:=3; c:= rdo2 mb_YesNo().| rdo2mb_IconStop(); b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',c); return b; ``` 弹出消息显示框如下图,在控制字mb_YesNo()显示框的基础上加了一个停止图标。 ##### mb_IconError 范例 ```text a:=3; c:= rdo2 mb_YesNo().| rdo2mb_IconError(); b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',c); return b; ``` 弹出消息显示框如下图,在控制字mb_YesNo()显示框的基础上加了一个错误图标。 ##### mb_IconHand 范例 ```text a:=3; c:= rdo2 mb_YesNo().| rdo2mb_IconHand(); b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',c); return b; ``` 弹出消息显示框如下图,在控制字mb_YesNo()显示框的基础上加了一个手图标。 #### 消息对话框的默认按钮控制字 ##### 内容 - mb_DefButton1 - mb_DefButton2 - mb_DefButton3 - mb_DefButton4 ##### mb_DefButton1 范例 ```text a:=3; c:= rdo2 mb_YesNo().| rdo2mb_DefButton1() ; b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',c); return b; ``` 弹出消息显示框如下图,控制字mb_YesNo()消息显示框的第一个按钮呈浅蓝色。 ##### mb_DefButton2 范例 ```text a:=3; c:= rdo2 mb_YesNo().| rdo2mb_DefButton2() ; b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',c); return b; ``` 弹出消息显示框如下图,控制字mb_YesNo()消息显示框的第二个按钮呈浅蓝色。 ##### mb_DefButton3 范例 ```text a:=3; c:= rdo2 mb_AbortRetryIgnore().| rdo2mb_DefButton3() ; b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',c); return b; ``` 弹出消息显示框如下图,控制字mb_AbortRetryIgnore()消息显示框的第三个按钮呈浅蓝色。 ##### mb_DefButton4 范例 如没有第四个按钮,则从超出按钮个数起重新从第一个按钮数,如mb_AbortRetryIgnore() 在默认第四个按钮,由于mb_AbortRetryIgnore()只有三个按钮,则第四个显示的是第一个。 ```text a:=3; c:= rdo2 mb_AbortRetryIgnore().| rdo2mb_DefButton4() ; b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',c); return b; ``` 弹出消息显示框如下图,控制字mb_AbortRetryIgnore()消息显示框的第一个按钮呈浅蓝色。 #### 消息对话框的模式控制字 ##### 内容 - mb_ApplModal - mb_AppModal - mb_SystemModal - mb_TaskModal ##### mb_ApplModal 范例 ```text a:=3; c:= rdo2 mb_AbortRetryIgnore().|rdo2mb_ApplModal(); b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',c); return b; ``` 弹出消息显示框如下图: ##### mb_AppModal - mb_ApplModal - mb_AppModal - mb_SystemModal - mb_TaskModal ##### mb_SystemModal 范例 ```text a:=3; c:= rdo2 mb_AbortRetryIgnore().|rdo2mb_SystemModal(); b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',c); return b; ``` 弹出消息显示框如下图,如不返回选择按钮,消息显示框总是在最前端。 ##### mb_TaskModal 范例 ```text a:=3; c:= rdo2 mb_AbortRetryIgnore().|rdo2mb_TaskModal(); b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',c); return b; ``` 弹出消息显示框如下图,如不返回选择按钮,将无法继续操作天软系统。 #### 消息对话框的其他控制字 ##### 内容 - mb_TopMost - mb_Default_Desktop_Only - mb_Help - mb_Right - mb_RtlReading - mb_SetForeGround - mb_SetTopMost - mb_Service_Notification - mb_Service_Notification_NT3X ##### mb_TopMost 范例 ```text a:=3; c:= rdo2 mb_AbortRetryIgnore().|rdo2mb_TopMost(); b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',c); return b; ``` 弹出对话框如: ##### mb_Default_Desktop_Only 范例 ```text a:=3; c:= rdo2 mb_AbortRetryIgnore().|rdo2mb_Default_Desktop_Only(); b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',c); return b; ``` 弹出消息显示框如下图 ##### mb_Help 范例 ```text a:=3; c:= rdo2 mb_AbortRetryIgnore().|rdo2mb_Help(); b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',c); return b; ``` 弹出消息显示框如下图 ##### mb_Right 范例 ```text a:=3; c:= rdo2 mb_AbortRetryIgnore().|rdo2mb_Right(); b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',c); return b; ``` 弹出消息显示框如下图 ##### mb_RtlReading 范例 ```text a:=3; c:= rdo2 mb_AbortRetryIgnore().|rdo2mb_RtlReading(); b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',c); return b; ``` 弹出消息显示框如下图 ##### mb_SetForeGround 范例 ```text a:=3; c:= rdo2 mb_AbortRetryIgnore().|rdo2mb_SetForeGround(); b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',c); return b; ``` 弹出消息显示框如下图 ##### mb_SetTopMost - mb_TopMost - mb_Default_Desktop_Only - mb_Help - mb_Right - mb_RtlReading - mb_SetForeGround - mb_SetTopMost - mb_Service_Notification - mb_Service_Notification_NT3X ##### mb_Service_Notification 范例 ```text a:=3; c:= rdo2 mb_AbortRetryIgnore().|rdo2mb_Service_Notification(); b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',c); return b; ``` ##### mb_Service_Notification_NT3X 范例 ```text a:=3; c:= rdo2 mb_AbortRetryIgnore().|rdo2mb_Service_Notification_NT3X(); b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',c); return b; ``` 弹出消息显示框如下图 #### 消息对话框的返回字 ##### 内容 - idAbort - idCancel - idIgnore - idNo - idOk - idRetry - idYes ##### idAbort 范例 ```text a:=3; b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',rdo2 mb_AbortRetryIgnore()); if b=rdo2 idAbort () then return 1; else return 0; ``` 返回结果如选择Abort按钮,则返回1,否则返回0 。 ##### idCancel 范例 ```text a:=3; b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',rdo2 mb_OkCancel()); if b=rdo2 idCancel () then return 1; else return 0; ``` 返回结果如选择Cancel按钮,则返回1,否则返回0 。 ##### idIgnore 范例 ```text a:=3; b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',rdo2 mb_AbortRetryIgnore ()); if b=rdo2 idIgnore () then return 1; else return 0; ``` 返回结果如选择Ignore按钮,则返回1,否则返回0 。 ##### idNo 范例 ```text a:=3; b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',rdo2 mb_YesNo ()); if b=rdo2 idNo () then return 1; else return 0; ``` 返回结果如选择No按钮,则返回1,否则返回0 。 ##### idOk 范例 ```text a:=3; b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',rdo2 mb_OkCancel ()); if b=rdo2 idOk() then return 1; else return 0; ``` 返回结果如选择OK按钮,则返回1,否则返回0 。 ##### idRetry 范例 ```text a:=3; b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',rdo2 mb_AbortRetryIgnore()); if b=rdo2 idRetry () then return 1; else return 0; ``` 返回结果如选择Retry按钮,则返回1,否则返回0 。 ##### idYes 范例 ```text a:=3; b:=rdo2 MessageBox('a>2,要继续吗?','测试对话框',rdo2 mb_YesNo()); if b=rdo2 IdYes() then return 1; else return 0; ``` 返回结果如选择Yes按钮,则返回1,否则返回0 。