Tivoli 服务台 6.0 开发工具包脚本语言参考

窗口处理(续)

返回主页


WinSetFont

说明

设置标准窗口内连续写操作的字体。

语法

FUNCTION WinSetFont(VAL whdl: WINDOW, VAL fontName: STRING,
                    VAL pointSize: INTEGER,
                    VAL faceStyle: INTEGER): INTEGER;

自变量说明

自变量名称 说明
whdl 要设置其字体的窗口的句柄。这必须是由 WinCreate 创建的标准窗口。
fontName 要设置的、操作系统所看到字体的字体名称。有关缺省系统字体的列表,请参见此语句的“注释”。
pointSize 字体的大小,以点数计。
可用于标准字体的光栅字体点数的大小为:8、10、12、14、18 和 24。
并不是所有字体都适用于这些字体点的大小。
轮廓字体可以是任意点大小。轮廓字体适用于全部缺省字体,除系统比例字体和系统单空格。这些字体只可用于点数的大小为 10。
所有缺省字体,除系统比例字体和系统单空格。这些字体只可用于点数的大小为 10。
faceStyle 标志集合,组合它们以形成混合的字体风格。
合法值为 $FontPlain (缺省)、$FontBold$FontUnderScore$FontStrikeOut
并不是全部字体都支持所有字体风格。将这些风格添加到现有字体。某些字体用一种字体风格,如黑体或斜体创建。在这些情况下,风格总存在。

注释

下列预定义的常数提供对缺省系统字体的访问:

实例

KNOWLEDGEBASE WinFont;
 ROUTINES
 PROCEDURE FontExample;
