playbook/docs/tsl/syntax_book/function/08_gui.md

1110 lines
20 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

### 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 。