### 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 用途:对话框数据类别函数相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return rdo2 uiInteger(); // 结果:0 ``` ###### uiBoolean 用途:对话框数据类别函数相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return rdo2 uiBoolean(); // 结果:1 ``` ###### uiString 用途:对话框数据类别函数相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return rdo2 uiString(); // 结果:2 ``` ###### uiDate 用途:日期时间处理函数。 参数:无。 返回:日期或时间值。 范例 ```tsl return rdo2 uiDate(); // 结果:3 ``` ###### uiDouble 用途:对话框数据类别函数相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return rdo2 uiDouble(); // 结果:4 ``` ###### uiMarketList 用途:对话框数据类别函数相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return rdo2 uiMarketList(); // 结果:5 ``` ###### uiIndexList 用途:对话框数据类别函数相关函数。 参数:无。 返回:整数。 范例 ```tsl return rdo2 uiIndexList(); // 结果:6 ``` ###### uiStockList 用途:对话框数据类别函数相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return rdo2 uiStockList(); // 结果:7 ``` ###### uiSelfBkList 用途:对话框数据类别函数相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return rdo2 uiSelfBkList(); // 结果:8 ``` ###### uiSysBkList 用途:对话框数据类别函数相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return rdo2 uiSysBkList(); // 结果:9 ``` ###### uiRightStyle 用途:进行字符串提取或替换处理。 参数:无。 返回:处理后的结果值。 范例 ```tsl return rdo2 uiRightStyle(); // 结果:11 ``` ###### uiCycle 用途:对话框数据类别函数相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return rdo2 uiCycle(); // 结果:12 ``` ###### uiReportDate 用途:日期时间处理函数。 参数:无。 返回:日期或时间值。 范例 ```tsl return rdo2 uiReportDate(); // 结果:13 ``` ###### uiBasicIDList 用途:对话框数据类别函数相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return rdo2 uiBasicIDList(); // 结果:14 ``` ###### uiUserDefine 用途:对话框数据类别函数相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return rdo2 uiUserDefine(); // 结果:17 ``` ###### uiOneDimArray 用途:对话框数据类别函数相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return rdo2 uiOneDimArray(); // 结果:18 ``` ###### uiTwoDimDoubleArray 用途:对话框数据类别函数相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return rdo2 uiTwoDimDoubleArray(); // 结果:19 ``` ###### uiOneDimStringArray 用途:对话框数据类别函数相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return rdo2 uiOneDimStringArray(); // 结果:20 ``` ###### uiTwoDimStringArray 用途:对话框数据类别函数相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return rdo2 uiTwoDimStringArray(); // 结果:21 ``` ###### uiOneDimDateArray 用途:日期时间处理函数。 参数:无。 返回:日期或时间值。 范例 ```tsl return rdo2 uiOneDimDateArray(); // 结果:22 ``` ###### uiTwoDimDateArray 用途:日期时间处理函数。 参数:无。 返回:日期或时间值。 范例 ```tsl return rdo2 uiTwoDimDateArray(); // 结果:23 ``` ###### uiTable 用途:对话框数据类别函数相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return rdo2 uiTable(); // 结果:24 ``` ###### uiUserData 用途:对话框数据类别函数相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return rdo2 uiUserData(); // 结果:25 ``` ###### uiRightDay 用途:进行字符串提取或替换处理。 参数:无。 返回:处理后的结果值。 范例 ```tsl return rdo2 uiRightDay(); // 结果:27 ``` ###### uiBasicID 用途:对话框数据类别函数相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return rdo2 uiBasicID(); // 结果:29 ``` ###### uiYear 用途:对话框数据类别函数相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return rdo2 uiYear(); // 结果:31 ``` ###### uiMonth 用途:对话框数据类别函数相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return rdo2 uiMonth(); // 结果:32 ``` ###### uiDay 用途:对话框数据类别函数相关函数。 参数:无。 返回:处理后的结果值。 范例 ```tsl return rdo2 uiDay(); // 结果:33 ``` ##### InputQuery 范例 ```tsl 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 范例 ```tsl // 打开保存文件对话框 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: ```tsl 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: 两个控制字函数相加的消息显示框,两个控制字函数相加用位或的运算符号.|,程序如下: ```tsl 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 范例 ```tsl 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 范例 ```tsl // 返回结果值为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 范例 ```tsl // 显示一个数组数据 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 范例 ```tsl 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 范例 ```tsl a := 3; b := rdo2 MessageBox('a>2,要继续吗?', '测试对话框', rdo2 mb_OkCancel()); return b; ``` 弹出如下消息对话框,选择“确定”则返回“确定”按钮id的返回字,选择“取消”则返回“取消”按钮id的返回字。 ##### mb_RetryCancel 范例 ```tsl a := 3; b := rdo2 MessageBox('a>2,要继续吗?', '测试对话框', rdo2 mb_RetryCancel()); return b; ``` 弹出如下消息对话框,选择“重试”则返回“重试”按钮id的返回字,选择“取消”则返回“取消”按钮id的返回字。 ##### mb_YesNo 范例 ```tsl a := 3; b := rdo2 MessageBox('a>2,要继续吗?', '测试对话框', rdo2 mb_YesNo()); return b; ``` 弹出如下消息对话框,选择“是”则返回“是”按钮id的返回字,选择否则返回“否”按钮id的返回字。 参考MessageBox ##### mb_YesNoCancel 范例 ```tsl 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 范例 ```tsl a := 3; c := rdo2 mb_YesNo() .| rdo2mb_IconInformation(); b := rdo2 MessageBox('a>2,要继续吗?', '测试对话框', c); return b; ``` 弹出对话框如下: ##### mb_IconExclamation 范例 ```tsl a := 3; c := rdo2 mb_YesNo() .| rdo2 mb_IconExclamation(); b := rdo2 MessageBox('a>2,要继续吗?', '测试对话框', c); return b; ``` 弹出消息显示框如下图,在控制字mb_YesNo()显示框的基础上加了一个感叹号图标。 ##### mb_IconWarning 范例 ```tsl 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 范例 ```tsl a := 3; c := rdo2 mb_YesNo() .| rdo2 mb_IconAsterisk(); b := rdo2 MessageBox('a>2,要继续吗?', '测试对话框', c); return b; ``` 弹出消息显示框如下图,在控制字mb_YesNo()显示框的基础上加了一个星号图标。 ##### mb_IconQuestion 范例 ```tsl a := 3; c := rdo2 mb_YesNo() .| rdo2mb_IconQuestion (); b := rdo2 MessageBox('a>2,要继续吗?', '测试对话框', c); return b; ``` 弹出消息显示框如下图,在控制字mb_YesNo()显示框的基础上加了一个问好图标。 ##### mb_IconStop 范例 ```tsl a := 3; c := rdo2 mb_YesNo() .| rdo2mb_IconStop(); b := rdo2 MessageBox('a>2,要继续吗?', '测试对话框', c); return b; ``` 弹出消息显示框如下图,在控制字mb_YesNo()显示框的基础上加了一个停止图标。 ##### mb_IconError 范例 ```tsl a := 3; c := rdo2 mb_YesNo() .| rdo2mb_IconError(); b := rdo2 MessageBox('a>2,要继续吗?', '测试对话框', c); return b; ``` 弹出消息显示框如下图,在控制字mb_YesNo()显示框的基础上加了一个错误图标。 ##### mb_IconHand 范例 ```tsl 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 范例 ```tsl a := 3; c := rdo2 mb_YesNo() .| rdo2mb_DefButton1(); b := rdo2 MessageBox('a>2,要继续吗?', '测试对话框', c); return b; ``` 弹出消息显示框如下图,控制字mb_YesNo()消息显示框的第一个按钮呈浅蓝色。 ##### mb_DefButton2 范例 ```tsl a := 3; c := rdo2 mb_YesNo() .| rdo2mb_DefButton2(); b := rdo2 MessageBox('a>2,要继续吗?', '测试对话框', c); return b; ``` 弹出消息显示框如下图,控制字mb_YesNo()消息显示框的第二个按钮呈浅蓝色。 ##### mb_DefButton3 范例 ```tsl a := 3; c := rdo2 mb_AbortRetryIgnore() .| rdo2mb_DefButton3(); b := rdo2 MessageBox('a>2,要继续吗?', '测试对话框', c); return b; ``` 弹出消息显示框如下图,控制字mb_AbortRetryIgnore()消息显示框的第三个按钮呈浅蓝色。 ##### mb_DefButton4 范例 如没有第四个按钮,则从超出按钮个数起重新从第一个按钮数,如mb_AbortRetryIgnore() 在默认第四个按钮,由于mb_AbortRetryIgnore()只有三个按钮,则第四个显示的是第一个。 ```tsl 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 范例 ```tsl 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 范例 ```tsl a := 3; c := rdo2 mb_AbortRetryIgnore() .| rdo2mb_SystemModal(); b := rdo2 MessageBox('a>2,要继续吗?', '测试对话框', c); return b; ``` 弹出消息显示框如下图,如不返回选择按钮,消息显示框总是在最前端。 ##### mb_TaskModal 范例 ```tsl 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 范例 ```tsl a := 3; c := rdo2 mb_AbortRetryIgnore() .| rdo2mb_TopMost(); b := rdo2 MessageBox('a>2,要继续吗?', '测试对话框', c); return b; ``` 弹出对话框如: ##### mb_Default_Desktop_Only 范例 ```tsl a := 3; c := rdo2 mb_AbortRetryIgnore() .| rdo2mb_Default_Desktop_Only(); b := rdo2 MessageBox('a>2,要继续吗?', '测试对话框', c); return b; ``` 弹出消息显示框如下图 ##### mb_Help 范例 ```tsl a := 3; c := rdo2 mb_AbortRetryIgnore() .| rdo2mb_Help(); b := rdo2 MessageBox('a>2,要继续吗?', '测试对话框', c); return b; ``` 弹出消息显示框如下图 ##### mb_Right 范例 ```tsl a := 3; c := rdo2 mb_AbortRetryIgnore() .| rdo2mb_Right(); b := rdo2 MessageBox('a>2,要继续吗?', '测试对话框', c); return b; ``` 弹出消息显示框如下图 ##### mb_RtlReading 范例 ```tsl a := 3; c := rdo2 mb_AbortRetryIgnore() .| rdo2mb_RtlReading(); b := rdo2 MessageBox('a>2,要继续吗?', '测试对话框', c); return b; ``` 弹出消息显示框如下图 ##### mb_SetForeGround 范例 ```tsl 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 范例 ```tsl a := 3; c := rdo2 mb_AbortRetryIgnore() .| rdo2mb_Service_Notification(); b := rdo2 MessageBox('a>2,要继续吗?', '测试对话框', c); return b; ``` ##### mb_Service_Notification_NT3X 范例 ```tsl 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 范例 ```tsl a := 3; b := rdo2 MessageBox('a>2,要继续吗?', '测试对话框', rdo2 mb_AbortRetryIgnore()); if b = rdo2 idAbort () then return 1; else return 0; ``` 返回结果如选择Abort按钮,则返回1,否则返回0 。 ##### idCancel 范例 ```tsl a := 3; b := rdo2 MessageBox('a>2,要继续吗?', '测试对话框', rdo2 mb_OkCancel()); if b = rdo2 idCancel () then return 1; else return 0; ``` 返回结果如选择Cancel按钮,则返回1,否则返回0 。 ##### idIgnore 范例 ```tsl a := 3; b := rdo2 MessageBox('a>2,要继续吗?', '测试对话框', rdo2 mb_AbortRetryIgnore ()); if b = rdo2 idIgnore () then return 1; else return 0; ``` 返回结果如选择Ignore按钮,则返回1,否则返回0 。 ##### idNo 范例 ```tsl a := 3; b := rdo2 MessageBox('a>2,要继续吗?', '测试对话框', rdo2 mb_YesNo ()); if b = rdo2 idNo () then return 1; else return 0; ``` 返回结果如选择No按钮,则返回1,否则返回0 。 ##### idOk 范例 ```tsl a := 3; b := rdo2 MessageBox('a>2,要继续吗?', '测试对话框', rdo2 mb_OkCancel ()); if b = rdo2 idOk() then return 1; else return 0; ``` 返回结果如选择OK按钮,则返回1,否则返回0 。 ##### idRetry 范例 ```tsl a := 3; b := rdo2 MessageBox('a>2,要继续吗?', '测试对话框', rdo2 mb_AbortRetryIgnore()); if b = rdo2 idRetry () then return 1; else return 0; ``` 返回结果如选择Retry按钮,则返回1,否则返回0 。 ##### idYes 范例 ```tsl a := 3; b := rdo2 MessageBox('a>2,要继续吗?', '测试对话框', rdo2 mb_YesNo()); if b = rdo2 IdYes() then return 1; else return 0; ``` 返回结果如选择Yes按钮,则返回1,否则返回0 。