Tivoli Service Desk 6.0 Developer's Toolkit Script 言語解説書

ウィンドウの処理 (続き)

メイン・ページに戻る


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) を使用 することにより、ツールバー・ボタンの "ツールのヒント" と同様に、指定のツールバー・ボタンに対応したメニュー ID などの追加の属性を指定することが可能となります。

ツールバーはメニュー・バーに類似したコントロールです。 ツールバーは、ウィンドウ上の タイトル・バーとメニュー・バーの下に表示されます。 これは、マウス・ボタン 1 をクリックする ことによって選択することのできるアイコンの行から成っています。

ツールバーおよびその中のアイコンに対するキーボード・インターフェースはありません。 アイコンを選択すると、メニュー・メッセージ ($MsgMenu) がウィンドウのイベント・ハンドラー に送られます。 最初のイベント・パラメーター (整数) はアイコン ID です。

注: アイコンには 1-99 のラベルが付いており、左端のアイコンの ID が 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 に渡された文字列のリストは、メニュー構造全体を指定します。 水平のメイン・メニュー・アイテムおよび垂直の補助アイテムの両方を指定することができます。 メニュー・アイテムは、上から下、左から右の形式でリスト中にコード化されます。 空ストリングは 区切り記号としての役目をします。 たとえば、左端のメニュー・アイテムが「ファイル」で、 「ファイル」のアイテムとして「新規」、「保管」、「別名保管」、および「終了」を組み込む 場合には、メニュー・リストは次のようになります:

{'ファイル','新規','保管','別名保管','終了',''}: LIST OF STRING;

アイテムの 2 番目の列が次にきます。

ティルド (~) を使用して、文字をメニュー・アイテムのセレクターにすることができます。 次の表の中のスイッチをメニュー・リスト・アイテムの始めに位置づけて、各スイッチごとに 結果が表示されるようにすることができます。

スイッチ 結果
/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
 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 に渡された文字列のリストは、メニュー構造全体を指定します。 水平のメインメニュー・アイテムおよび垂直の補助アイテムの両方を指定することができます。 メニュー・アイテムは、上から下、左から右の形式でリスト中にコード化されます。 空ストリングは区切り記号としての役目をします。 たとえば、左端のメニュー・アイテムが「ファイル」で、 「ファイル」のアイテムとして「新規」、「保管」、「別名保管」、および「終了」を組み込む 場合には、メニュー・リストは次のようになります:

{'ファイル','新規','保管','別名保管','終了',''}: LIST OF STRING;

アイテムの 2 番目の列が次にきます。

ティルド (~) を使用して、文字をメニュー・アイテムのセレクターにすることができます。 次の表の中のスイッチをメニュー・リスト・オプションの始めに位置づけて、各スイッチごとに 結果が表示されるようにすることができます。

スイッチ 結果
/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 Script は、各総称およびスクロール・ウィンドウごとに現在のドロー位置を保守します。 WinWrite で書かれたテキストがその位置に表示され、書き込み操作後に、ドロー位置の X 位置が 拡張されます。 現在位置は、WinX および WinY 関数を呼び出すことによって 検出することができます。

形式指定子の使用

形式指定子は実際には、各種のビットが形式の各種のパーツをコントロールするビット・マスクです。 WinWrite は、ユーザーが表示の形式設定を WinWrite および他のステートメント中で コントロールすることができる文字列のリストを処理します。

一般的には、任意の式の後に次の 2 つの形式指定子が続くことができます:

これらの形式指定子は、コロンによって式から切り離され、また互いに切り離されます。 例:

  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));

left は出力をそろえて、小数点の右側に 2 桁を表示します。 デフォルトでは、 実数は小数点の右側に 6 桁を表示します。

データ・タイプのデフォルト形式

いろいろなデータ・タイプにデフォルト形式があります。 これらのデフォルトは国によって 異なる場合があります。なぜなら、データ・タイプのデフォルトは (米国のものも含めて) 国際 制御パネル設定値に基づいているからです。

次の表は、データ・タイプの米国のデフォルト形式を示したものです。

データ・タイプ 米国のデフォルト形式
文字列 $FmtRightJustify
整数 $FmtRightJustify+$FmtIntUngrouped+$FmtBlankPad+$FmtIntSignNegOnly+$FmtIntDecimal
実数 $FmtRightJustify+$FmtRealUngrouped+$FmtBlankPad+$FmtRealSignNegOnly+
$FmtRealDecimalDot
ブール $FmtRightJustify+$FmtBoolTrueFalse
日付 $FmtRightJustify+$FmtDateMonthDayYear+$FmtBlankPad+$FmtDateSlashSeparators+
$FmtDateNumericMonth+$FmtDateFullYear
時刻 $FmtRightJustify+$FmtTimeWithSeconds+$FmtBlankPad+$FmtTimeMilitary

デフォルト形式は、StringFormat, IntegerFormat, RealFormat, BooleanFormat, DateFormat, および TimeFormat 関数を使用して 変更することができます。

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 は、その処理の終わりの時点で、現在のドロー位置 (カーソルの位置) を、書き込まれた最後の文字から 1 文字分だけ右に離します。

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 ループを使用します: これは文字列のリスト全体を順次 書き込みます。

WinWriteLN は、ウィンドウ・カーソルを次の行の始めに進めることを除いては、 WinWrite と同じです。

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 操作が実行されるウィンドウのハンドル。

WinX はウィンドウ内の文字位置を戻し、一方 WinGetXPos はウィンドウまたは ダイアログ・ボックスの左上隅を参照するので、これら 2 つは異なるものです。

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 操作が実行されるウィンドウのハンドル。

WinY はウィンドウ内の文字位置を戻し、一方 WinGetYPos はウィンドウまたは ダイアログ・ボックスの左上隅を参照するので、これら 2 つは異なるものです。

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 Service Desk 6.0 Developer's Toolkit Script 言語解説書

メイン・ページに戻る

著作権