Tivoli 服务台 6.0 开发工具包脚本语言参考
------------------------------------------------------------------------
返回一个句柄到桌面窗口。在当前会话期间,此值是不变的。但并不永久保存此值。
下次执行程序时,此常数会有一个新值。
FUNCTION $Desktop: WINDOW;
注意:在 OS/2 系统中,有一些有效的消息,可以将它们发送至桌面以暂停处理。
例如,将 $MsgClose 发送至桌面,可以暂停程序的执行。
这种行为由操作系统控制。
$Desktop 是预定义的系统常数,它包含到 OS/2 桌面或 Windows 桌面的句柄。
在窗口或对话框语句中,它常常被指定为父级。
KNOWLEDGEBASE Desktop;
ROUTINES
PROCEDURE Example;
PRIVATE
ROUTINES
(* Create a scroll window parented by the desktop with
default event processing *)
PROCEDURE Example IS
VARIABLES
whdl: WINDOW;
ACTIONS
WinCreateScrollWindow($Desktop, (*Window is a child of
OS/2 desktop *)
whdl, (* return handle
of new window *)
$NullHandler, (* Default event
processing *)
5, 5, 80, 20, (* Window location
and size *)
'Example', (* Window title *)
'', (* Use default font
0, (* Point size is
ignored for default *)
BitOr( $WinTitle, $WinBorder, $WinSysMenu ));
WinWait(whdl);
END;
------------------------------------------------------------------------
指示发生 $MsgChar 事件时,用户所按的键。
脚本为某些特殊的键,如光标控制键、修改键(即,那些要与其它键以组合方式按下的键,如 Control 或 Alt)等,定义若干常数。
其他信息,请参见 TSD 脚本消息页。
EVENT MyEvent IS
ACTIONS
WHEN $Event IS $MsgChar THEN
WHEN $KeyCode IS $KeyUpArrow THEN
MoveUp;
ELSWHEN $KeyDownArrow THEN
MoveDown;
ELSWHEN $KeyLeftArrow THEN
MoveLeft;
ELSWHEN $KeyRightArrow THEN
MoveRight;
END;
END;
另见键代码。
------------------------------------------------------------------------
根据对话框规范文件创建模态对话框。模态对话框由应用程序主窗口拥有。
在损坏对话框之前,发送到模态对话框的调用不会返回。如果父窗口不是桌面并且
没有指定所有者,则禁用父窗口。如果模态对话框是活动的,则最终用户既不能与父窗口交互,
也不能与它的任何其他子窗口交互。
FUNCTION DlgBox(VAL parent: WINDOW, VAL dialogFile: STRING,
VAL EventHandler: EVENT,
REF returnRec: RECORD of ANY): INTEGER;
注意:在处理 $MsgDDEInitiate 消息时,请不要使用
DlgBox。如果使用 DlgBox,
$MsgDDEInitiate 将向应用程序广播消息,并在返回响应之前锁定消息队列。
同时,DlgBox 语句将初始化同样在等待消息队列应答的事件处理器。
DlgBox 防止其他应用程序向消息队列发送消息。这样会造成死锁,而死锁将有效锁定用户接口。
自变量名称 | 说明 |
dialogFile | 对话框规范文件的文件名。执行下列搜索: 1.如果文件具有已指定的显式目录,该目录就是仅有的搜索位置。 |
如果使用该策略找不到文件,DlgBox 就会返回一个出错消息,指示没有找到文件。
可以有选择地指定要显示的对话框的名称。窗体名称以这种格式指定:
fileName[formName]。
事件处理器,处理由窗口或对话框生成的事件。如果不需要处理事件,则可以使用 $NullHandler 关键字。
returnRec 返回值。如果用户接受此对话框,
将把对话框中包含的数据赋给该记录。此赋值的基础是一些控件,这些控件具有与
记录定义中的项目名称相匹配的控件名称。如果用任何其他方式损坏对话框窗口,则
不改变值。如果提供了事件处理器,则此记录与赋予事件处理器的实例数据参数必须是同一种类型。
接收到的第一条消息
当创建对话框时,按如下所示的顺序接收
下列消息:
$MsgEnterField 将光标放在按 tab 键控制次序定义的第一个
控件上。
$MsgInitialize 初始化包含数据的控件。各个控件都将接收到一个独立的 $MsgInitialize 消息,
消息的对话框中带有数据。
$MsgCreate 创建实际对话框。
整理空白
如果控件中的所有空间都为空,则将在对话框控件中整理空白。如果用户在控件中
输入了空白字符串,或对话框规范文件包含用于该控件的空
字符串时,都将发生这种情况。在这两种情况下,如果请求空控件的值,则返回 $Unknown。
要创建模态对话框,请使用 DlgBox 语句。模态对话框由应用程序主窗口拥有。
在损坏对话框之前,发送到模态对话框的调用不会返回。
如果父窗口不是桌面并且未指定拥有者,则禁用父窗口。
如果模态对话框是活动的,则最终用户既不能与父窗口交互,
也不能与它的任何其他子窗口交互。
要创建一个无模态(或非模态)对话框,请使用 DlgCreate 语句。发送给
非模态对话框的调用会立即返回。在损坏该窗口之前,它将始终存在。
该对话框为用户数据条目提供模板。可以根据对话框规范文件创建各种
文本框和控件。各个文本框都与一个数据库字段相关联并具有独特的名称。可以将
一个或多个文本框绑定到对话框实例数据字段。对话框文本框被绑定到
名称相同的实例数据字段。
当用户或应用程序对对话框文本框进行更新时,绑定的实例数据字段也被更新。
系统执行范围广泛的类型转换,从而将对话框数据统一成与实例数据相同的类型。
如果提供事件处理器,则将向应用程序通知用户的操作,并给予它响应和修改操作的
时机。
所有对话框消息的前两个事件参数是(除非另作说明):
* 事件参数一(整数)是已选控件的标识。可以使用别名 $FieldID 来访问它。
* 事件参数二(字符串)是已选控件的名称。可以使用别名 $FieldName 来访问它。
关于对话框可接收的消息列表,请参见本手册中的“对话框可接收消息”。
KNOWLEDGEBASE DlgExample;
TYPES
DlgData IS RECORD
sampleField: INTEGER;
END;
ROUTINES
PROCEDURE DialogExample;
PRIVATE
ROUTINES
EVENT DlgEvent(REF fields: DlgData) IS
ACTIONS
WHEN $Event IS $MsgCreate THEN
NOTHING; (* Sent once when dialog box is created *)
(* Has pseudo parameters $FormFile, and $FormName *)
ELSWHEN $MsgDestroy THEN
NOTHING; (* Sent once when dialog box is about to be destroyed *)
ELSWHEN $MsgHelp THEN
NOTHING; (* Sent when the help key or the help button*)(* is pressed and there is no help defined *)
(* for the current field, or the form *)
ELSWHEN $MsgEnterField THEN
NOTHING; (* Sent each time a new field becomes the *)
(* active field. The action may be refused*)
(* by returning 0 *)
ELSWHEN $MsgExitField THEN
NOTHING; (* Sent each time a field is about to *)
(* become inactive *)
(* The action may be refused by returning 0 *)
ELSWHEN $MsgAccept THEN
NOTHING; (* Sent when the user accepts the dialog
(* box. The accept action may be refused *)
(* by returning 0 *)
ELSWHEN $MsgCancel THEN
NOTHING; (* Sent when the user cancels the dialog box.*)(* The cancel action may be refused by *)
(* returning 0 *)
ELSWHEN $MsgSelect THEN
NOTHING;(* Sent when a change in a field value is *)
(* detected. *)
(* Changes made by the user in multiline
(* edit and entry fields are detected when*)(* the field is exited. Other changes are*)
(* detected immediately. *)
(* Returning 0 refuses the change. *)
(* The instance data is updated to
(* the new field *)
(* value. Event parameter three has the old(* field value, and Event parameter four*)
(* has the new field value *)
ELSWHEN $MsgMandField THEN
NOTHING; (* Sent when the user accepts the dialog box(* and a mandatory field does not have a*)
(* value. The system default action is to*)
(* display a message, and abort *)
(* the accept action. If the event handler*)
(* does not return 1 (the default) the *)
(* message is not displayed. If 0 is*)
(* returned the accept action is *)
(* processed and a $MsgAccept is sent *)
ELSWHEN $MsgUser THEN
NOTHING; (* Any message defined by the application *)
END;
END (* Dlg Event *);
PROCEDURE DialogExample IS
VARIABLES
dlghdl: WINDOW;
fields: DLGDATA;
ACTIONS
DlgBox ($Desktop,'example[dialog1]',
DlgEvent{fields},fields);
END (* dialog box Example *);
返回码 | 说明 |
1 | 成功完成。 |
0 | 用户异常终止。用户关闭窗口或终止操作。通常以按 Esc 键或“取消”按钮,或从系统菜单中关闭窗口来实现。 |
-1 | 窗口句柄不能找到有效的窗口。该窗口可能不再存在,或该窗口不支持此命令。 |
-2 | 未知值 |
-3 | 内存不足 |
-4 | 没有创建。操作系统不能创建请求的对象。一个可能的原因是父级窗口句柄引用了已不存在的窗口。 |
-7 | 在窗口句柄引用的对话框中,不能找到对话框的命名控制。 |
-8 | 请求的对话框命令可能不能以命名的控制类型来执行。 |
-10 | 在操作系统级调用失败。这可能是由不适当的配置或资源不够引起的。 |
-12 | 用 NETx 语句不支持的消息调用 SendMessage 或 PostMessage 语句。这类消息必须是受支持的 $MsgNetx 消息之一,或用户定义的 $MsgUser + n 消息(这是为与 NETx 语句一起使用而专门定义的)。 |
有关创建对话框规范文件的信息,请参见Tivoli 服务台 6.0 开发工具包接口设计指南。
------------------------------------------------------------------------
根据对话框规范文件创建非模态对话框。
FUNCTION DlgCreate(VAL parent: WINDOW, REF whdlDialog: WINDOW,
VAL dialogFile: STRING,
VAL EventFunction: EVENT): INTEGER;
自变量说明 | 自变量名称说明 |
whdlParent | 该参数指定对话框的父窗口。 |
whdlDialog | 新窗口的句柄以此参数返回。如果有错误,则变量设置为 $Unknown。 |
dialogFile | 对话框规范文件的文件名。执行下列搜索: 1.如果文件具有已指定的显式目录,该目录就是仅有的搜索位置。 2.搜索命令行中明确指定的目录。 3.搜索当前工作目录。 4.搜索脚本解释器所在的目录。 5. 搜索在 SAIPATH 环境变量中指定的目录。 6. (只对 OS/2)搜索在 DPATH 环境变量中指定的目录。 7. 搜索在 PATH 环境变量中指定的目录。 如果使用该策略找不到文件,DlgBox 将返回一个出错消息,表示没有找到文件。可以有选择地指定要显示的对话框名称。窗体名称按这种格式指定: fileName[formName]。 |
EventFunction | 事件处理器,处理由窗口或对话框生成的事件。如果不需要处理事件,可以使用关键字 $NullHandler。 |
在创建对话框时,按如下所示的顺序接收下列消息:
1 .* $MsgEnterField 将光标放在按 tab 键控制次序定义的第一个控件上。
2.$MsgInitialize 初始化包含数据的控件。各个控件都将接收到一个独立的 $MsgInitialize 消息,
消息的对话框中带有数据。
3.* $MsgCreate 创建实际对话框。
要创建模态对话框,请使用 DlgBox 语句。模态对话框由应用程序
主窗口拥有。在损坏对话框之前,发送到模态对话框的调用不会返回。
如果父窗口不是桌面并且未指定拥有者,则禁用父窗口。
如果模态对话框是活动的,则最终用户既不能与父窗口交互,
也不能与它的任何其他子窗口交互。
要创建一个无模态(或非模态)对话框,请使用 DlgCreate 语句。发送给
非模态对话框的调用会立即返回。在该窗口被明确毁坏之前,它将始终存在。
该对话框为用户数据条目提供模板。各种控件(例如,文本框),都是在
对话框规范文件中定义的。每个控件都有一个独特的名称。可以将这些控件中的一个或多个
绑定到数据库字段。数据库向对话框提供实例数据。已绑定控件的
.df 名称
必须与实例数据字段的名称一致。
当用户或应用程序对对话框控件进行更新时,绑定的实例数据字段也被更新。
系统执行一系列的类型转换,从而将对话框数据统一成实例数据的同一类型。
如果提供事件处理器,则将向应用程序通知用户的操作,并给予它响应和修改该操作的
时机。
如果控件中的所有空间都为空,则将在对话框控件中整体空白。如果用户在控件中
输入了空白字符串,或对话框规范文件包含的用于该控件的字符串为空,则发生这种情况。
在这两种情况下,如果请求空控件的值,则返回 $Unknown。
所有对话框消息的前两个事件参数是(除非另作说明):
有关创建对话框规范文件的信息,请参见
------------------------------------------------------------------------
装入窗体文件中的子窗体,并在一个现存对话框窗体的背景中显示它。
FUNCTION DlgCreateSubForm(VAL whdl:WINDOW,
REF SubFormHandle: WINDOW,
VAL formSpec: STRING,
VAL EventHandler: EVENT,
VAL xPos: INTEGER,
VAL yPos: INTEGER
): INTEGER;
自变量说明 | 自变量名称说明 |
EventFunction | 事件处理器,处理由窗口或对话框生成的事件。如果不需要处理事件,可以使用关键字 $NullHandler。 |
EventHandler | 事件处理器,处理由新的子窗体生成的事件。如果不需要处理事件,则可以使用关键字 $NullHandler。 |
formSpec | 窗体 “FILE[FORM_NAME]” 中子窗体的窗体规范。 |
SubFormHandle | 用此参数返回新的子窗体的句柄。如果有错误,变量将被设置为 $Unknown。 |
whdl | 新的子窗体的父对话框窗体。 |
xPos | 新的子窗体左上角的横坐标。该坐标与父对话框窗体的左上角相关。 |
yPos | 新的子窗体左上角的纵坐标。该坐标与父对话框窗体的左上角相关。 |
WHEN $Event IS $MsgCreate THEN
DlgCreateSubForm($Handle, instanceData.theSubForm, 'screens[theSubForm]', SubFormHandler, 3, 50);
END;
有关创建对话框规范文件的其他信息,请参见Tivoli 服务台 6.0 开发工具包接口设计指南。
------------------------------------------------------------------------
从现存窗体上的记事簿删除现存的页。
FUNCTION DlgDeletePage ( VAL PARENT : WINDOW,
VAL NOTEBOOKID : STRING,
VAL PAGEID : STRING ) : INTEGER;
自变量说明 | 自变量名称说明 |
Parent | 包含记事簿的窗体的窗口句柄。 |
NotebookID | 记事簿的标识名称(来自 .df 规范) |
PageID | 要删除的页的标识名称(来自 .df 规范) |
KNOWLEDGEBASE dlgpage;
ROUTINES
PROCEDURE Main;
(* ***** PRIVATE ***** *)
PRIVATE
VARIABLES
(* Global Variable to hold the Window handle of the dialog box *)
mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES
ACTIONS
(* Create a dialog using the form PAGE_MAIN from dlgpage.df *)
(* PAGE_MAIN has a subform with notebook PAGE_NOTEBOOK as it's form *)
(* PAGE_NOTEBOOK currently has two tabs *)
DlgCreate($Desktop, mainWindow, 'dlgpage[PAGE_MAIN]', $NullHandler);
(* Remove the second page from the notebook. *)
(* This page has the ID FORM_TAB2 *)
DlgDeletePage(mainWindow, 'PAGE_NOTEBOOK', 'FORM_TAB2');
WinWait(mainWindow);
END;
------------------------------------------------------------------------
查询对话框控件的值。
FUNCTION DlgFieldValue(VAL whdlDialog: WINDOW,
VAL fieldName: STRING,
REF fieldValue: ANY): INTEGER;
自变量说明 | 自变量名称说明 |
whdlDialog | 对话框的窗口句柄,该对话框包含要在其上进行操作的控件。如果命令从包含该控件的事件处理器发出,则可能使用伪参数 $Handle。 |
fieldName | 命令所寻址的对话框中的控件名称。可以在接口设计器或对话框规范文件的 DEFINE 语句中指定它。该名称是不区分大小写的。 |
fieldValue | 返回所查询的控件的值。将把数据转换成参数的类型,并将所得的值赋值给该参数。有些转换不能产生有意义的结果。如果该控件是一个 SQLManage 控件或列表框,则附加参数可能是一条记录或一个整数列表。对于记录的各个控件,操作按逐个控件的方式进行。如果该控件能进行多项选择(例如,列表框和表),并且附加参数是单个变量,则返回第一项。如果它是变量列表,则返回所有项。 |
如果控件中的所有空间都为空,则在对话框控件中整理空白。如果用户在控件中
输入了空白字符串,或对话框规范文件包含的用于该控件的字符串为空,则发生这种情况。
在这两种情况下,如果请求空控件的值,则返回 $Unknown。
KNOWLEDGEBASE DlgField;
TYPES
DLGDATA IS RECORD
sampleField: INTEGER;
END;
SQLDATA IS RECORD
firstName: STRING;
lastName: STRING;
END;
(* ******* PRIVATE ******** *)
PRIVATE
ROUTINES
(* ******** dialog box EVENT HANDLER ******** *)
EVENT DlgEvent( REF fields: DLGDATA ) IS
VARIABLES
names: SQLDATA;
ACTIONS
(* All dialog box messages have pseudo parameters
$FieldID, *)
(* and $FieldName *)
WHEN $Event IS $MsgSelect THEN
IF $FieldName = 'insertButton' THEN
DlgFieldValue ( $Handle, 'sql_data', names );
IF DlgBox( $Desktop,'addDlg', $NullHandler{names},
names ) > 0
THEN
DlgListBoxInsert( $Handle, 'namesTable', names );
SQLInsert( 'names', names );
END;
END;
END;
END;
PROCEDURE DialogExample IS
VARIABLES
fields: DLGDATA;
ACTIONS
DlgBox( $Desktop,'example[dialog1]', DlgEvent{ fields },fields );
END;
------------------------------------------------------------------------
查询按钮的当前文本。
FUNCTION DlgGetButtonText (VAL whdlDialog: WINDOW,
VAL fieldName: String,
REF buttonText STRING): Integer;
自变量说明 | 自变量名称说明 |
whdlDialog | 对话框窗口句柄。 |
FieldName | 其文本被查询的按钮的控件名称。 |
ButtonText | 向按钮返回的文本。 |
KNOWLEDGEBASE GetButton;
TYPES
ROUTINES
PROCEDURE Main;
PRIVATE
ROUTINES
PROCEDURE Main IS
VARIABLES
handle : WINDOW;
text : STRING;
ACTIONS
DlgCreate($Desktop,
handle,
'sample.dfc[sample]',
$NullHandler);
DlgGetButtonText(handle, 'test_button', text);
WinMessageBox(handle, 'Button Text', $MBOK,
text);
WinWait(handle);
END;
------------------------------------------------------------------------
从对话框中的文本框检索选定的文本。
FUNCTION DlgGetSelectedText(REF whdlDialog: WINDOW, REF fieldName: STRING,
REF selectedText: STRING): INTEGER;
自变量说明 | 自变量名称说明 |
whdlDialog | 对话框的窗口句柄,该对话框包含要在其上进行操作的控件。如果命令从包含该控件的事件处理器发出,则可能使用伪参数 $Handle。 |
fieldName | 命令所寻址的对话框中的控件名称。可以在接口设计器或对话框规范文件的 DEFINE 语句中指定它。该名称是不区分大小写的。 |
selectedText | 用该自变量返回文本框的选定的文本。如果未选定文本,则返回一个 0 长度的字符串。如果有错误,则返回未知字符串。 |
KNOWLEDGEBASE dlgform;
ROUTINES
PROCEDURE Main;
(* ***** PRIVATE ***** *)
PRIVATE
VARIABLES
(* Global Variable to hold the Window handle of the dialog box *)
mainWindow : WINDOW;
ROUTINES
EVENT MainEvent is FORWARD;
PROCEDURE Main IS
ACTIONS
(* Create the dialog box using FORM_DLG from dlgform.df *)
(* FORM_DLG has one EntryField with id CONTROl_TEXT and *)
(* a button with the id BUTTON_TEXT *)
DlgCreate($Desktop, mainWindow, 'dlgform[FORM_DLG]', MainEvent);
WinWait(mainWindow);
END;
EVENT MainEvent IS
VARIABLES
selString : STRING;
ACTIONS
(* When the button is pressed, the selected text from the entryfield *)
(* is displayed in a messagebox *)
WHEN $Event IS $MsgSelect THEN
IF $fieldName = 'BUTTON_TEXT' THEN
DlgGetSelectedText(mainWindow, 'CONTROL_TEXT', sel String);
WinMessageBox(mainWindow, 'Selected Text', $MBOK, selString);
END;
END;
END;
------------------------------------------------------------------------
将 .dfc 文件中的新页插入现存窗体上的记事簿中。现存事件处理器和实例数据应用于新的窗体。
FUNCTION DlgInsertPage (VAL FORM : WINDOW
VAL NotebookId : STRING
VAL PageId : STRING
VAL FormSpec : STRING
VAL TabName : STRING
VAL Position : INTEGER
): INTEGER;
自变量说明 | 自变量名称说明 |
Format | 在其中插入新的页的窗体。 |
NotebookId | 在其中插入新的页的记事簿的标识。 |
PageId | 正插入的页的标识。 |
FormSpec | 窗体 “FILE[FORM_NAME]” 中子窗体的窗体规范。 |
TabName | 正插入的页的标签文本。 |
Position | 正插入的标签在其他标签中的位置。 |
KNOWLEDGEBASE dlgpage;
ROUTINES
PROCEDURE Main;
(* ***** PRIVATE ***** *)
PRIVATE
VARIABLES
(* Global Variable to hold the Window handle of the dialog box *)
mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES
ACTIONS
(* Create a dialog using the form PAGE_MAIN from dlgpage.df *)
(* PAGE_MAIN has a subform with notebook PAGE_NOTEBOOK as it's form *)
(* PAGE_NOTEBOOK currently has two tabs *)
DlgCreate($Desktop, mainWindow, 'dlgpage[PAGE_MAIN]', $NullHandler);
(* Insert the form FORM_TAB3 from dlgpage.df into the notebook specified *)
(* with the id PAGE_NOTEBOOK after the last page. The tab will have the *)
(* id 'Tab 3' *)
DlgInsertPage(mainWindow, 'PAGE_NOTEBOOK', '', 'dlgpage[FORM_TAB3]', 'Tab 3', $After);
WinWait(mainWindow);
END;
------------------------------------------------------------------------
在文本框、列表框或组合框的光标位置插入字符串。
FUNCTION DlgInsertString(VAL whdlDialog: WINDOW,
VAL fieldName: STRING,
VAL insertString: STRING): INTEGER;
自变量说明 | 自变量名称说明 |
whdlDialog | 对话框的窗口句柄,该对话框包含要在其上进行操作的控件。如果命令从包含该控件的事件处理器发出,则可能使用伪参数 $Handle。 |
fieldName | 命令所寻址的对话框中的控件名称。可以在接口设计器或对话框规范文件的 DEFINE 语句中指定它。该名称是不区分大小写的。 |
insertString | 要在控件中的光标位置插入的字符串。插入的文本替换选定的文本。 |
插入的文本替换选定的文本。
KNOWLEDGEBASE DlgIns_text;
TYPES
DLGDATA IS RECORD
sampleField: INTEGER;
END;
(* ******* PRIVATE ******** *)
PRIVATE
ROUTINES
(* ******** dialog box EVENT HANDLER ******** *)
EVENT DlgEvent( REF fields: DLGDATA ) IS
VARIABLES
insertString: STRING;
ACTIONS
(* All dialog box messages have pseudo parameters $FieldID, *)
(* and $FieldName *)
WHEN $Event IS $MsgChar THEN
WHEN $KeyCode IS $KeyFn2 THEN
(* Look for function key 2 *)
(* Prompt user for text to insert *)
IF WinEditField( $Desktop, insertString, 0, 0, 30,
'Enter insert text',
$WinAutoPos + $WinBorder
+ $WinTitle ) > 0
THEN
(* Field must be an MultiLineEditor, Entry Field, or ComboBox *)
DlgInsertString( $Handle, 'text_field', insertString );
END;
END;
END;
END;
PROCEDURE DialogExample IS
VARIABLES
fields: DLGDATA;
ACTIONS
DlgBox( $Desktop,'example[dialog1]', DlgEvent{ fields },fields );
END;
------------------------------------------------------------------------
允许查询对话框控件是启用的还是禁用的。
FUNCTION DlgInsertString(VAL whdlDialog: WINDOW,
VAL fieldName: STRING,
REF enabledState: BOOLEAN):
Integer;
自变量说明 | 自变量名称说明 |
whdlDialog | 对话框的窗口句柄 |
fieldName | 要测试的控件(不论是启用的还是禁用的)的名称。 |
enabledState | 如果控件是启用的,则为 TRUE;如果控件是禁用的,则为 FALSE。 |
KNOWLEDGEBASE DlgEnabl;
ROUTINES
PROCEDURE Main;
PRIVATE
ROUTINES
PROCEDURE Main IS
VARIABLES
Handle : WINDOW;
enabled : BOOLEAN;
ACTIONS
DlgCreate($Desktop,
Handle,
'dlgenabl[sample]',
$NullHandler);
(* enable button, check button status, display
result *)
DlgSetEnabled(Handle, 'test_button', TRUE);
DlgIsItemEnabled(Handle, 'test_button',
enabled);
WinMessageBox(Handle, 'Button Status', $MBOK,
enabled);
(* disable button, check button status, display
result *)
DlgSetEnabled(Handle, 'test_button', FALSE);
DlgIsItemEnabled(Handle, 'test_button',
enabled);
WinMessageBox(Handle, 'Button Status', $MBOK,
enabled);
WinWait(Handle);
END;
------------------------------------------------------------------------
清除来自任何文本框、SQLManage 或表控件的所有值。
FUNCTION DlgListBoxClear(VAL whdlDialog: WINDOW,
VAL fieldName: STRING): INTEGER;
自变量说明 | 自变量名称说明 |
whdlDialog | 对话框的窗口句柄,该对话框包含要在其上进行操作的控件。如果命令从包含该控件的事件处理器发出,则可能使用伪参数 $Handle。 |
fieldName | 被寻址的对话框中的控件名称列表。可以在接口设计器或对话框规范文件的 DEFINE 语句中指定控件名称。该名称是不区分大小写的。对于该列表中的每个控件名称都要执行该命令。将返回被处理的控件的数目。如果出现错误,则处理停止。如果错误发生在处理的第一个控件上,则由该语句返回错误代码。 |
如果在清除列表框时选定了一个值,则发送 $MsgSelect
(或 $MsgInitialize)。由于选定的值
不再存在,所以对该消息的拒绝无效。
KNOWLEDGEBASE dlglist;
TYPES
FIELDREC IS RECORD
test_list_box: STRING;
END;
ROUTINES
PROCEDURE ExampleDialog;
PRIVATE
CONSTANTS
itemList IS { 'new item 1', 'new item 2', 'new item 3' }: LIST OF STRING;
ROUTINES
(* ******** dialog box EVENT HANDLER ******** *)
EVENT DlgEvent( REF fields: FIELDREC ) IS
VARIABLES
index: INTEGER;
listEntry: STRING;
ACTIONS
WHEN $Event IS $MsgCreate THEN
DlgListBoxInsert( $Handle, 'test_list_box',
'Init value'
ELSWHEN $MsgInitialize THEN
WinMessageBox( $Handle, 'Initialize message', $MBYesNo,
'Old value = ' & $EventParm( 3, STRING ) &
'New value = ' & $EventParm( 4, STRING ));
ELSWHEN $MsgSelect THEN
WHEN $FieldName IS 'but_lb_clear' THEN
DlgListBoxClear( $Handle, 'test_list_box' );
ELSWHEN 'but_lb_insert' THEN
DlgListBoxInsert( $Handle, 'test_list_box',
'new item' );
DlgListBoxInsert( $Handle, 'test_list_box',
itemList );
ELSWHEN 'but_lb_delete' THEN
DlgListBoxDelete( $Handle, 'test_list_box' );
ELSWHEN 'but_lb_update' THEN
DlgFieldValue( $Handle, 'test_list_box',
listEntry );
WinEditField( $Desktop, listEntry, 0, 0, 30, 'New
value?',
$WinAutoPos + $WinBorder + $WinTitle );
DlgListBoxUpdate( $Handle, 'test_list_box',
listEntry );
ELSWHEN 'but_lb_set_index' THEN
WinEditField( $Desktop, index, 0, 0, 30,
'New Index?',
$WinAutoPos + $WinBorder
+ $WinTitle );
DlgSetListBoxIndex( $Handle,
'test_list_box', index );
ELSWHEN 'but_lb_index' THEN
WinMessageBox( $Handle, 'Listbox index', $MBOK,
DlgListBoxIndex( $Handle,
'test_list_box' ) );
END;
END;
END;
PROCEDURE ExampleDialog IS
VARIABLES
whdlDialog: WINDOW;
result: INTEGER;
data: FIELDREC;
ACTIONS
result := DlgCreate( $Desktop, whdlDialog, 'dlglist', DlgEvent, {data});
IF result < 1 THEN
WinMessageBox( $Desktop, 'Error', $MBOK + $MBIconError,
'dialog box Open failed' & result );
END;
WinWait( whdlDialog );
END;
------------------------------------------------------------------------
删除任何文本框、SQLManage 或表控件中的选定元素。
FUNCTION DlgListBoxDelete(VAL whdlDialog: WINDOW,
VAL fieldName: STRING): INTEGER;
自变量说明 | 自变量名称说明 |
whdlDialog | 对话框的窗口句柄,该对话框包含要在其上进行操作的控件。如果命令从包含该控件的事件处理器发出,则可能使用伪参数 $Handle。 |
fieldName | 命令所寻址的对话框中的控件的名称。可以在接口设计器或对话框规范文件的 DEFINE 语句中指定它。该名称是不区分大小写的。 |
删除列表框中选定的元素将发送一个具有
$Unknown 值的 $MsgSelect(或 $MsgInitialize)。由于以前选择的值不再存在,所以对该消息的拒绝无效。
KNOWLEDGEBASE dlglist;
TYPES
FIELDREC IS RECORD
test_list_box: STRING;
END;
ROUTINES
EVENT DlgEvent( REF fields: FIELDREC );
PROCEDURE ExampleDialog;
PRIVATE
CONSTANTS
itemList IS {'new item 1', 'new item 2', 'new item 3' }: LIST OF STRING;
ROUTINES
(* ******** dialog box EVENT HANDLER *********)
EVENT DlgEvent( REF fields: FIELDREC ) IS
VARIABLES
index: INTEGER;
listEntry: STRING;
ACTIONS
WHEN $Event IS $MsgCreate THEN
DlgListBoxInsert( $Handle, 'test_list_box',
'Init value' );
ELSWHEN $MsgInitialize THEN
WinMessageBox( $Handle, 'Initialize message', $MBYesNo,
'Old value = ' & $EventParm( 3, STRING )
& '' 'New value = '
& $EventParm( 4, STRING ));
ELSWHEN $MsgSelect THEN
WHEN $FieldName IS 'but_lb_clear' THEN
DlgListBoxClear( $Handle, 'test_list_box' );
ELSWHEN 'but_lb_insert' THEN
DlgListBoxInsert( $Handle, 'test_list_box',
'new item' );
DlgListBoxInsert( $Handle, 'test_list_box',
itemList );
ELSWHEN 'but_lb_delete' THEN
DlgListBoxDelete( $Handle, 'test_list_box' );
ELSWHEN 'but_lb_update' THEN
DlgFieldValue( $Handle, 'test_list_box', listEntry );
WinEditField( $Desktop, listEntry, 0, 0, 30,
'New value?',
$WinAutoPos + $WinBorder + $WinTitle );
DlgListBoxUpdate( $Handle, 'test_list_box',
listEntry );
ELSWHEN 'but_lb_set_index' THEN
WinEditField( $Desktop, index, 0, 0, 30,
'New Index?', $WinAutoPos + $WinBorder
+ $WinTitle );
DlgSetListBoxIndex( $Handle, 'test_list_box', index );
ELSWHEN 'but_lb_index' THEN
WinMessageBox( $Handle, 'Listbox index', $MBOK,
DlgListBoxIndex( $Handle,
'test_list_box' ) );
END;
END;
END;
PROCEDURE ExampleDialog IS
VARIABLES
whdlDialog: WINDOW;
result: INTEGER;
data: FIELDREC
ACTIONS
result := DlgCreate( $Desktop, whdlDialog, 'dlglist',
DlgEvent, {data});
IF result < 1 THEN
WinMessageBox( $Desktop, 'Error', $MBOK + $MBIconError,
'dialog box Open failed' & result );
END;
WinWait( whdlDialog );
END;
------------------------------------------------------------------------
查询列表框、SQLManage 或表控件的选定项目的索引。
FUNCTION DlgListBoxIndex(VAL whdlDialog : WINDOW,
VAL fieldName : STRING
): INTEGER;
自变量说明 | 自变量名称说明 |
whdlDialog | 对话框的窗口句柄,该对话框包含要在其上进行操作的控件。如果命令从包含该控件的事件处理器发出,则可能使用伪参数 $Handle。 |
fieldName | 命令所寻址的对话框中的控件的名称。可以在接口设计器或对话框规范文件的 DEFINE 语句中指定它。该名称是不区分大小写的。 |
KNOWLEDGEBASE dlglist;
TYPES
FIELDREC IS RECORD
test_list_box: STRING;
END;
ROUTINES
EVENT DlgEvent( REF fields: FIELDREC );
PROCEDURE ExampleDialog;
PRIVATE
CONSTANTS
itemList IS { 'new item 1', 'new item 2', 'new item 3' }: LIST OF STRING;
ROUTINES
(* ******** dialog box EVENT HANDLER *********)
EVENT DlgEvent( REF fields: FIELDREC ) IS
VARIABLES
1index: INTEGER;
listEntry: STRING;
ACTIONS
WHEN $Event IS $MsgCreate THEN
DlgListBoxInsert( $Handle, 'test_list_box', 'Init value' );
ELSWHEN $MsgInitialize THEN
WinMessageBox( $Handle, 'Initialize message',
$MBYesNo, 'Old value' &
$EventParm( 3, STRING ) &
'' 'New value = ' &
$EventParm( 4, STRING ));
ELSWHEN $MsgSelect THEN
WHEN $FieldName IS 'but_lb_clear' THEN
DlgListBoxClear( $Handle, 'test_list_box' );
ELSWHEN 'but_lb_insert' THEN
DlgListBoxInsert( $Handle, 'test_list_box', 'new item' );
DlgListBoxInsert( $Handle, 'test_list_box', itemList );
ELSWHEN 'but_lb_delete' THEN
DlgListBoxDelete( $Handle, 'test_list_box' );
ELSWHEN 'but_lb_update' THEN
DlgFieldValue( $Handle, 'test_list_box',
listEntry );
WinEditField( $Desktop, listEntry, 0, 0, 30,'New value?',
$WinAutoPos + $WinBorder + $WinTitle );
DlgListBoxUpdate( $Handle, 'test_list_box', listEntry );
ELSWHEN 'but_lb_set_index' THEN
WinEditField( $Desktop, index, 0, 0, 30, 'New Index?',
$WinAutoPos + $WinBorder
+ $WinTitle );
DlgSetListBoxIndex( $Handle, 'test_list_box', index );
ELSWHEN 'but_lb_index' THEN
WinMessageBox( $Handle, 'Listbox index', $MBOK,
DlgListBoxIndex( $Handle, 'test_list_box' ) );
END;
END;
END;
PROCEDURE ExampleDialog IS
VARIABLES
whdlDialog: WINDOW;
result: INTEGER;
ACTIONS
result := DlgCreate( $Desktop, whdlDialog, 'dlglist',
DlgEvent );
IF result < 1 THEN
WinMessageBox( $Desktop, 'Error', $MBOK + $MBIconError,
'dialog box Open failed' & result );
END;
WinWait( whdlDialog );
END;
------------------------------------------------------------------------
将一个值插入任何文本框、SQLManage 或表控件中。
FUNCTION DlgListBoxInsert(VAL whdlDialog: WINDOW,
VAL fieldName: STRING,
VAL newValues: LIST OF ANY): INTEGER;
自变量说明 | 自变量名称说明 |
whdlDialog | 对话框的窗口句柄,该对话框包含要在其上进行操作的控件。如果命令从包含该控件的事件处理器发出,则可能使用伪参数 $Handle。 |
fieldName | 命令所寻址的对话框中的控件的名称。可以在接口设计器或对话框规范文件的 DEFINE 语句中指定它。该名称是不区分大小写的。 |
newValue | 要插入列表框的值或值的列表。列表中的每个项目都被转换成字符串并被插入列表框。插入在选定的项目后面开始。如果未选定项目,则将新的值插入末尾。可以指定排序次序属性。该属性覆盖插入场所。 OS/2 对升序和降序排序都支持。 Windows 仅支持升序排序。 表控件的排序次序不受支持。 对于表控件,该参数可以是记录或字符串列表。记录字段名与列字段名相匹配。如果列字段名不与记录字段名相匹配,则该列将保持为空。 |
KNOWLEDGEBASE dlglist;
TYPES
FIELDREC IS RECORD
test_list_box: STRING;
END;
ROUTINES
EVENT DlgEvent( REF fields: FIELDREC );
PROCEDURE ExampleDialog;
PRIVATE
CONSTANTS
itemList IS { 'new item 1', 'new item 2', 'new item 3' }: LIST OF STRING;
ROUTINES
(* ******** dialog box EVENT HANDLER *********)
EVENT DlgEvent( REF fields: FIELDREC ) IS
VARIABLES
index: INTEGER;
listEntry: STRING;
ACTIONS
WHEN $Event IS $MsgCreate THEN
DlgListBoxInsert( $Handle, 'test_list_box',
'Init value' );
ELSWHEN $MsgInitialize THEN
WinMessageBox( $Handle, 'Initialize message',
$MBYesNo, 'Old value = ' &
$EventParm( 3, STRING ) & ''
'New value = ' &
$EventParm( 4, STRING ));
ELSWHEN $MsgSelect THEN
WHEN $FieldName IS 'but_lb_clear' THEN
DlgListBoxClear( $Handle, 'test_list_box' );
ELSWHEN 'but_lb_insert' THEN
DlgListBoxInsert( $Handle, 'test_list_box',
'new item' );
DlgListBoxInsert( $Handle, 'test_list_box', itemList );
ELSWHEN 'but_lb_delete' THEN
DlgListBoxDelete( $Handle, 'test_list_box' );
ELSWHEN 'but_lb_update' THEN
DlgFieldValue( $Handle, 'test_list_box',
listEntry );
WinEditField( $Desktop, listEntry, 0, 0, 30, 'New value?',
$WinAutoPos +
$WinBorder + $WinTitle );
DlgListBoxUpdate( $Handle, 'test_list_box',
listEntry );
ELSWHEN 'but_lb_set_index' THEN
WinEditField( $Desktop, index, 0, 0, 30,
'New Index?',
$WinAutoPos + $WinBorder +
$WinTitle);
DlgSetListBoxIndex( $Handle, 'test_list_box',
index );
ELSWHEN 'but_lb_index' THEN
WinMessageBox( $Handle, 'Listbox index', $MBOK,
DlgListBoxIndex( $Handle,
'test_list_box' ) );
END;
END;
END;
PROCEDURE ExampleDialog IS
VARIABLES
whdlDialog: WINDOW;
result: INTEGER;
ACTIONS
result := DlgCreate( $Desktop, whdlDialog, 'dlglist', DlgEvent );
IF result < 1 THEN
WinMessageBox( $Desktop, 'Error', $MBOK + $MBIconError,
'dialog box Open failed' & result );
END;
WinWait( whdlDialog );
END;
------------------------------------------------------------------------
更新 SQLManage 或表控件的选定的值。
FUNCTION DlgListBoxUpdate(VAL whdlDialog: WINDOW,
VAL fieldName: STRING, VAL
updateValue: ANY): INTEGER;
自变量说明 | 自变量名称说明 |
whdlDialog | 对话框的窗口句柄,该对话框包含要在其上进行操作的控件。如果命令从包含该控件的事件处理器发出,则可能使用伪参数 $Handle。 |
fieldName | 命令所寻址的对话框中的控件的名称。可以在接口设计器或对话框规范文件的 DEFINE 语句中指定它。该名称是区不分大小写的。 |
updateValue | 该参数值替换 SQLManage 或表控件中的选定记录或字符串列表。记录字段与列名称相匹配。任何不与记录字段相匹配的列将保持为空。如果未选定记录,则返回“未找到字段”出错消息。 |
KNOWLEDGEBASE dlglist;
TYPES
FIELDREC IS RECORD
test_list_box: STRING;
END;
ROUTINES
EVENT DlgEvent( REF fields: FIELDREC );
PROCEDURE ExampleDialog;
PRIVATE
CONSTANTS
itemList IS { 'new item 1', 'new item 2', 'new item 3': LIST OF STRING;
ROUTINES
(* ******** dialog box EVENT HANDLER *********)
EVENT DlgEvent( REF fields: FIELDREC ) IS
VARIABLES
index: INTEGER;
listEntry: STRING;
ACTIONS
WHEN $Event IS $MsgCreate THEN
DlgListBoxInsert( $Handle, 'test_list_box', 'Init value' );
ELSWHEN $MsgInitialize THEN
WinMessageBox( $Handle, 'Initialize message', $MBYesNo,
'Old value = ' & $EventParm( 3, STRING ) & ''
'New value = ' & $EventParm( 4, STRING ));
ELSWHEN $MsgSelect THEN
WHEN $FieldName IS 'but_lb_clear' THEN
DlgListBoxClear( $Handle, 'test_list_box' );
ELSWHEN 'but_lb_insert' THEN
DlgListBoxInsert( $Handle, 'test_list_box',
'new item' );
DlgListBoxInsert( $Handle, 'test_list_box', itemList );
ELSWHEN 'but_lb_delete' THEN
DlgListBoxDelete( $Handle, 'test_list_box' );
ELSWHEN 'but_lb_update' THEN
DlgFieldValue( $Handle, 'test_list_box', listEntry );
WinEditField( $Desktop, listEntry, 0, 0, 30,
'New value?',
$WinAutoPos + $WinBorder + $WinTitle );
DlgListBoxUpdate( $Handle, 'test_list_box',
listEntry );
ELSWHEN 'but_lb_set_index' THEN
WinEditField( $Desktop, index, 0, 0, 30,
'New Index?', $WinAutoPos
+ $WinBorder + $WinTitle );
DlgSetListBoxIndex( $Handle, 'test_list_box',
index );
ELSWHEN 'but_lb_index' THEN
WinMessageBox( $Handle, 'Listbox index', $MBOK,
DlgListBoxIndex( $Handle,
'test_list_box' ) );
END;
END;
END;
PROCEDURE ExampleDialog IS
VARIABLES
whdlDialog: WINDOW;
result: INTEGER;
ACTIONS
result := DlgCreate( $Desktop, whdlDialog, 'dlglist',
DlgEvent );
IF result < 1 THEN
WinMessageBox( $Desktop, 'Error', $MBOK + $MBIconError,
'dialog box Open failed' & result );
END;
WinWait( whdlDialog box );
END;
------------------------------------------------------------------------
将 .df 文件中的窗体加载到现存的子窗体控件中。(替换任何现存的窗体。)
FUNCTION DlgLoadSubForm( VAL dialog : WINDOW,
VAL subform : STRING,
VAL resource : STRING, ) : INTEGER;
自变量说明 | 自变量名称说明 |
subform | 向其加载新窗体的子窗体控件的名称。 |
resource | 窗体的标准格式的资源字符串参考。 |
KNOWLEDGEBASE dlgsub;
ROUTINES
PROCEDURE Main;
(* ***** PRIVATE ***** *)
PRIVATE
VARIABLES
(*Global Variable to hold the Window handle of the window *) mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES
ACTIONS
DlgCreate($Desktop, mainWindow, 'dlgsub[FORM_MAIN]', $NullHandler);
(* Load the form FORM_NEW from dlgsub.df into the subform control *)
(* CONTROL_SUBFORM on the current form *)
DlgLoadSubForm(mainWindow, 'CONTROL_SUBFORM', 'dlgsub[FORM_NEW]');
WinWait(mainWindow);
END;
------------------------------------------------------------------------
查询 SQLManage 或表控件的声明的列。
FUNCTION DlgQueryColumnNames(VAL whdlDialog: WINDOW,
VAL fieldName: STRING,
REF columnNames LIST OF STRING): INTEGER;
自变量说明 | 自变量名称说明 |
whdlDialog | 对话框的窗口句柄,该对话框包含要在其上进行操作的控件。如果命令从包含该控件的事件处理器发出,则可能使用伪参数 $Handle。 |
fieldName | 命令所寻址的对话框中的控件的名称。可以在接口设计器或对话框规范文件的 DEFINE 语句中指定它。该名称是不区分大小写的。 |
columnName | 一个字符串列表,SQLManage 或表控件的声明的列名称返回该列表中。列名称按声明它们的顺序返回。 |
如下例所示,WinWriteLN 按次序写出整个字符串列表。
KNOWLEDGEBASE DlgCols;
TYPES
DLGDATA IS RECORD
sampleField: INTEGER;
END;
SQLDATA IS RECORD
firstName: STRING;
lastName: STRING;
END;
(* ******* PRIVATE *********)
PRIVATE
ROUTINES
(* ******** dialog box EVENT HANDLER *********)
EVENT DlgEvent( REF fields: DLGDATA ) IS
VARIABLES
columnNames: LIST OF STRING;
whdl: WINDOW;
ACTIONS
(* All dialog box messages have pseudo parameters $FieldID,
and $FieldName *)
WHEN $Event IS $MsgCreate THEN
DlgQueryColumnNames( $Handle, 'sql_manage_field',
columnNames );
WinCreateScrollWindow( $Desktop, whdl, $NullHandler,
0, 0, 30, 12,
Column Names', $TimesRoman, 12,
$WinBorder + $WinTitle +
WinResize + $WinMinMax +
$WinHScroll + $WinVScroll
+ $WinSysMenu + $WinAutoPos );
WinWriteLN( whdl, columnNames );
END;
END;
PROCEDURE DialogExample IS
VARIABLES
fields: DLGDATA;
ACTIONS
DlgBox( $Desktop,'example[dialog1]', DlgEvent{ fields },fields );
END;
------------------------------------------------------------------------
查询列表框、组合框、表控件或 SQLManage 当前包含的项数。
FUNCTION DlgQueryItemCount (VAL whdlDialog: WINDOW,
VAL fieldName: STRING,
REF itemCount: INTEGER): Integer;
自变量说明 | 自变量名称说明 |
whdlDialog | 对话框的窗口句柄。 |
fieldName | 要查询其项目计数的控件的字段名称。 |
itemCount | 调用该函数后,itemCount 保留控件所包含的项数。 |
该函数只能与包含数据列表的控件(列表框、组合框、表控件或 SQLManage)一起使用。
KNOWLEDGEBASE QueryCnt;
ROUTINES
PROCEDURE Main;
PRIVATE
ROUTINES
PROCEDURE Main IS
VARIABLES
Handle : WINDOW;
MyList : LIST OF STRING;
Count : INTEGER;
ACTIONS
DlgCreate($Desktop,
Handle,
'querycnt[sample]',
$NullHandler);
ListInsert(MyList, 'Item #1');
DlgListBoxInsert(Handle, 'list_box', MyList);
DlgQueryItemCount(Handle, 'list_box', Count);
WinMessageBox(Handle, 'DlgQueryItemCount', $MBOK,
Count & ' item(s).');
WinWait(Handle);
END;
------------------------------------------------------------------------
查询列表框、组合框或表的给定行的内容。
FUNCTION DlgQueryRowData (VAL whdlDialog: WINDOW,
VAL fieldName: STRING,
VAL index: INTEGER,
REF rowData: ANY ) : INTEGER
自变量说明 | 自变量名称说明 |
whdlDialog | 对话框的窗口句柄,该对话框包含要在其上进行操作的控件。如果命令从包含该控件的事件处理器发出,则可能使用伪参数 $Handle。 |
fieldName | 命令所寻址的对话框中的控件的名称。 |
index | 所需数据行的下标。 |
rowData | 保留查询的行的值。对于 LISTBOX 和 COMBOBOX 类型的控件,该参数应为 STRING 类型。对于表控件和 SQLManage 控件,该参数应为 RECORD 类型。 |
该函数只能与保留数据列表的控件(即列表框、组合框或表)一起使用。
KNOWLEDGEBASE QueryCnt;
TYPES
TABLEREC IS RECORD
System : STRING;
Component : STRING;
Item : STRING;
Module : STRING;
END;
EVENT DlgEvent(REF form : FORMREC) IS
VARIABLES
rowdata : TABLEREC;
retval : INTEGER;
ACTIONS
WHEN $Event IS $MsgSelect THEN
IF $Fieldname = 'GetRow' THEN
-- Get row data for row number 5
retval := DlgQueryRowData($handle, 'TABLE1', 5, rowda ta);
IF (retval = 1) THEN
WinMessageBox($handle, 'Row Data&', $MBOK,
'System value for row 5 is ' &
rowdata.System);
END;
END;
END;
END;
------------------------------------------------------------------------
将光标移到指定的控件。
FUNCTION DlgSelectField(VAL whdlDialog: WINDOW,
VAL fieldName: STRING): INTEGER;
自变量说明 | 自变量名称说明 |
whdlDialog | 对话框的窗口句柄,该对话框包含要在其上进行操作的控件。如果命令从包含该控件的事件处理器发出,则可能使用伪参数 $Handle。 |
fieldName | 命令所寻址的对话框中的控件的名称。可以在接口设计器或对话框规范文件的 DEFINE 语句中指定它。该名称是区分不大小写的。 |
将光标移到新的控件会生成 $MsgExitField
和 $MsgEnterField。该对话框
事件处理器可能会拒绝这些消息中的任何一个并导致该操作失败。
KNOWLEDGEBASE DlgSLCT;
TYPES
DLGDATA IS RECORD
sampleField: INTEGER;
END;
(* ******* PRIVATE *********)
PRIVATE
ROUTINES
(* ******** dialog box EVENT HANDLER *********)
EVENT DlgEvent( REF fields: DLGDATA ) IS
ACTIONS
(* All dialog box messages have pseudo parameters $FieldID, and $FieldName *)
WHEN $Event IS $MsgCreate THEN
(* Select initial field for cursor *)
DlgSelectField( $Handle, 'startField' );
END;
END;
PROCEDURE DialogExample IS
VARIABLES
fields: DLGDATA;
ACTIONS
DlgBox( $Desktop,'example[dialog1]', DlgEvent{ fields },fields );
END;
------------------------------------------------------------------------
更改按钮上的标记。
FUNCTION DlgSetButtonText(VAL whdlDialog: WINDOW,
VAL fieldName: STRING,
VAL ButtonText: STRING): INTEGER;
自变量说明 | 自变量名称说明 |
whdlDialog | 对话框的窗口句柄,该对话框包含要在其上进行操作的控件。如果命令从包含该控件的事件处理器发出,则可能使用伪参数 $Handle。 |
fieldName | 命令所寻址的对话框中的控件的名称。可以在接口设计器或对话框规范文件的 DEFINE 语句中指定它。该名称是不区分大小写的。 |
ButtonText | 按钮的新标记。该控件必须是一个按钮。 |
KNOWLEDGEBASE DlgButton;
TYPES
DlgData IS RECORD
allowEdit: BOOLEAN;
sampleField: INTEGER;
END;
ROUTINES
PROCEDURE DialogExample;
PRIVATE
ROUTINES
EVENT DlgEvent(REF fields: DlgData) IS
ACTIONS
WHEN $Event IS $MsgCreate THEN
IF NOT fields.allowEdit THEN
DlgSetButtonText($Handle,'editButton','View');
(* SAMPLEFIELD must be a MultiLineEditor, entry field,or combo box *)
DlgSetReadonly($Handle,'SAMPLEFIELD',TRUE);
END;
END;
END (* Dlg Event *);
PROCEDURE DialogExample IS
VARIABLES
fields: DlgData;
ACTIONS
fields.allowEdit := FALSE;
DlgBox($Desktop,'example[dialog1]',
DlgEvent{fields},fields);
END (* dialog box Example *);
------------------------------------------------------------------------
设置控件的启用或禁用状态。
FUNCTION DlgSetEnabled(VAL whdlDialog: WINDOW,
VAL fieldNames: LIST OF STRING [,
VAL newState: BOOLEAN ]): INTEGER;
自变量说明 | 自变量名称说明 |
whdlDialog | 对话框的窗口句柄,该对话框包含要在其上进行操作的控件。如果命令从包含该控件的事件处理器发出,则可能使用伪参数 $Handle。 |
fieldName | 命令所寻址的对话框中的控件的名称。可以在接口设计器或对话框规范文件的 DEFINE 语句中指定它。该名称是不区分大小写的。对于该列表中的每个控件名都要执行该命令。将返回被处理的控件的数目。在遇到错误时停止处理。系统变量 $DlgError 设为错误代码。如果错误发生在处理的第一个控件上,则由该语句返回错误代码。 |
newState | 控件的新状态。这个参数是可选的。如果省略,则假定为 TRUE。 |
KNOWLEDGEBASE dlg_set;
TYPES
FIELDREC IS RECORD
field_entry: STRING;
field_radio: STRING;
field_slide: STRING;
field_list: STRING;
field_button: STRING;
field_check_box: STRING;
field_mle: STRING;
field_combo: STRING;
field_pattern: STRING;
test_list_box: STRING;
test_combo_box: STRING;
END;
ROUTINES
EVENT DlgEvent( REF fields: FIELDREC );
PROCEDURE ExampleDialog;
PRIVATE
CONSTANTS
fieldList IS { 'attrib_field_entry',
'attrib_field_radio',
'attrib_field_slide',
'attrib_field_list',
'attrib_field_button',
'attrib_field_check_box',
'attrib_field_mle',
'attrib_field_combo',
'attrib_field_pattern'
} : LIST OF STRING;
textFieldList IS { 'attrib_field_entry',
'attrib_field_mle',
'attrib_field_combo',
'attrib_field_pattern'
} : LIST OF STRING;
ROUTINES
(* ******** dialog box EVENT HANDLER *********)
EVENT DlgEvent( REF fields: FIELDREC ) IS
ACTIONS
WHEN $Event IS $MsgSelect THEN
WHEN $FieldName IS 'but_disabled_on' THEN
DlgSetEnabled( $Handle, fieldList, FALSE );
ELSWHEN 'but_disabled_off' THEN
DlgSetEnabled( $Handle, fieldList, TRUE );
ELSWHEN 'but_hidden_on' THEN
DlgSetHidden( $Handle, fieldList, TRUE );
ELSWHEN 'but_hidden_off' THEN
DlgSetHidden( $Handle, fieldList, FALSE );
ELSWHEN 'but_mandatory_on' THEN
DlgSetMandatory( $Handle, textFieldList, TRUE );
ELSWHEN 'but_mandatory_off' THEN
DlgSetMandatory( $Handle, textFieldList, FALSE );
ELSWHEN 'but_read_only_on' THEN
DlgSetReadOnly( $Handle, textFieldList, TRUE );
ELSWHEN 'but_read_only_off' THEN
DlgSetReadOnly( $Handle, textFieldList, FALSE );
END;
END;
END;
PROCEDURE ExampleDialog IS
VARIABLES
whdlDialog: WINDOW;
result: INTEGER;
ACTIONS
result := DlgCreate( $Desktop, whdlDialog, 'dlg_set',
DlgEvent );
IF result < 1 THEN
WinMessageBox( $Desktop, 'Error', $mbok +
$MBIconError,
'dialog box Open failed' & result );
END;
WinWait( whdlDialog box );
END;
------------------------------------------------------------------------
设置对话框控件的值和任何关联的实例数据。
FUNCTION DlgSetFieldValue(VAL whdlDialog: WINDOW,
VAL fieldName: STRING,
VAL newValue: ANY): INTEGER;
自变量说明 | 自变量名称说明 |
whdlDialog | 对话框的窗口句柄,该对话框包含要在其上进行操作的控件。如果命令从包含该控件的事件处理器发出,则可能使用伪参数 $Handle。 |
fieldName | 命令所寻址的对话框中的控件的名称。可以在接口设计器或对话框规范文件的 DEFINE 语句中指定它。该名称是不区分大小写的。 |
newValue | 将寻址的控件设置为参数的值。 如果控件是复选框、选项按钮或滑块,则将新的值转换成整数,并将该控件设置成得到的值。如果转换失败,则结果通常是零。 对于复选框,零是非复选的。而任何其他值都是复选的。 对于所有其他控件类型,此值将被转换成字符串。 对于文本框、组合框和消息,将把该控件设置为新字符串。 对于列表框,则在列表中搜索匹配的字符串。如果找到匹配的字符串,则选定它。 SQLManage 和表控件将被忽略。如果控件更新成功,并且有一个实例数据字段绑定到对话框控件,则更新该实例数据。对字段值进行设置将为该0字段生成一个选择消息。 |
对控件的值进行设置将生成 $MsgSelect。如果更改了控件的值,则生成 $MsgInitialize。
对话框事件处理器可能会拒绝 $MsgSelect。
如果控件中的所有空间为空,则从对话框控件中将空格去掉。如果用户在控件中
输入了空格字符串,或对话框规范文件包含用于该控件的空格字符串,则发生这种情况。
在这两种情况下,如果请求空控件的值,则返回 $Unknown。
KNOWLEDGEBASE DlgSet_f;
TYPES
DLGDATA IS RECORD
sampleField: INTEGER;
END;
(* ******* PRIVATE *********)
PRIVATE
ROUTINES
(* ******** dialog box EVENT HANDLER *********)
EVENT DlgEvent( REF fields: DLGDATA ) IS
ACTIONS
(* All dialog box messages have pseudo parameters $FieldID,and $FieldName*)
WHEN $Event IS $MsgCreate THEN
(* Select initial field for cursor *)
DlgSetFieldValue( $Handle, 'messageField',
'New text' );
END;
END;
PROCEDURE DialogExample IS
VARIABLES
fields: DLGDATA;
ACTIONS
DlgBox( $Desktop,'example[dialog1]', DlgEvent{ fields },fields );
END;
------------------------------------------------------------------------
设置控件的可见或隐藏状态。
FUNCTION DlgSetHidden(VAL whdlDialog: WINDOW,
VAL fieldNames: LIST OF STRING [,
VAL newState: BOOLEAN ]): INTEGER;
自变量说明 | 自变量名称说明 |
whdlDialog | 对话框的窗口句柄,该对话框包含要在其上进行操作的控件。如果命令从包含该控件的事件处理器发出,则可能使用伪参数 $Handle。 |
fieldName | 命令所寻址的对话框中的控件的名称。可以在接口设计器或对话框规范文件的 DEFINE 语句中指定它。该名称是不区分大小写的。对于该列表中的每个控件名都要执行该命令。将返回被处理的控件的数目。在遇到错误时停止处理。并把系统变量 $DlgError 设置成错误代码。如果错误发生在处理的第一个控件上,则由该语句返回错误代码。 |
newState | 控件的新状态。这个参数是可选的。如果省略,则假定为 TRUE。 |
KNOWLEDGEBASE dlg_set;
TYPES
FIELDREC IS RECORD
field_entry: STRING;
field_radio: STRING;
field_slide: STRING;
field_list: STRING;
field_button: STRING;
field_check_box: STRING;
field_mle: STRING;
field_combo: STRING;
field_pattern: STRING;
test_list_box: STRING;
test_combo_box: STRING;
END;
ROUTINES
EVENT DlgEvent( REF fields: FIELDREC );
PROCEDURE ExampleDialog;
PRIVATE
CONSTANTS
fieldList IS
{ 'attrib_field_entry',
'attrib_field_radio',
'attrib_field_slide',
'attrib_field_list',
'attrib_field_button',
'attrib_field_check_box',
'attrib_field_mle',
'attrib_field_combo',
'attrib_field_pattern'
} : LIST OF STRING;
textFieldList IS { 'attrib_field_entry',
'attrib_field_mle',
'attrib_field_combo',
'attrib_field_pattern'
} : LIST OF STRING;
ROUTINES
(* ******** dialog box EVENT HANDLER *********)
EVENT DlgEvent( REF fields: FIELDREC ) IS
ACTIONS
WHEN $Event IS $MsgSelect THEN
WHEN $FieldName IS 'but_disabled_on' THEN
DlgSetEnabled( $Handle, fieldList, FALSE );
ELSWHEN 'but_disabled_off' THEN
DlgSetEnabled( $Handle, fieldList, TRUE );
ELSWHEN 'but_hidden_on' THEN
DlgSetHidden( $Handle, fieldList, TRUE );
ELSWHEN 'but_hidden_off' THEN
DlgSetHidden( $Handle, fieldList, FALSE );
ELSWHEN 'but_mandatory_on' THEN
DlgSetMandatory( $Handle, textFieldList, TRUE );
ELSWHEN 'but_mandatory_off' THEN
DlgSetMandatory( $Handle, textFieldList, FALSE );
ELSWHEN 'but_read_only_on' THEN
DlgSetReadOnly( $Handle, textFieldList, TRUE );
ELSWHEN 'but_read_only_off' THEN
DlgSetReadOnly( $Handle, textFieldList, FALSE );
END;
END;
END;
PROCEDURE ExampleDialog IS
VARIABLES
whdlDialog: WINDOW;
result: INTEGER;
ACTIONS
result := DlgCreate( $Desktop, whdlDialog, 'dlg_set',
DlgEvent );
IF result < 1 THEN
WinMessageBox( $Desktop, 'Error', $mbok + $MBIconError,
'dialog box Open failed' & result );
END;
WinWait( whdlDialog);
END;
------------------------------------------------------------------------
根据指数在列表框或表控件中选择一个或多个项目。
FUNCTION DlgSetListBoxIndex(VAL whdlDialog: WINDOW,
VAL fieldName: STRING,
VAL newIndex:INTEGER | INTEGER
自变量说明 | 自变量名称说明 |
whdlDialog | 对话框的窗口句柄,该对话框包含要在其上进行操作的控件。如果命令从包含该控件的事件处理器发出,则可能使用伪参数 $Handle。 |
fieldName | 命令所寻址的对话框中的控件的名称。可以在接口设计器或对话框规范文件的 DEFINE 语句中指定它。该名称是不区分大小写的。 |
newIndex | 要选择的项目的基于 1 的索引。如果索引超出范围,则返回 0。如果传入了整数列表,并且控件能够进行多项选择,则选定列表中的所有项目。 |
将列表框设置成新的值,会发送 $MsgSelect(
或 $MsgInitialize)。即使新索引的值与旧索引的值相同,
也要发送该消息。
注:将索引设置为 0,则取消对标准列表框中的所有项目,但表控件除外。
DlgSetListBoxIndex($Handle,'USER_LIST',5);
------------------------------------------------------------------------
设置控件的强制状态。
FUNCTION DlgSetMandatory(VAL whdlDialog: WINDOW,
VAL fieldNames: LIST OF STRING,
VAL newState: BOOLEAN): INTEGER;
自变量说明 | 自变量名称说明 |
whdlDialog | 对话框的窗口句柄,该对话框包含要在其上进行操作的控件。如果命令从包含该控件的事件处理器发出,则可能使用伪参数 $Handle。 |
fieldName | 命令所寻址的对话框中的控件的名称。可以在接口设计器或对话框规范文件的 DEFINE 语句中指定它。该名称是不区分大小写的。对于该列表中的每个控件名都要执行该命令。将返回被处理的控件的数目。在遇到错误时停止处理。并把系统变量 $DlgError 设置成错误代码。如果错误发生在处理的第一个控件上,则由该语句返回错误代码。 |
newState | 控件的新状态。这个参数是可选的。如果省略,则假定为 TRUE。 |
可以使用 DlgSetMandatory 来更改对话框控件的强制状态。例如,如果一个控件不是
强制的,但在一定的环境下,则可以在对话框的对话框事件处理器中使用 DlgSetMandatory
语句($Handle,'THAT_FIELD',TRUE);
以使控件成为强制的。Tivoli 服务台开发工具包
对话框系统不允许接受具有空的强制字段的对话框。将接收到一条出错消息,
并且光标位于第一个空的强制控件上。
DlgSetMandatory ($Handle,'SOCIAL_SECURITY_NUMBER',TRUE);
------------------------------------------------------------------------
设置对话框控件的只读状态。
FUNCTION DlgSetReadOnly(VAL whdlDialog: WINDOW, VAL
fieldNames: LIST OF STRING [,
VAL newState: BOOLEAN ]): INTEGER;
自变量说明 | 自变量名称说明 |
whdlDialog | 对话框的窗口句柄,该对话框包含要在其上进行操作的控件。如果命令从包含该控件的事件处理器发出,则可能使用伪参数 $Handle。 |
fieldName | 命令所寻址的对话框中的控件的名称。可以在接口设计器或对话框规范文件的 DEFINE 语句中指定它。该名称是不区分大小写的。对于该列表中的每个控件名都要执行该命令。将返回被处理的控件的数目。在遇到错误时停止处理。并把系统变量 $DlgError 设置成错误代码。如果错误发生在处理的第一个控件上,则由该语句返回错误代码。 |
newState | 控件的新状态。这个参数是可选的。如果省略,则假定为 TRUE。 |
DlgSetReadOnly 允许更改对话框控件的只读状态。例如,如果当前用户不具有
修改该控件的值所必需的安全权限,则可以将控件变成只读状态。
注:可以变成只读状态的字段类型是:列表框、文本框和组合框。
KNOWLEDGEBASE Dlg_But;
TYPES
DlgData IS RECORD
allowEdit: BOOLEAN;
sampleField: INTEGER;
END;
ROUTINES
PROCEDURE DialogExample;
PRIVATE
ROUTINES
EVENT DlgEvent(REF fields: DlgData) IS
ACTIONS
WHEN $Event IS $MsgCreate THEN
IF NOT fields.allowEdit THEN
DlgSetButtonText($Handle,'editButton','View');
(* SAMPLEFIELD must be a MLE, entry field or combo box *)
DlgSetReadonly($Handle,'SAMPLEFIELD',TRUE);
END;
END;
END (* Dlg Event *);
PROCEDURE DialogExample IS
VARIABLES
fields: DlgData;
ACTIONS
fields.allowEdit := FALSE;
DlgBox($Desktop,'example[dialog1]',
DlgEvent{fields},fields);
END (* dialog box Example *);
------------------------------------------------------------------------
发出一个 SQL 选择语句并用得到的表来填充 SQLManage。
FUNCTION DlgSqlSelect(VAL whdlDialog: WINDOW,
VAL fieldName: STRING,
VAL selectString: STRING, VAL
StripHyperlinks: BOOLEAN): INTEGER;
自变量说明 | 自变量名称说明 |
whdlDialog | 对话框的窗口句柄,该对话框包含要在其上进行操作的控件。如果命令从包含该控件的事件处理器发出,则可能使用伪参数 $Handle。 |
fieldName | 命令所寻址的对话框中的控件的名称。可以在接口设计器或对话框规范文件的 DEFINE 语句中指定它。该名称是不区分大小写的。该控件必须是 SQLManage 控件。 |
selectString | 该参数必须是一个正确地格式化了的 SQL 选择语句。 SQL 选择语句被传送给 SQL 数据库管理器。如果该选择成功,将清除 SQLManage,并将该选择中的所有记录插入该字段。 |
StringHyperlinks | 缩减超文本字符串,以便方括号中只有按钮名。超文本前面或后面的任何文本都不受影响。 |
UseHypertextFilter | DlgSqlSelect 的当前文件只提供三个输入变量的信息。但是,在 EA 应用程序中对该命令的一系列使用表明,存在 4 个变量。第 4 个变量以布尔值的形式出现。需要按照它的内容及其用法来形成它的文档。 |
OS/2 中的 SQLManage 可以包含多达 65,535 条记录。在 Windows 中,SQLManage 可以包含下列内容。
* 每行 64K 数据
* 每行中的每列 256 个字节
* 每行 256 列。
如果 DlgSQLSelect 语句生成了 SQL 错误,则返回该 SQL 错误。
KNOWLEDGEBASE DlgSQL;
TYPES
DLGDATA IS RECORD
sampleField: INTEGER;
END;
(* ******* PRIVATE ******** *)
PRIVATE
ROUTINES
(* ******** dialog box EVENT HANDLER *********)
EVENT DlgEvent( REF fields: DLGDATA ) IS
VARIABLES
selectString: STRING;
ACTIONS
(* All dialog box messages have pseudo parameters $FieldID, and $FieldName*)
WHEN $Event IS $MsgChar THEN
WHEN $KeyCode IS $KeyAltS THEN (* Look for Alt-S *)
(* Prompt user for text to insert *)
IF WinEditField( $Desktop, selectString, 0, 0, 30,
'Enter new SQL select statement',
$WinAutoPos + $WinBorder +
$WinTitle ) > 0
THEN
DlgSQLSelect( $Handle, 'sql_manage_field',
selectString );
END;
END;
END;
END;
PROCEDURE DialogExample IS
VARIABLES
fields: DLGDATA;
ACTIONS
DlgBox( $Desktop,'example[dialog1]',
DlgEvent{ fields }, fields );
END;
------------------------------------------------------------------------
将已标签化的对话框中的当前标签更改成选择标签。
FUNCTION DlgTurnToPage( VAL whdlDialog: WINDOW,
VAL Notebook : STRING,
VAL page: INTEGER ): INTEGER;
自变量说明 | 自变量名称说明 |
whdlDialog | 包含记事簿的对话框的窗口句柄。 |
notebook | 执行操作的标签化对话框的名称。使用接口设计器公用程序创建窗体时设置该名称。 |
page | 一个整数,代表要返回到的标签的号码。第一个标签是 1,第二个是 2,依次类推。 |
(* 该实例打开一个标签化的对话框,并根据创建情况,将该标签更改为标签 2;标签 2 将成为用户看到的第一个标签。*)
KNOWLEDGEBASE Notebook;
ROUTINES
PROCEDURE MainProgram;
TYPES
record1 is RECORD
MLE1: String;
END;
PRIVATE
ROUTINES
EVENT WinEvent(REF rec: record1) IS
ACTIONS
WHEN $Event IS $MsgAccept THEN
Nothing;
ELSWHEN $MsgCreate THEN
DlgTurnToPage( $Handle, 'MyNotebook', 2);
END;
END;
PROCEDURE MainProgram IS
VARIABLES
rec: record1;
ACTIONS
DlgBox($Desktop, 'notebook[nbForm]',
WinEvent{rec}, rec);
END;
END;
------------------------------------------------------------------------
在现存的子窗体中创建一个类属窗口或滚动窗口。窗口的消息被传送到
指定的事件处理器,而不是对话框事件处理器。(对话框事件处理器可能滤掉
经过键盘的例行程序生成消息。如果在“非空”子窗体上调用 DlgWinCreate,它将替换现存的子窗体。
FUNCTION DlgWinCreate( VAL form : WINDOW,
VAL subform : STRING,
REF win : WINDOW,
VAL eventHandler : EVENT,
VAL style : INTEGER
VAL scrollWindow : BOOLEAN
): INTEGER;
自变量说明 | 自变量名称说明 |
form | 窗体的名称。 |
subform | 子窗体控件的标识。 |
win | 现存子窗体中的窗口。 |
eventHandler | 事件处理器,处理由窗口或对话框生成的事件。如果不需要处理事件,可以使用 $NullHandler 关键字。 |
style | 整数位掩码,代表一组风格标志,用于控制窗口的外观。关于可用风格标志列表,请参见窗口风格。 |
scrollwindow | 如为 TRUE,则创建一个窗口。 |
并非所有函数都工作在由该调用返回的句柄上。不受支持的函数由于处理器错误或
一般错误而出现故障。下列函数在 DlgWinCreate 创建的窗口上不能工作:
Tivoli 服务台 6.0 开发工具包 TSD 脚本语言参考