PRIVATE
 CONSTANTS
 MENU_LIST IS {'File' ,'Exit', '',
               'Font','Courier','Helvetica','System Proportional',
               'System Monospaced','Times Roman','Symbol Set',''
               }: LIST OF STRING;
 ROUTINES
 EVENT MainEvent(REF fontName: STRING) IS
 ROUTINES
 PROCEDURE PaintFont(VAL whdl: WINDOW, VAL fontName: STRING)
 IS
 ACTIONS
 WinSetFont(whdl,'System Proportional',10,
            $FontPlain);
 WinClear(whdl);
 WinSetFont(whdl,fontName,8,$FontPlain);
 WinWriteAt(whdl,1,1,fontName & ' 8 ');
 WinWriteLn(whdl,
            'abcdefghijllmenopqrstuvwxyz
            ABCDEFGHIJKLMNOPQRSTUVWXYZ');
 WinSetFont(whdl,fontName,10,$FontPlain);
 WinWrite(whdl,fontName & ' 10 ');
 WinWriteLn(whdl,
            'abcdefghijllmenopqrstuvwxyz
            ABCDEFGHIJKLMNOPQRSTUVWXYZ');
 WinSetFont(whdl,fontName,12,$FontPlain);
 WinWrite(whdl,fontName & ' 12 ');
 WinWriteLn(whdl,
            'abcdefghijllmenopqrstuvwxyz
            ABCDEFGHIJKLMNOPQRSTUVWXYZ');
 WinSetFont(whdl,fontName,14,$FontPlain);
 WinWrite(whdl,fontName & ' 14 ');
 WinWriteLn(whdl,
            'abcdefghijllmenopqrstuvwxyz
            ABCDEFGHIJKLMNOPQRSTUVWXYZ');
 WinSetFont(whdl,fontName,18,$FontPlain);
 WinWrite(whdl,fontName & ' 18 ');
 WinWriteLn(whdl,
            'abcdefghijllmenopqrstuvwxyz
            ABCDEFGHIJKLMNOPQRSTUVWXYZ');
 WinSetFont(whdl,fontName,24,$FontPlain);
 WinWrite(whdl,fontName & ' 24 ');
 WinWriteLn(whdl,
            'abcdefghijllmenopqrstuvwxyz
            ABCDEFGHIJKLMNOPQRSTUVWXYZ');
 WinSetFont(whdl,fontName,24,$FontBold);
 WinWrite(whdl,fontName & ' 24 Bold ');
 WinWriteLn(whdl,
            'abcdefghijllmenopqrstuvwxyz
            ABCDEFGHIJKLMNOPQRSTUVWXYZ');
 WinSetFont(whdl,fontName,24,$FontItalic);
 WinWrite(whdl,fontName & ' 24 Italic ');
 WinWriteLn(whdl,
            'abcdefghijllmenopqrstuvwxyz
            ABCDEFGHIJKLMNOPQRSTUVWXYZ');
 WinSetFont(whdl,fontName,24,$FontUnderscore);
 WinWrite(whdl,fontName & ' 24 Underscore ');
 WinWriteLn(whdl,
            'abcdefghijllmenopqrstuvwxyz
            ABCDEFGHIJKLMNOPQRSTUVWXYZ');
 WinSetFont(whdl,fontName, 24, $FontStrikeOut);
 WinWrite(whdl,fontName & ' 24 StrikeOut ');
 WinWriteLn(whdl,
            'abcdefghijllmenopqrstuvwxyz
            ABCDEFGHIJKLMNOPQRSTUVWXYZ');
 WinSetFont(whdl,fontName, 48, $FontPlain);
 WinWrite(whdl,fontName & ' 48 ');
 WinWriteLn(whdl,
            'abcdefghijllmenopqrstuvwxyz
            ABCDEFGHIJKLMNOPQRSTUVWXYZ');
 WinSetFont(whdl,'System Proportional',10,
            $FontPlain);
 END (* Paint Font *);
 PROCEDURE ProcessMenu(VAL whdl: WINDOW,
 VAL selection: INTEGER)
 IS
 ACTIONS
 WHEN selection IS 101 THEN
 SendMessage(whdl,$MsgClose);
 ELSWHEN 201 THEN
 fontName := $Courier;
 PaintFont($Handle,fontName);
 ELSWHEN 202 THEN
 fontName := $Helvetica;
 PaintFont($Handle,fontName);
 ELSWHEN 203 THEN
 fontName := $SystemProportional;
 PaintFont($Handle,fontName);
 ELSWHEN 204 THEN
 fontName := $SystemMonospaced;
 PaintFont($Handle,fontName);
 ELSWHEN 205 THEN
 fontName := $TimesRoman;
 PaintFont($Handle,fontName);
 ELSWHEN 206 THEN
 fontName := $SymbolSet;
 PaintFont($Handle,fontName);
 END;
 END (* Process Menu *);
 ACTIONS
 WHEN $Event IS $MsgCreate THEN
 WinSetMenuBar($Handle,MENU_LIST);
 ELSWHEN $MsgPaint THEN
 PaintFont($Handle,fontName);
 ELSWHEN $MsgMenu THEN
 ProcessMenu($Handle,$MenuSelection);
 END;
 END (* Main Event *);
 PROCEDURE FontExample IS
 VARIABLES
 whdlMain: WINDOW;
 ACTIONS
 WinCreate($Desktop,whdlMain,MainEvent{$TimesRoman},
           0,0,60,20,'Font example',
           BitOr($WinBorder,$WinTitle,
           $WinResize,$WinMenu,
           $WinVScroll,$WinMinMax,
           $WinTaskList,
           $WinSysMenu,$WinAutoPos));
 WinWait(whdlMain);
 END (* Font Example *);

返回代码

另见


WinSetIconBar

说明

设置并显示工具条上的图符。

语法

FUNCTION WinSetIconBar(VAL buttonList : LIST
                       of $ToolbarNodeRecord):
                       INTEGER;

自变量说明

自变量名称 说明
whdl 具有 $WinIconBar 风格的窗口的句柄。它可以是标准窗口或滚动窗口。
iconList 这可以是字符串列表或 $ToolbarItem 记录列表。对于字符串列表,每个字符串是在图符栏上显示的图像文件名。通过使用替换的形式($ToolbarNodeRecord)有可能指定其它属性,如与给定工具条按钮相关的菜单标识,以及工具条按钮的 "工具提示"。

注释

工具条是类似于菜单条的控制。工具条出现在窗口的标题条和菜单条的下面。它组成一行图符,通过单击鼠标的按钮可以选择这些图符。

没有工具条或工具条上图符的键盘界面。选择一个图符发送一条菜单消息 ($MsgMenu) 给窗口事件处理器。第一个事件参数(整数)是该图符的标识。

注:从 1 到 99 给图符做标记,最左边的图符的标识 为 1。

图符必须是标准图符格式。文件必须在当前目录之下。否则,必须指定每个文件的全“路径”。任何没有查找到的、或文件格式不正确的文件被略过去。实际上,ID 是按图符列表中的位置,而不是按显示位置分配的。传递未知列表会导致清除或隐藏工具条。

注:给没有工具条的窗口添加工具条,会按用户区域的新尺寸给窗口发送 $MsgSize

实例

以下列方法使用字符串表格列表:

WHEN $Event IS &MsgCreate THEN
 WinSetIconBar($Handle, {SEARCH,CO','PRINT.ICO'}: LIST OF STRING);
END;

按下列方法使用 $ToolbarItem 表格的列表:

WHEN $Event IS $MsgCreate THEN
 theList[1].ImageFile:='SEARCH.BMP';
 theList[1].ItemID:=204;
 theList[1].ToolTip:='Search for Text';
  theList[2].ImageFile:='PRINT.BMP';
 theList[2].ItemID:=106;
 theList[2].ToolTipText:='Print File';
  theList[3].ImageFile:='SAVE.BMP';
 theList[3].ItemID:=103;
 theList[3].ToolTipText:='Save File';
  WinSetIconBar($Handle,theList);
END;

返回代码

另见


WinSetMenuBar

说明

设置窗口菜单条的选择项。

语法

FUNCTION WinSetMenuBar(VAL whdl: WINDOW,
                       VAL menuList: LIST OF STRING):
                       INTEGER;

自变量说明

自变量名称 说明
whdl 窗口句柄,在该窗口上执行操作。
menuList 字符串列表,指定在窗口菜单条上显示的一个菜单。
有关列表格式的信息,请参见此语句的“注释”。

注释

WinSetMenuBar 可以用于在窗口上设置菜单条,该窗口是以 $WinMenu 风格创建的。

传递给 WinSetMenuBar 的字符串列表,指定整个菜单的结构。包括指定水平方向的主菜单条目,垂直方向的辅助条目。在列表中从上到下、从左到右给菜单条目编码。空字符串作为分隔符。例如,最左边的菜单条目是“文件”,“文件”条目包括“新建”、“保存”、“保存为”和“退出”,菜单列表的形式如下:

{'File','New','Save','Save ~As','Exit',''}: LIST OF STRING;

第二列条目出现于旁边。

可以使用代字号 (~) 使字母成为菜单条目的选择器。可以将下表中的开关放在菜单列表条目的开始,以获得每个开关显示的结果。

开关 结果
/C 最初效验的菜单条目。
/D 最初禁用的菜单条目。
/S 静止菜单条目,不能进行选择。
/L 不显示菜单条目。在其位置出现一行分隔符。
/H 当条目被选中时,菜单搁置为打开。
// 显示一条斜线 (/)。不再处理开关。

给没有工具条的窗口添加工具条,会按用户区域的新尺寸给窗口发送 $MsgSize

实例

KNOWLEDGEBASE WinMenu;
TYPES
 MainWinRec IS RECORD
 width: INTEGER;
 height: INTEGER;
 fontName: STRING;
 mousePointer: STRING;
 statusBar: STRING;
 END;
CONSTANTS
 MENU_LIST IS {'File' ,
 'E~xit', '', (* 101 *)
 'Menu',
 '~Enable', (* 201 *)
 '~Disable', (* 202 *)
 '/L ', (* Put separator line in menu *)
 '/C/D~Check',
 (* 204 start check and disabled *)
 '', (* Mark end of menu sub menu *)
 'Help',
 'About', (* 301 *)
 '' (* Mark end of help submenu *)
 }: LIST OF STRING;
ROUTINES
 PROCEDURE MenuExample;
PRIVATE
ROUTINES
 EVENT MainEvent(REF mainWinData: MainWinRec) IS
 ACTIONS
 WHEN $Event IS $MsgCreate THEN
0 WinSetMenuBar($Handle,MENU_LIST);
 ELSWHEN $MsgPaint THEN
 WinClear($Handle);
 ELSWHEN $MsgMenu THEN
 WHEN $MenuSelection IS 101 THEN
 SendMessage($Handle,$MsgClose);
 ELSWHEN 201 THEN
 WinMenuEnableItem($Handle,204,TRUE);
 ELSWHEN 202 THEN
 WinMenuEnableItem($Handle,204,FALSE);
 ELSWHEN 204 THEN
 IF WinMenuItemIsChecked($Handle,204) THEN
 WinMenuCheckItem($Handle,204,FALSE);
 ELSE
 WinMenuCheckItem($Handle,204,TRUE);
 END;
 ELSWHEN 301 THEN
 WinMessageBox($Handle,'About',$MBOK,'Menu example');
 END;
 END;
 END (* Main Event *);
 PROCEDURE MenuExample IS
 VARIABLES
 whdlMain: WINDOW;
 ACTIONS
 WinCreate($Desktop,whdlMain,MainEvent,0,0,60,20,
           'Menu example',
           BitOr($WinBorder,$WinTitle,
           $WinMenu,$WinMinMax,
           $WinTaskList,$WinAutoPos,
           $WinSysMenu));
 WinWait(whdlMain);
 END (* Menu Example *);

返回代码

另见


WinSetPopupMenu

说明

设置窗口的弹出式菜单,替换任何现有的弹出式菜单。在平台上正确操作鼠标时,弹出式菜单会自动出现。通过 $MsgMenu 报告弹出式菜单的选择项。

语法

FUNCTION WinSetPopupMenu ( VAL whdl: WINDOW,
                          VAL menuList: LIST OF STRING,
                    ): INTEGER;

自变量说明

自变量名称 说明
whdl 更改标题文本的对话框表格或窗口的句柄。
menuList 窗口弹出式菜单条目的列表

注释

传递给 WinSetPopupMenu 的字符串列表,指定整个菜单结构。包括指定水平方向的主菜单条目,垂直方向的辅助条目。在列表中,从上到下,从左到右给菜单条目编码。空字符串作为分隔符。例如,最左边的菜单条目是“文件”,“文件”条目包括“新建”、“保存”、“保存为”和“退出”,菜单列表的形式如下:

{'File','New','Save','Save ~As','Exit',''}: LIST OF STRING;

第二列条目出现于旁边。

可以使用代字号 (~) 使字母成为菜单条目的选择器。可以将下表中的开关放在菜单列表选项的开始,以获得每个开关显示的结果。

开关 结果
/C 最初效验的菜单条目
/D 最初禁用的菜单条目
/S 静止菜单条目,并且不是选择项
/L 不显示菜单条目。在其位置出现一行分隔符
/H 当条目为选择项时,菜单为搁置打开
// 显示一条斜线 (/)。不再处理开关

给没有工具条的窗口添加工具条,会按用户区域的新尺寸给窗口发送 $MsgSize

当使用 WinLoadPopupMenu 时,根据平台上的正确鼠标操作,菜单自动出现。当用户选择菜单条目时,将 $MsgMenu 送到窗口。这与以前的函数 WinPopup 不同。在 WinPopup 中,用户一定要捕捉正确的鼠标操作,并调用 WinPopup 以显示弹出式菜单。WinPopup 将返回已选菜单条目的 id。

实例

KNOWLEDGEBASE popup;
ROUTINES
PROCEDURE Main;
(* ***** PRIVATE ***** *)
PRIVATE
VARIABLES
 (*Global Variable to hold the Window handle of the window *)
 mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES
 MAIN_MENU {'File',
 '/CNew',
 '/DExit'
 } : LIST OF STRING;
ACTIONS
 WinCreate($Desktop, mainWindow, $NullHandler, 10, 10, 80, 25, 'WinSetPopupMenu Test', $WinDefaultStyle);
 (* Set the popup menu. The 'New' menu item is initially checked and *)
 (* the 'Exit' menu item is initially diabled *)
           WinSetPopupMenu(mainWindow, MAIN_MENU);
           WinWait(mainWindow);
END;

返回代码

另见

WinLoadPopupMenu


WinSetScrollBar

说明

设置滚动栏的位置和标记大小。

语法

FUNCTION WinSetScrollBar(VAL whdl: WINDOW,
 VAL scrollBarID, windowSize,
 dataSize,windowLoc: INTEGER):
 INTEGER;

自变量说明

自变量名称 说明
whdl 窗口句柄,操作要在该窗口上进行。
scrollBarID 被设置滚动栏的标签。必须是 $WinVScroll (垂直)或 $WinHScroll (水平)。如果地址滚动栏不存在,则操作不发生。没有错误报告。
windowSize 窗口大小,以数据单元表示。单元是任意的,只与 dataSize 和 windowLoc 参数有关。必须以相同的单元表示这些参数。
dataSize 数据大小,用指定窗口大小所用的相同单元表示。
windowLoc 窗口上端或左侧的位置,用以前参数所有的同样单元表示。

实例

KNOWLEDGEBASE FileView;
CONSTANTS
 MENU_OPEN IS 101;
 MENU_EXIT IS 102;
 MENU_LIST IS {'~File','~Open','e~xit',''}: LIST OF STRING;
TYPES
 EditorData IS RECORD
 fileName: STRING;
 yLen: INTEGER;
 lineCount: INTEGER;
 pageTop: INTEGER;
 statusLine: STRING;
 lines: LIST OF STRING;
 END;
ROUTINES
 PROCEDURE FileView;
PRIVATE
ROUTINES
 EVENT EditorEvent(REF data: EditorData) IS
 VARIABLES
 loc: INTEGER;
 ROUTINES
 PROCEDURE ProcessMainMenu(VALUE selection: INTEGER) IS
 VARIABLES
 fileName: STRING;
 editFile: FILE;
 result: INTEGER;
 ACTIONS
 WHEN selection IS MENU_OPEN THEN
 WinFileDialog($Handle, fileName, '*.KB', 5, 5,
               'Select file to edit', 0);
 result := FOpen(editFile, fileName, $Read);
 IF result <= 0 THEN
 WinMessageBox($Handle, 'Error',
               $MBOK + $MBIconError,
               'Can not open file ' &
               fileName);
 Exit;
 END;
 data.lineCount := FReadText(editFile, data.lines);
 FClose(editFile);
 data.pageTop := 0;
 data.statusLine := ' File: ' & fileName;
 PostMessage($Handle, $MsgPaint);
 PostMessage($Handle, $MsgPaintStatus);
 ELSWHEN MENU_EXIT THEN
 SendMessage($Handle, $MsgClose);
 END;
 END (* Process Main Menu *);
 PROCEDURE ProcessChar(VALUE character: INTEGER) IS
 ACTIONS
 WHEN character IS $KeyDownArrow THEN
 IF data.pageTop + data.yLen < data.lineCount THEN
 data.pageTop := data.pageTop + 1;
 PostMessage($Handle, $MsgPaint);
 END;
 ELSWHEN $KeyUPArrow THEN
 IF data.pageTop > 0 THEN
 data.pageTop := data.pageTop - 1;
 PostMessage($Handle, $MsgPaint);
 END;
 ELSWHEN $KeyPageDown THEN
 IF data.pageTop + data.yLen < data.lineCount THEN
 data.pageTop := data.pageTop + data.yLen;
 PostMessage($Handle, $MsgPaint);
 END;
 ELSWHEN $KeyPageUp THEN
 IF data.pageTop > 0 THEN
 data.pageTop := data.pageTop - data.yLen;
 IF data.pageTop < 0 THEN
 data.pageTop := 0;
 END;
 PostMessage($Handle, $MsgPaint);
 END;
 ELSWHEN $KeyControlPageDown THEN
 IF data.pageTop + data.yLen < data.lineCount THEN
 data.pageTop := data.lineCount - data.yLen;
 PostMessage($Handle, $MsgPaint);
 END;
 ELSWHEN $KeyControlPageUp THEN
 IF data.pageTop > 0 THEN
 data.pageTop := 0;
 PostMessage($Handle, $MsgPaint);
 END;
 END;
 END (* ProcessChar *);
 ACTIONS
 WHEN $Event IS $MsgCreate THEN
 WinSetMenuBar($Handle, MENU_LIST);
 data.lineCount := 0;
 data.pageTop := 1;
 data.statusLine := 'File:';
 ELSWHEN $MsgSize THEN (* Size Message *)
 data.yLen := $EventParm(2, INTEGER);
 WinSetScrollBar($Handle,$WinVScroll,data.lineCount,
                 data.yLen,data.pageTop);
 ELSWHEN $MsgPaint THEN
 WinSetScrollBar($Handle,$WinVScroll,data.lineCount,
                 data.yLen,data.pageTop);
 FOR loc := 1 to data.yLen + 1 DO
 IF loc + data.pageTop> data.lineCount THEN
 ExitLoop;
 END;
 WinGoToXY($Handle, 1, loc);
 WinClearEOL($Handle);
 WinWriteAt($Handle,1,loc,data.lines[
 data.pageTop +loc ]);
 END;
 WinGoToXY($Handle, 1, loc);
 WinClearEOW($Handle);
 ELSWHEN $MsgMenu THEN (* Menu Message *)
 ProcessMainMenu($MenuSelection);
 ELSWHEN $MsgChar THEN
 ProcessChar($EventParm(1, INTEGER));
 ELSWHEN $MsgScroll THEN (* Scroll bar *)
 IF $EventParm(1, INTEGER) =$WinVScroll THEN
 data.pageTop := $EventParm(2, INTEGER);
 PostMessage($Handle, $MsgPaint);
 END;
 ELSWHEN $MsgPaintStatus THEN (* Status Bar *)
 WinClear($Handle);
 WinWrite($Handle,data.statusLine);
 END;
 END (* Editor Event *);
 PROCEDURE FileView IS
 VARIABLES
 whdl: WINDOW;
 ACTIONS
 WinCreate($Desktop,whdl,EditorEvent,0,0,0,0,
           'KML File viewer',
           BitOr($WinBorder,$WinTitle,
           $WinResize,$WinSysMenu,
           $WinMenu,$WinVSCroll,
           $WinStatus,$WinAutoPos,
           $WinAutoSize,$WinTaskList));
 WinWait(whdl);
 END (* File View *);

返回代码

另见

WinCreate


WinSetTitle

说明

在对话框表格或窗口的标题条设置文本。

语法

FUNCTION WinSetTitle(VAL whdl: WINDOW, VAL newTitle: STRING):
 INTEGER;

自变量说明

自变量名称 说明
whdl 要更改标题文本的对话框或窗口的句柄。
newTitle 对话框表格或窗口的新标题。

注释

该函数也可以作为一条能传递到对话框表格或窗口的消息($MsgSetTitle)来实现。

实例

KNOWLEDGEBASE title;
ROUTINES
 PROCEDURE Main;
PRIVATE
ROUTINES
PROCEDURE Main IS
VARIABLES
 Handle : WINDOW;
ACTIONS
 WinCreate($Desktop,
           Handle,
           $NullHandler,
           1, 1,
           80, 25,
           'If you see this it did not work',
           $WinDefaultStyle);
           WinSetTitle(Handle, 'It works!');
 WinWait(Handle);
END;

返回代码


WinSetWaitPointer

说明

打开或关闭等待指针(砂漏)。等待指针影响应用程序中的全部窗口。

语法

WinSetWaitPointer ( VAL state : BOOLEAN ) : INTEGER;

自变量说明

自变量名称 说明
state ‘True’时,显示等待指针,而‘False’则恢复以前的指针。

注释

WinSetWaitPointer 打开或关闭等待指针,取决于提供的状态。用它给出可见的提示,说明应用程序正忙或仍在处理。

实例

KNOWLEDGEBASE wait;
ROUTINES
PROCEDURE Main;
(* ***** PRIVATE ***** *)
PRIVATE
VARIABLES
 (* Global Variable to hold the Window handle of the window *)
 mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES
ACTIONS
 WinCreateScrollWindow($Desktop, mainWindow, $NullHandler,
                       10, 10, 80, 25, 'Test Window', $SystemMonoSpaced, 10, $WinDefaultStyle);
 WinSetWaitPointer(TRUE);
 (* Set the pointer to be the wait pointer before doing intensive processing *)
 (* and change it back afterwards *)
 WinSetWaitPointer(FALSE);
 WinWait(mainWindow);
END;

返回代码


WinShowWindow

说明

显示或隐藏对话框和窗口。

语法

FUNCTION WinShowWindow(VAL whdl: WINDOW, VAL state: BOOLEAN): INTEGER;

自变量说明

自变量名称 说明
whdl 可以更改其可视状态的对话框表格或窗口的句柄。
state 如果要"显示"窗口,则设为 TRUE;如果要 "隐藏"窗口,则设为 FALSE。

注释

也用作对话框或窗口的消息($MsgShow)。

实例

KNOWLEDGEBASE title;
ROUTINES
 PROCEDURE Main;
PRIVATE
ROUTINES
PROCEDURE Main IS
VARIABLES
 Handle : WINDOW;
ACTIONS
 WinCreate($Desktop,
           Handle,
           $NullHandler,
           1, 1,
           80, 25,
           'If you see this it did not work',
           $WinDefaultStyle);
 WinShowWindow(Handle, FALSE);
 SysDelay(1000);
 WinShowWindow(HANDLE, TRUE);
 WinWait(Handle);
END;

返回代码


WinWait

说明

存在窗口时,暂停执行。

语法

FUNCTION WinWait(VAL whdl: WINDOW): INTEGER;

注意

当处理 $MsgDDEInitiate 消息,请不要使用 WinWait$MsgDDEInitiate 向应用程序广播消息,并在返回响应之前锁定消息队列。同时,WinWait 语句初始化也在等待消息队列应答的事件处理器程序。WinWait 防止其它应用程序向消息队列发送消息。这会造成死锁,有效的锁定用户界面。

自变量说明

自变量名称 说明
whdl 要执行操作的窗口的句柄。

注释

WinWait 通常用于应用程序主过程的等待,直到主窗口不再存在。

实例

VARIABLES
whdl: WINDOW;
ACTIONS
WinCreateScrollWindow($Desktop,whdl,$NullHandler,0,0,0,0,
                      'Window Title','',0,
                      BitOr($WinBorder,$WinTitle,
                      $WinResize,$WinSysMenu,
                      $WinAutoPos,$WinAutoSize,
                      $WinTaskList));
WinWait(whdl);

返回代码


WinWidth

说明

查询窗口的宽度。

语法

FUNCTION WinWidth(VAL whdl: WINDOW): INTEGER;

自变量说明

自变量名称 说明
whdl 执行操作的窗口的句柄。

注释

WinWidth 返回指定窗口客户机区域的当前宽度,以字符单元表示。

实例

VARIABLES
width: INTEGER;
ACTIONS
width := WinWidth($Handle);

返回代码

另见


WinWrite

说明

在一个窗口的当前位置写入字符串。

语法

FUNCTION WinWrite(VAL whdl: WINDOW,
 VAL outputText: LIST OF STRING): INTEGER;

自变量说明

自变量名称 说明
whdl 要写入窗口的句柄。此句柄可以引用标准(类属)窗口或滚动窗口。
outputText 显示的字符串的列表。单个字符串也是有效的。在列表的每一条目执行此命令。

注释

WinWrite 可以用于向类属窗口或滚动窗口中写入信息。不能用它向对话框中写入信息。

查找当前画图的位置

TSD 脚本为每个类属窗口和滚动窗口维护一个当前画图位置。由 WinWrite 写入的文本出现在该位置。写操作之后,画图的 x 坐标前移。通过调用 WinXWinY 函数,可以找出当前位置。

使用格式说明符

格式说明符实际上是位屏蔽,位屏蔽中的不同位控制格式的不同部分。 WinWrite 处理字符串的列表,使您能够控制 WinWrite 和其它语句中的显示格式。

一般来说,所有表达式都可以用两种格式说明符来表示:

这些格式说明符是用冒号与表达式分开并用冒号将格式说明符彼此分开。例如:

VARIABLES
s: STRING;
i: INTEGER;
r: REAL;
b: BOOLEAN; (* true false *)
d: DATE; (* right, empty pad, usa *)
t: TIME; (* right, empty pad, 24 hour military *)
ACTIONS
s := 'First Bank';
i := 951;
r := 14567.89;
d := {2,15,1956}: DATE;
t := {11,45,0}: TIME;
WinWrite($Handle,s:20); -- outputs 'First Bank'
WinWrite($Handle,i:5); -- outputs '951 '
WinWrite($Handle,r:9:2);-- outputs '14567.89 ';
WinWrite($Handle,d:10:$FmtDateMonthDayYear);
-- outputs '2/11/1956'
WinWrite($Handle,d:10:BitOr($FmtDateMonthDayYear,
 $FmtDateTruncateCentury);
-- outputs '2/11/56 '
WinWrite($Handle,t:7:$FmtTimeAMPM);
-- outputs '11:45 AM';

注:数据类型格式标志中, 对各种格式标志进行了说明。

实数格式说明符

实数格式说明符也可以对要显示的小数点的右面的位数进行解码。例如:

WinWrite($Handle, r :10 : BitOr(2, $FmtLeftJustify));

左边调整输出,并显示小数点右边的两位数字。在缺省状态下,实数显示小数点右边的六位数字。

数据类型的缺省格式

各种数据类型都有缺省格式。这些缺省格式可能依国家而改变,因为数据类型的缺省格式(包括美国)是基于国际控制面板的设置。

下表显示美国数据类型的缺省格式。

数据类型 美国数据类型的缺省格式
字符串 $FmtRightJustify
整数 $FmtRightJustify+$FmtIntUngrouped+$FmtBlankPad+$FmtIntSignNegOnly+$FmtIntDecimal
实数 $FmtRightJustify+$FmtRealUngrouped+$FmtBlankPad+$FmtRealSignNegOnly+
$FmtRealDecimalDot
布尔 $FmtRightJustify+$FmtBoolTrueFalse
日期 $FmtRightJustify+$FmtDateMonthDayYear+$FmtBlankPad+$FmtDateSlashSeparators+
$FmtDateNumericMonth+$FmtDateFullYear
时间 $FmtRightJustify+$FmtTimeWithSeconds+$FmtBlankPad+$FmtTimeMilitary

使用 StringFormatIntegerFormatRealFormatBooleanFormatDateFormatTimeFormat 函数可以改变缺省格式。

实例

KNOWLEDGEBASE Clip;
CONSTANTS
 MENU_REFRESH IS 101;
 MENU_EXIT IS 102;
ROUTINES
 PROCEDURE ClipView;
PRIVATE
CONSTANTS
 MENU_LIST IS {'~File','~Refresh','E~xit',''}: LIST OF STRING;
ROUTINES
 EVENT ClipboardEvent(REF clipBoard: STRING) IS
 ACTIONS
 WHEN $Event IS $MsgCreate THEN
 WinSetMenuBar($Handle,MENU_LIST);
 SysGetClipboard(clipBoard);
 WinWrite($Handle,clipBoard);
 ELSWHEN $MsgMenu THEN
 WHEN $MenuSelection IS MENU_REFRESH THEN
 SysGetClipboard(clipBoard);
 WinClear($Handle);
 WinWrite($Handle,clipBoard);
 ELSWHEN MENU_EXIT THEN
 SendMessage($Handle,$MsgClose);
 END;
 END;
 END (* Clipboard Event *);
PROCEDURE ClipView IS
 VARIABLES
 whdl: WINDOW;
 ACTIONS
 WinCreateScrollWindow($Desktop,whdl,ClipboardEvent{''},
                       0,0,0,0,'KML Clipboard viewer',
                       '',10,
                       BitOr($WinBorder,$WinTitle,
                       $WinResize, $WinSysMenu,
                       $WinMenu,$WinAutoPos,
                       $WinAutoSize,$WinVScroll,
                       $WinHScroll,$WinTaskList));
 WinWait(whdl);
 END (* Clip View *);

返回代码

另见

其他信息,请参见 数据类型格式标志


WinWriteAt

说明

在窗口指定位置写入字符串。

语法

FUNCTION WinWriteAt(VAL whdl: WINDOW,
                    VAL xLoc, yLoc: INTEGER,
                    VAL outputText: LIST OF STRING):
                    INTEGER;

自变量说明

自变量名称 说明
whdl 要向其中写入内容的窗口的句柄。此句柄可以引用标准(类属)窗口或滚动窗口。
xLoc 字符串开始的 X 坐标。
yLoc 字符串开始的 Y 坐标。
outputText 显示的字符串的列表。单个字符串也有效。此命令处理列表中的每一条目。

注释

WinWriteAt 用于在类属窗口或滚动窗口的特定位置开始写入信息。处理结束时,WinWriteAt 使当前的画图位置(光标位置)离开最后一个写入字符右边一个字符位置。

实例

WHEN $Event IS $MsgPaint THEN
 WinWriteAt($Handle,1,1,context.fileName);
END;

返回代码

另见


WinWriteLN

说明

在窗口写入字符串,将位置指针前移至下一行的开始处。

语法

FUNCTION WinWriteLN(VAL whdl: WINDOW,
                    VAL outputText: LIST OF STRING):
                    INTEGER;

自变量说明

自变量名称 说明
whdl 要写入窗口的句柄。此句柄可以引用标准(类属)窗口或滚动窗口。
outputText 显示的字符串的列表。单个字符串也有效。此命令处理列表中的每一条目。

注释

WinWriteLN 使用隐含的 FOR 循环:顺序地写入整个字符串列表。

WinWriteLNWinWrite 是相同的,除了它将窗口光标前移到下一文本行的开始处之外。

实例

KNOWLEDGEBASE Scroll;
CONSTANTS
 MENU_OPEN IS 101;
 MENU_EXIT IS 102;
 MENU_LIST IS {'~File','~Open','E~xit',''}:
 LIST OF STRING;
TYPES
 EditorData IS RECORD
 statusLine: STRING;
 lines: LIST OF STRING;
 END;
ROUTINES
 PROCEDURE FileView;
PRIVATE
ROUTINES
 EVENT EditorEvent(REF editorData: EditorData) IS
 ROUTINES
 PROCEDURE ProcessMainMenu(VALUE selection: INTEGER) IS
 VARIABLES
 fileName: STRING;
 editFile: FILE;
 result: INTEGER;
 ACTIONS
 WHEN selection IS MENU_OPEN THEN
 WinFileDialog($Handle,fileName,'*.KB',5,5,
               'Select file to edit',0);
 IF FOpen(editFile,fileName,$Read) > 0 THEN
 FReadText(editFile,editorData.lines);
 FClose(editFile);
 editorData.statusLine := ' File: ' & fileName;
 WinClear($Handle);
 WinWriteLn($Handle,editorData.lines);
 PostMessage($Handle,$MsgPaintStatus);
 ELSWHEN MENU_EXIT THEN
 SendMessage($Handle,$MsgClose);
 END;
 END;
 END (* Process Main Menu *);
 ACTIONS
 WHEN $Event IS $MsgCreate THEN
 WinSetMenuBar($Handle, menuList);
 editorData.statusLine := 'File:';
 ELSWHEN $MsgMenu THEN
 ProcessMainMenu($MenuSelection);
 ELSWHEN $MsgPaintStatus THEN (* Status Bar *)
 WinClear($Handle);
 WinWrite($Handle,editorData.statusLine);
 END;
 END (* Editor Event *);
 PROCEDURE FileView IS
 VARIABLES
 whdl: WINDOW;
 ACTIONS
 WinCreateScrollWindow($Desktop,whdl,EditorEvent,0,0,0,0,
                       'KML File viewer',$SystemMonospaced,
                       10,
                       BitOr($WinBorder,$WinTitle,
                       $WinResize,
                       $WinSysMenu,$WinMenu,$WinStatus,
                       $WinAutoPos,$WinAutoSize,
                       $WinVScroll,$WinHScroll,
                       $WinTaskList));
 WinWait(whdl);
 END (* File View *);

返回代码

另见


WinX

说明

返回当前画图位置的 x 坐标。

语法

FUNCTION WinX(VAL whdl: WINDOW): INTEGER;

自变量说明

自变量名称 说明
whdl 要在其中执行操作的窗口的句柄。

注释

WinXWinGetXPos 不同,因为它返回窗口内的字符位置,而 WinGetXPos 查询窗口或对话框的左上角。

实例

WHEN $Event IS $MsgChar THEN
WHEN $EventParm(1,INTEGER) IS $KeyUpArrow THEN
 WinGoToXY(Handle,$WinX($Handle),$WinY($Handle)-1);
ELSWHEN $KeyRightArrow THEN
 WinGoToXY(Handle,$WinX($Handle)+1,$WinY($Handle));
END;
END;

返回代码

另见

WinY


WinY

说明

返回当前画图位置的 y 坐标。

语法

FUNCTION WinY(VAL whdl: WINDOW): INTEGER;

自变量说明

自变量名称 说明
whdl 要在其中执行操作的窗口的句柄。

注释

WinYWinGetYPos 不同,因为它返回窗口内的字符位置,而 WinGetYPos 查询窗口或对话框的左上角。

实例

WHEN $Event IS $MsgChar THEN
WHEN $EventParm(1,INTEGER) IS $KeyUpArrow THEN
 WinGoToXY(Handle,$WinX($Handle),$WinY($Handle)-1);
ELSWHEN $KeyRightArrow THEN
 WinGoToXY(Handle,$WinX($Handle)+1,$WinY($Handle));
END;
END;

返回代码

另见

WinX


Tivoli 服务台 6.0 开发工具包脚本语言参考

返回主页

版权所有