Tivoli Service Desk 6.0 Developer's Toolkit Script 言語解説書
メイン・ページに戻る
注: すべての Win 関数は同じ戻りコードをもっています。 このコード・テーブルは WinAboutBox 関数の中に現れ、このテーブルへのリンクはすべての Win 関数に現れます。
メイン・ページに戻る
注: これは、ウィンドウ処理
関数の最初のセクションです。このセクションは WinSetColor で終わり、
2 番目のセクションは WinSetFont から始まります。
ハンドルをデスクトップ・ウィンドウに戻します。この値は現行セッションの間は永続 します。 しかし、この値は永久に保管されるわけではありません。 次回にプログラムを 実行する時には、この定数は新しい値をもちます。
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 イベントの発生時にユーザーによって押されるキーを示します。
TSD Script は、カーソル制御キー、変更キー (すなわち、Ctrl や Alt (前面) など他のキーと一緒に 押されるキー) などの特殊キーについていくつかの定数を定義します。
注: 詳しくは、 TSD Script 定数を参照してください
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 WinAboutBox( VAL Icon : STRING, VAL AppName : STRING, VAL Version : STRING ) : INTEGER;
表示される情報は Tivoli Service Desk の著作権メッセージを含んでおり、他社の アプリケーションには無関係です。
引き数名 | 説明 |
Icon | ユーザーのアプリケーションで表示する関連 .bmp ファイルの 名前。 ファイルが見つからないか、ファイル名が無効である場合には、ボックスは図形なしで表示されます。 このコマンドで指定されたファイルを見つけるために、SAIPATH および PATH 環境変数が検索されます。 |
AppName | ユーザーのアプリケーションの名前。 |
Version | ユーザーのアプリケーションのバージョン番号。 |
KNOWLEDGEBASE aboutbox;
CONSTANTS
AppName IS 'Pink Elephant Word Processor'; AppVersion IS 'Version 3.1';
ROUTINES
Procedure DisplayAboutBox;
PRIVATE ROUTINES
Procedure DisplayAboutBox IS
VARIABLES ACTIONS WinAboutBox('pink.bmp', AppName, AppVersion); END;
戻りコード | 説明 |
1 | 正常終了。 |
0 | ユーザーによる中断。ユーザーがウィンドウをクローズしたか、操作を打ち切りました。通常は、これは Esc キーまたは「取消」ボタンを押して行なわれるか、あるいはシステム・メニューからウィンドウをクローズすることによって行なわれます。 |
-1 | このウィンドウ・ハンドルは有効なウィンドウを参照していません。 ウィンドウがもはや存在していないか、あるいはこのウィンドウがこのコマンドをサポートしていません。 |
-2 | 不明な値。 |
-3 | メモリー不足。 |
-4 | 作成しない。オペレーティング・システムが要求されたオブジェクトを作成できませんでした。 考えられる 1 つの理由は、親ウィンドウ・ハンドルがもはや存在していないウィンドウを参照することです。 |
-7 | ダイアログ・ボックスの名前付きコントロールが、ウィンドウ・ハンドルによって参照されたダイアログ・ボックスの中に見つかりませんでした。 |
-8 | 要求されたダイアログ・ボックス・コマンドは、指定されたコントロールのタイプでは実行されない可能性があります。 |
-10 | オペレーティング・システム・レベルでの呼び出しが失敗しました。 これは、不適切な構成またはリソースに原因があると考えられます。 |
-12 | SendMessage または PostMessage ステートメントが、 NETx ステートメントではサポートされていないメッセージで呼び出されました。 メッセージは、サポートされている $MsgNetx メッセージの 1 つであるか、NETx ステートメントで使用するために特別に定義されたユーザー定義の $MsgUser + n メッセージでなければなりません。 |
ウィンドウまたはスクロール・ウィンドウのクライアント域全体を消去して、現行の背景色 にします。
FUNCTION WinClear(VAL whdl: WINDOW): INTEGER;
引き数名 | 説明 |
whdl | 消去されるウィンドウのハンドル。 このハンドルは標準ウィンドウまたはスクロール・ウィンドウを参照することができます。 |
現行の背景色は WinSetColor 関数を使用して変更することができます。
WHEN $Event IS $MsgPaint THEN WinSetColor($Handle,$WinWhite,$WinBlack); WinClear( $Handle ); WinWrite($Handle,'Black');
現行の背景色を使用して、ウィンドウを現行カーソル位置から行の終わりまで消去します。
FUNCTION WinClearEOL(VAL whdl: WINDOW): INTEGER;
引き数名 | 説明 |
whdl | 消去されるウィンドウのハンドル。 このハンドルは標準ウィンドウまたはスクロール・ウィンドウを参照することができます。 |
WinClearEOL は、現行カーソル位置から現在行の終わりまで消去します。 カーソル位置は変わりません。 消去された領域は現行の背景色でペイントされます。
注: 現行の背景色は WinSetColor 関数を使用して変更することができます
WHEN $Event IS $MsgPaint THEN WinSetColor($Handle,$WinWhite,$WinBlue); WinGoToXY($Handle,2,2); WinClearEOL($Handle);
現行の背景色を使用して、ウィンドウを現行カーソル位置からウィンドウの最下部まで消去します。
FUNCTION WinClearEOW(VAL whdl: WINDOW): INTEGER;
引き数名 | 説明 |
whdl | 消去されるウィンドウのハンドル。 このハンドルは標準ウィンドウまたはスクロール・ウィンドウを参照することができます。 |
WinClearEOW は、指示されたウィンドウを現行カーソル位置からウィンドウの終わりまで消去します。 消去された領域は現行の背景色でペイントされます。 カーソル位置は変わりません。
注: 現行の背景色は WinSetColor ステートメントを使用して変更することができます
WHEN $Event IS $MsgPaint THEN WinGoToXY($Handle,5,10); WinSetColor($Handle,$WinWhite,$WinLightBlue); WinClearEOW($Handle);
現行の背景色を使用して、ウィンドウの長方形領域を消去します。
FUNCTION WinClearRectangle(VAL whdl: WINDOW, VAL xLoc, yLoc, width, height: INTEGER): INTEGER;
引き数名 | 説明 |
whdl | 消去されるウィンドウのハンドル。 このハンドルは標準ウィンドウまたはスクロール・ウィンドウを参照することができます。 |
xLoc | 消去される領域の左上隅の X 位置。 X 座標は文字セルで指定されます。 |
yLoc | 消去される領域の左上隅の Y 位置。 Y 座標は文字セルで指定されます。 |
width | 消去される領域の幅。 幅は文字セルで測ります。 |
height | 消去される領域の高さ。 高さは文字セルで測ります。 |
WinClearRectangle は、指定されたウィンドウ内の特定の長方形領域を消去します。 消去された領域は現行の背景色でペイントされます。 カーソルは移動しません。
注: 現行の背景色は WinSetColor ステートメントを使用して変更することができます
WHEN $Event IS $MsgPaint THEN WinSetColor($Handle,$WinWhite,$WinBlack); WinClearRectangle($Handle,5,10,40,8); END:
ダイアログ・ボックスまたはウィンドウをクローズします。
FUNCTION WinCloseWindow(VAL whdl: WINDOW): INTEGER;
引き数名 | 説明 |
whdl | クローズされるダイアログ・ボックスまたはウィンドウのハンドル。 |
この関数は、ダイアログ・ボックスまたはウィンドウに渡すことのできるメッセージとしても 実装されています ($MsgClose)。
KNOWLEDGEBASE close;
ROUTINES PROCEDURE Main;
PRIVATE
ROUTINES
PROCEDURE Main IS VARIABLES Handle : WINDOW; ACTIONS WinCreate($Desktop, Handle, $NullHandler, 1, 1, 80, 25, 'Window will close shortly...', $WinDefaultStyle); SysDelay(1000); WinCloseWindow(Handle); END;
標準または総称ウィンドウを作成します。
FUNCTION WinCreate(VAL parent: WINDOW, REF whdl: WINDOW, VAL EventHandler: EVENT, VAL xLoc, yLoc, width, height: INTEGER, VAL title: STRING, style: INTEGER): INTEGER;
イベント関数がペイント・メッセージを処理しないで、ウィンドウを消去した場合には、 ウィンドウは、ウィンドウの作成時にそのウィンドウ内にあったイメージを保存します。
WinCreate は $MsgCreate が処理されるまでは応答しません。 したがって、戻されるウィンドウ・ハンドルの値は、$MsgCreate が処理されるまでは 設定されません。 ただし、$Handle は WinCreate の処理の間でも使用することができます。
引き数名 | 説明 |
parent | 作成される新規ウィンドウの親。 |
whdl | 新しく作成されたウィンドウのハンドルがこのパラメーターで戻されます。 エラーがある場合には、変数は $Unknown に設定されます。 |
EventHandler | ウィンドウまたはダイアログ・ボックスで生成されたイベントを処理するイベント・ハンドラー。イベント処理が必要でない場合には、キーワード $NullHandler を使用することができます。 |
xLoc | ウィンドウの左上隅の X 位置。X 座標は文字セルで指定されます。 |
yLoc | ウィンドウの左上隅の Y 位置。Y 座標は文字セルで指定されます。 |
width | ウィンドウの幅 (X 座標) 。枠を除外します。 |
height | 枠、タイトル・バー、メニュー・バー、ツールバー、および状況バーを除くウィンドウの高さ (Y 座標)。 |
title | ウィンドウ・タイトル・バーに表示されるタイトル。 ウィンドウには、表示されるタイトルのタイトル・バーがなけれ ばなりません。 $WinTitle が入っているスタイルを使用します。 |
style | ウィンドウの外観をコントロールするために使用するスタイル・フラグのセットを表す整数のビット・マスク。 使用できるスタイル・フラグのリストについては、ウィンドウ・スタイルを参照してください |
受信する最初のメッセージ
ウィンドウの作成時に、以下のメッセージが、示されている順序で受信されます:
スタイルを使用したウィンドウのカスタマイズ
WinCreate は標準または総称ウィンドウを作成するために使用することができます。 このようなウィンドウには、メニュー・バー、ツールバー、状況バー、およびその他のウィンドウ 要素を入れることができます。
WinCreate で作成されるウィンドウの正確な外観および動作は、主としてスタイル引き数 によって決定されます。 この整数の引き数は、いろいろなフラグ (次のセクションにリストされている) から アセンブルされたビット・マスクです。 引き数は通常は BITOR 演算子でアセンブルされます (たとえば、 BITOR($WinBorder, $WinTitle))。 追加のメソッドの使用には注意が必要です: 同じフラグが 2 回追加されると、不都合な結果となる場合があります。
注: 詳しくは、 ウィンドウ・スタイルを参照してください
ウィンドウ用のイベント・ハンドラーの作成
一般的には、イベント・ハンドラーを WinCreate によって作成されたウィンドウ と関連づけます。 イベント・ハンドラーは、ウィンドウに送られるメッセージの一部を処理 するルーチンです。 たとえば、ウィンドウにアイコン・バーがある場合には、そのイベント・ハンドラー は、ユーザーがそのアイコンの 1 つをクリックするたびに、$MsgMenu メッセージ (イベント) を 受け取ります。 最初のイベント・パラメーター (整数) には、1 とアイコンの数との間の数字が入って おり、これはどのアイコンが選択されたかを示します。 それによって、イベント・ハンドラーは特定の ルーチンを呼び出すことができます。
注: WinCreate で作成されたウィンドウが受信することのある各種のメッセージは TSD Script メッセージ に記載されています。
EVENT MainEvent IS ACTIONS WHEN $Event IS $MsgCreate THEN WinSetIconBar($Handle,{'FILE.ICO', 'REPORT.ICO','HELP.ICO'}: LIST OF STRING); ELSWHEN $MsgMenu THEN WHEN $EventParm(1,INTEGER) IS 1 THEN HandleFileIcon; ELSWHEN 2 THEN HandleReportIcon; ELSWHEN 3 THEN HandleHelpIcon; END; END; END;
PROCEDURE MainProgram IS VARIABLES mainWindow: WINDOW; ACTIONS WinCreate($Desktop,mainWindow,MainEvent,0,0,80,20, 'Main Window', BitOr($WinBorder,$WinTitle,$WinResize, $WinSysMenu, $WinIconBar, $WinAutoPos,$WinTaskList)); WinWait(mainWindow); END;
クロックまたはタイマー・ウィンドウを作成します。
FUNCTION WinCreateClock(VAL whdlParent: WINDOW, REF whdl: WINDOW, VAL xLoc, yLoc, width, height, style, id: INTEGER): INTEGER;
引き数名 | 説明 |
whdlParent | 作成される新規ウィンドウの親。 |
whdl | 新規ウィンドウのハンドルがこのパラメーターで戻されます。 エラーがある場合には、変数は $Unknown に設定されます。 |
xLoc | ウィンドウの左上隅の X 位置。 X 座標は文字セルで測ります。 |
yLoc | ウィンドウの左上隅の Y 位置。 Y 座標は文字セルで測ります。 |
width | 枠を除いたウィンドウの幅 (X 座標)。 幅は文字セルで測ります。 |
height | 枠、タイトル・バー、メニュー・バー、ツールバー、および状況バーを除くウィンドウの高さ (Y 座標)。 高さは文字セルで測ります。 |
style | クロック・ウィンドウのスタイル。 スタイル・フラグは BITOR 演算子で結合されます。 次の中から 1 つを選択するか、あるいは何も選択しないでください:
次の中から 1 つを選択するか、あるいは何も選択しないでください:
任意指定フラグ: $ClkHidden - クロックは画面上に表示されません。 |
ID | 親ウィンドウに対する通知メッセージで使用される識別番号。 タイマーは $MsgStartTimer メッセージを使用して総称ウィンドウ内に作成することができます。 |
WinCreateClock は、リアルタイムで時刻を更新 (秒ごとに) するクロックを作成するために 使用することができます。 デフォルトでは、クロックはシステム・クロックに基づいて、現在 時刻の表示を開始します。 しかし、時刻の値とともにクロックを $MsgClockSet メッセージに 送信することによって、現在時刻を表示するクロックを設定することができます。
たとえば、次の行を、経過時間クロックをセットアップするために使用することができます:
SendMessage(clockWindow,$MsgClockSet,{0,0,0}: TIME);
クロック・ウィンドウは $MsgShow メッセージにも応答します。 これによって、 クロック・ウィンドウを作成して、それを隠し、その時刻値を変更し、それを表示する ことができます。 次の例を考えてください。
WHEN $Event IS $MsgCreate THEN WinCreateClock($Handle,clockWindow, 1,1,13,2, $Clk24Hour,0); SendMessage(clockWindow,$MsgShow,FALSE); ELSWHEN START_TIMER THEN SendMessage(clockWindow,$MsgClockSet, {0,0,0}: TIME): SendMessage(clockWindow,$MsgShow,TRUE); END;
この例では、ユーザーは別のウィンドウのイベント処理の中に位置しています。 ウィンドウの作成時にクロックが作成されますが、隠されています。 ウィンドウが START_TIMER メッセージを受け取ると、ウィンドウはクロック時刻を 00:00:00 に 設定してからクロックを表示します。 ユーザーは経過時間クロックを見ることになります。
VARIABLES clock: WINDOW; ROUTINES EVENT WindowEvent IS ACTIONS WHEN $Event IS $MsgCreate THEN WinCreateClock($Handle,clock,1,1,13,2,$ClkBorderIn,1); END; END;
基本的なハイパーテキスト機能をもつ Multiple Document Interface (MDI) ビューアーを 作成します。 「ファイル」、「編集」、および「ウィンドウ」メニューを使用できる メニュー・バーによって、次のことができます:
ハイパーメディア・ビューアーで右マウス・ボタンを押すことによって、 ポップアップ・メニュー選択項目にアクセスすることができます。 これらの メニュー・アイテムにより、次のものを選択することができます:
FUNCTION WinCreateHyperViewer(VAL whdlParent: WINDOW, REF whdl: WINDOW, VAL fileName: STRING, VAL EventFunc: EVENT, VAL xLoc, yLoc, width, height: INTEGER, VAL title: STRING, VAL style: INTEGER): INTEGER;
引き数名 | 説明 |
whdlParent | 作成される新規ウィンドウの親。 |
whdl | 新しく作成されたウィンドウのハンドルがこのパラメーターで戻されます。 エラーがある場合には、whdl 引き数は $Unknown に設定されます。 |
fileName | 表示されるファイルの名前。 ファイルが現行ディレクトリーの中にない場合には、SAIPATH が検索されます。 このファイルは平易な ASCII ファイルとするか、あるいは組み込みハイパーテキスト・リンクを含むことができます。 詳細については、「注」セクションを参照してください。 |
EventFunc | ウィンドウまたはダイアログ・ボックスによって生成されたイベントを処理するイベント・ハンドラー。 イベント処理が必要でない場合には、キーワード $NullHandler を使用することができます。 |
xLoc | ウィンドウの左上隅の X 位置。 X 座標は文字セルで測ります。 |
yLoc | ウィンドウの左上隅の Y 位置。 Y 座標は文字セルで測ります。 |
width | 枠を除いたウィンドウの幅 (X 座標)。 幅は文字セルで測ります。 |
height | 枠、タイトル・バー、メニュー・バー、ツールバー、および状況バーを除くウィンドウの高さ (Y 座標)。 高さは文字セルで測ります。 |
title | ウィンドウ・タイトル・バーに表示されるタイトル。 ウィンドウには、表示されるタイトルのタイトル・バーがなければなりません。 |
style | ウィンドウの外観をコントロールするために使用するスタイル・フラグのリストを表す整数のビット・マスク。 詳しくは、このステートメントの「注」を参照してください。 |
WinCreateHyperViewer は、ハイパーテキスト・ビューアーを作成するために使用することができます。 指示された位置、サイズ、およびスタイルでウィンドウを作成することに加えて、 WinCreateHyperViewer は指示されたファイルの目次を表示します。 このファイルは 組み込みボタン のある ASCII テキストが入っているとみなされます。 ユーザーには 強調表示されたワードとして見えるボタンは、テキスト・ファイル、サウンド・ファイル、 ピクチャー、またはプログラムなどの別のオブジェクトへのリンクです。
ボタンは次の形式で定義されます:
[[<Button text> | <command>]]
<Button text> はユーザーに対して強調表示されたテキストとして表示される テキストであり、<command> はクリックによって開始されるアクションを指示します。
ワード・ラップ
ハイパーテキスト・コントロールでは、Tivoli Systems のハイパーメディア・ファイルとして 形式設定されるために提供されたファイルを必要とします。 これは、1 つの行に 2 つの改行が見つ かるまでは、テキストのすべての行がワード・ラップされる (改行を無視して) ことを意味します。
ワード・ラップおよびフォーマット・デフォルトをオフにする
ハイパーテキスト・ウィンドウのワード・ラップおよびフォーマット・デフォルトをオフに するためには、aseview.exe を使用して /NOWORDWRAP /NOFORMAT フラグをコマンド行引き数と して渡すことができます。 これは、ハイパーテキスト・ウィンドウのワード・ラップおよび フォーマット・デフォルトをプログラムに基づいてオフにするための唯一の方法です。
次の表は WinCreateHyperViewer ステートメントのコマンド・オプション
および説明を示したものです:
コマンド・オプション | 説明 |
ID | コマンドが整数である場合には、それはボタン ID とみなされます。
ユーザーがこのボタンをクリックすると、$MsgButton メッセージがハイパーテキスト・ビューアー・ウィンドウのイベント・ハンドラーに送られます。 ボタン・テキストはイベント・パラメーター 1 (文字列) の中にあり、ボタン ID はイベント・パラメーター 2 (整数) の中にあります。 コマンドが提供されていない (ボタンのフォームが [[Button-text]] となっている) 場合には、イベント・ハンドラーはボタンが選択されていても $MsgButton メッセージを受け取ります。 ただし、ボタン ID (イベント・パラメーター 2 、整数) は 0 となります。この場合は、イベント・ハンドラーがゼロを戻した場合には、ビューアーはボタン・テキストを変更して、 formButtonTextand が検索操作を実行するようにします (以下を参照)。 |
JUMP | JUMP <マーカー名> は、Jump の後に続くテキストと一致するマーカーを見つけるためにタグ・リストを検索します (詳しくは「マーカー・タグ」を参照)。 一致が見つかった場合には、そのマーカーを含む行がビューアーの最上部に位置づけられて、EventJump が生成されます。 ハイパーテキスト・ビューは EventJump を処理して、マーカーのリストをファイル中で "訪問済み"として保持します。 |
LABEL | LABEL <ラベル・テキスト> は任意の文字列とすることができます。イベント・パラメーター 1 (文字列) にボタン・テキストを、イベント・パラメーター 2 (文字列) にラベル・テキストを入れた $MsgLabel メッセージがウィンドウのイベント・ハンドラーに送られます。 |
MARKER | MARKER <マーカー名> はテキスト中に目に見えないマーカーを入れます。 |
SEARCH | SEARCH <検索テキスト> は、<検索テキスト> を見つけるために現行ファイルの最上部から検索を開始します。 検索テキストの中に組み込みの改行がない限り、テキストが複数行にまたがることはできません。 検索は Windows 以外は大文字小文字の区別をします。 テキストが見つかると、テキストを含む行がビューアー・ウィンドウの最上行に表示されるように、ビューアーが位置づけられます。 |
FILE | FILE <ファイル名> [NEW|REPLACE] [NOWORDWRAP|NOFORMAT] は、新規のテキスト・ファイルをオープンします。 デフォルトでは、新規のファイルが現在ビューアー中にあるファイルと置き変わります。 これは、<ファイル名> の後にキーワード REPLACE が続く場合も同じです。 <ファイル名> の後にキーワード NEW が続く場合には、新規のビューアー・ウィンドウがオープンして新規のファイルを表示します。 ビューアーのサイズはシステムによって決定されます。 デフォルトでは、最低でも 1 つの空白行で区切られていないすべての行が一連の段落として扱われるように、ワード・ラップが使用されます。 任意の非空白行の後の最初の空白行は廃棄されます。 NOWORDWRAP キーワードを使用して、この動作を抑止することができます。 デフォルトのワード・ラップとともに使用される NOFORMAT は、隣接する行が結合されるのを防ぎますが、それでも長い行は折り返します。 |
IMAGE | IMAGE <イメージ・ファイル>.BMP [SCROLL | SCALE] は、イメージ・ビューアーをオープンし、指示されたイメージ・ファイルを表示します。 デフォルトでは、イメージはビューアーのサイズに合うようにクリップされます。 SCALE キーワードにより、イメージの大きさがビューアーの大きさに合わせて決められます。 SCROLL キーワードはイメージをクリップしますが、イメージ全体をスクロールするために使用するスクロール・バーをビューアーに追加します。 |
PLAY | PLAY <サウンド・ファイル>.WAV は、指示されたオーディオ・ファイルを再生します。 ユーザーがオーディオの再生をコントロールするために操作できるハイパーテキスト・ビューアー・ウィンドウが現れます。 |
RUN | RUN <アプリケーション名> は指示されたアプリケーションを実行します。 <アプリケーション名> は実行可能ファイルまたはコマンド・ファイルの名前だけでなく、コマンド行引き数 ([[Windows NT|RUN F:\DOC\DOCMAN.EXE WINDOWS_NT]]) を含む文字列とすることができます。 |
総称ウィンドウで受け取ることのできる各種タイプのメッセージの完全なリストについては、
TSD Script メッセージを参照してください
ウィンドウ・スタイル・フラグについては、WinCreate ステートメントを参照してください。
KNOWLEDGEBASE WinHyper;
ROUTINES PROCEDURE HyperTextExample;
PRIVATE
CONSTANTS MENU_LIST {'File' ,'Open','/L ','Exit',''}: LIST OF STRING;
ROUTINES EVENT HyperTextEvent IS VARIABLES fileName: STRING; ACTIONS WHEN $Event IS $MsgCreate THEN WinSetMenuBar($Handle,MENU_LIST); WinSetIconBar($Handle,{'hyp_text.ico', 'hypimage.ico', 'hypsound.ico','search.ico'}:
LIST OF STRING); ELSWHEN $MsgMenu THEN WHEN $MenuSelection IS 1, 101 THEN IF WinFileDialog($Desktop,fileName,'*.*', 10,10, 'Select file to view',0) < 0 THEN WinMessageBox($Handle,'Error', $MBOk+$MBIconError,fileName); ELSE SendMessage($Handle,$MsgOpenFile,fileName, fileName,0); END; ELSWHEN 2 THEN IF WinFileDialog($Desktop,fileName,'*.bmp', 10,10, 'Select bitmap to view',0) < 0 THEN WinMessageBox( $Handle, 'Error', $MBOk+ $MBIconError,fileName ); ELSE SendMessage($Handle,$MsgDisplayImage,fileName, fileName,0); END; ELSWHEN 3 THEN IF WinFileDialog($Desktop,fileName,'*.wav',10,10, 'Select sound to play',0) < 0 THEN WinMessageBox($Handle,'Error', $MBOk+$MBIconError,fileName); ELSE SendMessage($Handle,$MsgPlaySound,fileName, fileName,0); END; ELSWHEN 4 THEN IF WinEditField($Desktop,fileName,0,0,30, 'Search for?', BitOr($WinAutoPos, $WinBorder, $WinTitle)) < 1 THEN WinMessageBox($Handle,'Error', $MBOk+$MBIconError,fileName); ELSE SendMessage($Handle,$MsgSearch,fileName); END; ELSWHEN 103 THEN SendMessage($Handle,$MsgClose); END; ELSWHEN $MsgChar THEN WHEN $KeyCode IS $KeyAltT THEN SendMessage($Handle,$MsgMenu,1); ELSWHEN $KeyAltI THEN SendMessage($Handle,$MsgMenu,2); ELSWHEN $KeyAltA THEN SendMessage($Handle,$MsgMenu,3); ELSWHEN $KeyAltS THEN SendMessage($Handle,$MsgMenu,4); ELSE WinMessageBox($Handle,'Hypertext Key',$MBOK, $KeyCode ); END; ELSWHEN $MsgButton THEN WinMessageBox($Handle,'Hypertext Button',$MBOK, 'Button text' & $EventParm(1,STRING) & 'Button ID ' & $EventParm(2,INTEGER)); ELSWHEN $MsgLabel THEN WinMessageBox($Handle,'Hypertext Button',$MBOK, 'Button text ' & $EventParm(1,STRING) & 'Button Label ' & $EventParm(2,STRING)); END; END (* Hypertext Event *); PROCEDURE HyperTextExample IS VARIABLES whdl: WINDOW; ACTIONS WinCreateHyperViewer($Desktop,whdl,'formman.hlp', HyperTextEvent,1,1,80,25, 'Hyertext Test', BitOr($WinBorder,$WinTitle, $WinResize,$WinMenu, $WinIconBar,$WinSysMenu, $WinMinMax, $WinAutoPos,$WinAutoSize)); WinWait(whdl); END (* Hypertext Example *);
ハイパーメディア・ファイルのフォーマット化の詳細については、Tivoli Service Desk Developer's Toolkit ツールおよびユーティリティーの手引き を参照してください。
SAIPATH の詳細については、SAIPATH を使用したファイル検索を参照してください
イメージを表示するウィンドウを作成します。
FUNCTION WinCreateImage(VAL whdlParent: WINDOW, REF whdl: WINDOW, VAL fileName: STRING, VAL xLoc, yLoc, width, height: INTEGER, VAL title: STRING, VAL style, id: INTEGER): INTEGER;
引き数名 | 説明 |
whdlParent | 作成される新規ウィンドウの親。 |
whdl | 新しく作成されたウィンドウのハンドルがこのパラメーターで戻されます。 エラーがある場合には、変数は $Unknown に設定されます。 |
fileName | 表示されるイメージのファイル名。 イメージは、OS/2 ビットマップ・ファイル、 Windows ビットマップ、または PCX イメージ・ファイルとすることができます。 |
xLoc | ウィンドウの左上隅の X 位置。 X 座標は文字セルで測ります。 |
yLoc | ウィンドウの左上隅の Y 位置。 Y 座標は文字セルで測ります。 |
width | ウィンドウの幅 (X 座標) 。枠を除外します。幅は文字セルで測ります。 |
height | 枠、タイトル・バー、メニュー・バー、ツールバー、および状況バーを除くウィンドウの高さ (Y 座標)。 高さは文字セルで測ります。 |
title | ウィンドウ・タイトル・バーに表示されるタイトル。 ウィンドウには、表示されるタイトルのタイトル・バーがなければなりません。 $ImgTitle スタイルを使用してください。 |
style | イメージ・ウィンドウの動作をコントロールする整数ビットマップ。 スタイル・フラグ・オプションについては、「注」セクションを参照してください。 |
id | イベントをレポートする時にイメージを識別するために $MsgImage メッセージによって使用される ID (整数)。 |
イメージ・ウィンドウ・スタイルは、BITOR 演算子を使用して、以下のスタイルから
アセンブルすることができます:
スタイル | 説明 |
$ImgScroll | イメージがファイル中と同じサイズで表示されます。 ウィンドウにはスクロール・バーが付いています。 イメージがウィンドウより大きい場合に、スクロールすることができます。 |
$ImgClip | イメージがファイル中と同じサイズで表示されます。 必要な場合には、イメージの上部と右側がウィンドウに収まるようにクリップされます。 |
$ImgScale | 要求されたウィンドウ・サイズに収まるように、イメージの幅と高さの両方が縮尺されます。 縮尺プロセスによってイメージがゆがむ場合があります。 |
$ImgBorder | イメージ・ウィンドウには枠が付いています。 |
$ImgTitle | イメージ・ウィンドウにはタイトルが付いています。
$ImgBorder も指定しなければなりません。 イメージ・ウィンドウは $MsgSetImage メッセージに応答することができます。 このイメージにイメージ・ファイルの名前が付いている場合は、イメージ・ウィンドウは指示されたファイルをロードして表示します。 |
KNOWLEDGEBASE WinImage;
TYPES ImageRec IS RECORD fileName: STRING; whdlImage: WINDOW; END;
ROUTINES PROCEDURE ImageExample;
PRIVATE
ROUTINES EVENT ImageEvent(REF imageData: ImageRec) IS ACTIONS WHEN $Event IS $MsgCreate THEN WinSetMenuBar($Handle,{'File','Open','/L','Exit',''}: LIST OF STRING); WinCreateImage($Handle,imageData.whdlImage, 'os2logo.bmp',1,1,WinWidth($Handle), WinHeight($Handle),'',$ImgScroll,1); ELSWHEN $MsgMenu THEN WHEN $MenuSelection IS 101 THEN IF WinFileDialog($Handle,imageData.fileName,'*.bmp', 10,10,'Select new image', 0 ) >= 1 THEN SendMessage(imageData.whdlImage, $MsgSetImage,imageData.fileName); END; ELSWHEN 103 THEN SendMessage($Handle,$MsgClose); END; ELSWHEN $MsgSize THEN SendMessage(imageData.whdlImage,$MsgSetSize, $EventParm(1,INTEGER),$EventParm(2,INTEGER)); ELSWHEN $MsgImage THEN WinMessageBox($Handle,'Image',$MBOK,$EventParm(1, INTEGER)); END; END (* Image Event *);
PROCEDURE ImageExample IS VARIABLES whdl: WINDOW; data: ImageRec ACTIONS WinCreate($Desktop,whdl,ImageEvent{data},0,0,0,0, 'Image test', BitOr($WinBorder,$WinTitle,$WinResize, $WinMenu,$WinMinMax,$WinTaskList, $WinSysMenu,$WinAutoPos, $WinAutoSize)); WinWait(whdl); END (* Image Example *);
マウス・クリックに反応する長方形領域を作成します。
FUNCTION WinCreateMouseRect(VAL whdl: WINDOW, VAL xLoc, yLoc, xLen, yLen, id: INTEGER): INTEGER;
引き数名 | 説明 |
whdl | 長方形が作成されるウィンドウのハンドル。 whdl 引き数は標準ウィンドウまたはスクロール・ウィンドウを参照することができます。 |
xLoc | マウス・ゾーンの左上隅の X 座標。 |
yLoc | マウス・ゾーンの左上隅の Y 座標。 |
xLen | マウス・ゾーンの幅。 |
yLen | マウス・ゾーンの高さ。 |
id | 特定のマウス・ゾーンを識別するために使用する整数。 |
デフォルトでは、TSD Script はウィンドウ内のマウス・イベントをレポートしません。 ただし、マウス・ゾーンを作成することによって、マウスの動きやクリックなどのイベントを レポートするようにすることができます。 マウス・ゾーンはウィンドウ内の長方形領域です。 マウス・ゾーンを作成する時は、それに整数の ID を割り当てます。 この ID は、ゾーン内のすべての マウス・イベントとともに親ウィンドウにレポートされます。
マウス・ゾーン内で活動があった場合は常に、以下の 4 つの整数のイベント・パラメーター とともに、$MsgMouse メッセージがそのゾーンの親に送られます:
ヒント: ウィンドウの 1 つが $MsgMouse イベントを処理するたびに、WinSetMousePointer を呼び出さなければなりません。
KNOWLEDGEBASE WinMouse;
ROUTINES PROCEDURE MouseExample;
PRIVATE CONSTANTS MENU_LIST IS {'File' , 'Exit','', 'Pointer type', 'MouseDefaultPtr', 'MouseuLArrowPtr', 'MouseURArrowPtr', 'MouseDRArrowPtr', 'MouseDLArrowPtr', 'MouseUPResizePtr', 'MouseURResizePtr', 'MouseRTResizePtr', 'MouseDRResizePtr', 'MouseDNResizePtr', 'MouseDLResizePtr', 'MouseLTResizePtr', 'MouseULResizePtr', 'MouseCrossPtr', 'MouseHandPtr', 'MouseHourGlassPtr', 'MouseIBeamPtr',''}: LIST OF STRING;
ROUTINES EVENT MouseEvent(REF pointerType: INTEGER) IS ROUTINES
PROCEDURE ProcessMenu(VAL whdl: WINDOW, VAL selection: INTEGER) IS ACTIONS WHEN selection IS 101 THEN SendMessage(whdl,$MsgClose); ELSWHEN 201 THEN pointerType := $MouseDefaultPtr; ELSWHEN 202 THEN pointerType := $MouseuLArrowPtr; ELSWHEN 203 THEN pointerType := $MouseURArrowPtr; ELSWHEN 204 THEN pointerType := $MouseDRArrowPtr; ELSWHEN 205 THEN pointerType := $MouseDLArrowPtr; ELSWHEN 206 THEN pointerType := $MouseUPResizePtr; ELSWHEN 207 THEN pointerType := $MouseURResizePtr; ELSWHEN 208 THEN pointerType := $MouseRTResizePtr; ELSWHEN 209 THEN pointerType := $MouseDRResizePtr; ELSWHEN 210 THEN pointerType := $MouseDNResizePtr; ELSWHEN 211 THEN pointerType := $MouseDLResizePtr; ELSWHEN 212 THEN pointerType := $MouseLTResizePtr; ELSWHEN 213 THEN pointerType := $MouseULResizePtr; ELSWHEN 214 THEN pointerType := $MouseCrossPtr; ELSWHEN 215 THEN pointerType := $MouseHandPtr; ELSWHEN 216 THEN pointerType := $MouseHourGlassPtr; ELSWHEN 217 THEN pointerType := $MouseIBeamPtr; END; END (* Process Menu *);
ACTIONS WHEN $Event IS $MsgCreate THEN WinSetMenuBar($Handle,MENU_LIST); ELSWHEN $MsgPaint THEN WinClear( $Handle ); WinCreateMouseRect($Handle,1,1, WinWidth($Handle), WinHeight($Handle),1); ELSWHEN $MsgMenu THEN ProcessMenu($Handle,$MenuSelection); ELSWHEN $MsgMouse THEN WinSetMousePointer($handle,pointerType); END; END (* Mouse Event *);
PROCEDURE MouseExample IS VARIABLES whdlMain: WINDOW; ACTIONS WinCreate($Desktop,whdlMain,MouseEvent{ $MouseDefaultPtr}, 0,0,60,20, 'Mouse example', BitOr($WinBorder,$WinTitle, $WinResize,$WinMenu, $WinVScroll,$WinMinMax, $WinTaskList, $WinSysMenu,$WinAutoPos)); WinWait(whdlMain); END (* Mouse Example *);
詳しくは、マウス・ポインターおよびマウス・メッセージを参照してください
必要に応じて自らを再ドローするモードレスのスクロール・ウィンドウを作成します。
WinCreateScrollWindow(VAL whdlParent: WINDOW, REF whdl: WINDOW,| VAL EventHandler: EVENT, VAL xLoc, yLoc, width, height: INTEGER, VAL title, font: STRING, VAL pointSize, style: INTEGER): INTEGER;
引き数名 | 説明 |
whdlParent | スクロール・ウィンドウの親。 |
whdl | 新しく作成されたウィンドウのハンドルがこのパラメーターで戻されます。 エラーがある場合には、変数は $Unknown に設定されます。 |
EventHandler | ウィンドウまたはダイアログ・ボックスによって生成されたイベントを処理するイベント・ハンドラー。 イベント処理が必要でない場合には、キーワード $NullHandler を使用することができます。 |
xLoc | ウィンドウの左上隅の X 位置。X および Y 座標は文字セルで測ります。 |
yLoc | ウィンドウの左上隅の Y 位置。 |
width | 枠を除いたウィンドウの幅 (X 座標)。 幅は文字セルで測ります。 |
height | 枠、タイトル・バー、メニュー・バー、ツールバー、および状況バーを除くウィンドウの高さ (Y 座標)。 高さは文字セルで測ります。 |
title | ウィンドウ・タイトル・バーに表示されるタイトル。 ウィンドウには、タイトルを表示するためのタイトル・バーがなければなりません。 $WinTitle スタイルを使用します。 |
font | 使用可能システム・フォントの名前。 |
pointSize | スクロール・ウィンドウ内部で使用されるフォントのポイント・サイズ。 |
style | ウィンドウの外観をコントロールするために使用するスタイル・フラグのリストを表す整数のビット・マスク。 詳細については、WinCreate ステートメントの「注」セクションを参照してください。 |
受信する最初のメッセージ
スクロール・ウィンドウの作成時に、以下のメッセージが、示されている順序で受信されます:
スクロール・ウィンドウの追跡および再ドロー
WinCreateScrollWindow を使用して、仮想スクロール・ウィンドウを作成することができます。 総称ウィンドウでは、プログラマーはウィンドウの目次を理解し、$MsgPaint メッセージの受信時に ウィンドウを再表示する責任があります。 スクロール・ウィンドウは自分自身の目次を "理解" しています。 プログラマーは WinWrite や WinWriteLN などを使用して、情報を これらに書き込みます。
注: スクロール・ウィンドウが 生成したり受信することのできるメッセージのリストについては、TSD Script メッセージを参照してください
スクロール・ウィンドウのカスタマイズ
スクロール・ウィンドウは、ツールバー、メニュー・バー、状況バー、および 総称ウィンドウで使用できるその他のすべてのウィンドウ要素をもつことができます。
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 *);
詳しくは、ウィンドウ・スタイルを参照してください
編集値のデータ・タイプ用の行エディターを表示します。
FUNCTION WinEditField(VAL parent: WINDOW, REF value: ANY, VAL xLoc, yLoc, length: INTEGER, title: STRING, VAL style: INTEGER): INTEGER;
引き数名 | 説明 |
parent | 作成される新規ウィンドウの親。 Windows では、WinEditField の呼び出し時に親ウィンドウが使用できない場合には、WinEditField ウィンドウは親ウィンドウに合わせてクリップされません。 Windows では、$Desktop が $WinModal と組み合わせて親として指定されている場合には、 WinEditField を使用して作成されたウィンドウはモードレスとなります。 次のセクションでは、$WinModal などのスタイル・フラグについて説明します。 |
xLoc | ウィンドウの左上隅の X 位置。 |
yLoc | ウィンドウの左上隅の Y 位置。 |
length | 枠を除いたウィンドウの幅 (X 座標)。 |
title | ウィンドウ・タイトル・バー上に表示するタイトル。ウィンドウには、表示されるタイトルのタイトル・バーがなければなりません。 $WinTitle スタイルを使用します。 Windows では、ユーザーが $WinTitle 定数を指定しない場合は、それが自動的に追加されます。 |
style | ウィンドウの外観をコントロールするスタイル・フラグのリストが入っている整数。 詳細については、使用できるスタイル・フラグに関する次のセクションを参照してください。 |
WinEditField に対する使用可能なスタイル・フラグはテーブルとしてリストされています。
スタイル・フラグ | 説明 |
$WinAutoPos | システムがウィンドウの最適な位置を決定します。 xLoc および yLoc パラメーターは無視されます。 |
$WinAutoSize | システムがウィンドウの最適なサイズを決定します。 xLen および yLen パラメーターは無視されます。 |
$WinBorder | ウィンドウに、ダイアログ・ボックスに類似した枠が付きます。 スタイルによっては枠が必要です。Windows では、ユーザーが $WinBorder 定数を指定しない場合は、自動的にそれが追加されます。 |
$WinDefaultStyle | $WinBorder, $WinResize, $WinTitle, および $WinSysMenu からアセンブルされたシステム定義のデフォルト・スタイル。 |
$WinField | ウィンドウに、単一ピクセルの枠 (ダイアログ・ボックス中のコントロールのようなもの) が付きます。 このスタイルは $WinBorder とは互いに排他的です。 |
$WinInvisible | ウィンドウは隠されたまま作成されます。 可視の状態にするためには、$MsgShow を送信しなければなりません。 |
$WinModal | 編集フィールドの作成時に、それがモーダル・ウィンドウとなります。 編集フィールド・ウィンドウの親および他の子ウィンドウのすべてが使用禁止となります。 |
$WinNone | ウィンドウには、枠、タイトル・バー、またはその他の要素が付きません。 |
$WinTaskList | ウィンドウ・タイトルがシステム・タスク・リストに入れられます。 ユーザーはこのタスク・リストからウィンドウをアクティブ化することができます。 このスタイルは、通常はアプリケーションのメインウィンドウ用に使用すべきです。 |
$WinTitle | ウィンドウにタイトル・バーが付きます。 このスタイルが存在しない場合には、パラメーターの 1 つとしてタイトルが指定されていても、タイトルは表示されません。 タイトル・バーによりウィンドウが移動可能となります。 |
VARIABLES intVal: INTEGER; ACTIONS WinEditField($Desktop,intVal,0,0,30,'Integer', $WinAutoPos+$WinBorder+ $WinTitle);
DlgBox
ダイアログ・ボックスまたはウィンドウを使用可能または使用禁止にします。
FUNCTION WinEnableWindow(VAL whdl: WINDOW, VAL state: BOOLEAN): INTEGER;
引き数名 | 説明 |
whdl | 使用可能状態が変更されるダイアログ・ボックスまたはウィンドウのハンドル。 |
state | ウィンドウを "使用可能" にするためには TRUE に設定し、 "使用禁止" にするためには FALSE に設定します。 |
この関数は、ダイアログ・ボックスのフォームまたはウィンドウに渡すことのできるメッセージとしても 実装されています ($MsgEnable)。
KNOWLEDGEBASE enable;
ROUTINES PROCEDURE Main;
PRIVATE
ROUTINES
PROCEDURE Main IS VARIABLES Handle : WINDOW; ACTIONS WinCreate($Desktop, Handle, $NullHandler, 1, 1, 80, 25, 'Test Window', $WinDefaultStyle); WinEnableWindow(Handle, FALSE); SysDelay(1000); WinEnableWindow(HANDLE, TRUE); WinWait(Handle); END;
「ファイル選択」ダイアログ・ボックスを表示します。
FUNCTION WinFileDialog(VAL whdlParent: WINDOW, REF fileName: STRING, VAL startMask: STRING, VAL xLoc, yLoc: INTEGER, VAL title: STRING, VAL style: INTEGER ): INTEGER;
引き数名 | 説明 |
whdlParent | 作成される新規ウィンドウの親。 |
fileName | ユーザーが選択したファイル名を戻します。 ユーザーがダイアログ・ボックスを取り消しても、その値は未変更のままです。 |
startMask | 初期ファイル選択マスク、* 、および ? ワイルドカード文字を使用することができます。 |
xLoc | ウィンドウの左下隅の X 位置。 |
yLoc | ウィンドウの左下隅の Y 位置。 |
title | ウィンドウ・タイトル・バーに表示されるタイトル。 ウィンドウには、表示されるタイトルのタイトル・バーがなければなりません。 $WinTitle スタイルを使用します。 |
style | ファイル・ダイアログ・ボックスのスタイル。 使用可能な値は次の通りです。
|
新規ファイルのオープン時、またはユーザーが作業を新規ファイルに保管できるようにする時に、 ユーザーがファイル名を入力するようにプロンプトを出したい時にはいつでも WinFileDialog を使用することができます。 startMask 引き数を設定することにより、WinFileDialog を 使用して特定のタイプのファイルを選択することができます (たとえば、knowledgebases の場合は *.kb を使用)。
ヒント: xLoc および yLoc パラメーターは Windows では無効です
VARIABLES fileName: STRING; ACTIONS IF WinFileDialog($Desktop,fileName,'*.TXT', 10,10, 'Select file to edit',0) > 0 THEN LoadAndEdit(fileName); END;
任意の有効なウィンドウ・ハンドル (ウィンドウまたはダイアログ・ボックス) の X 座標の 位置を照会します。 位置 00 は左上隅です。
FUNCTION WinGetXPos (VAL whdl: Window): Integer;
引き数名 | 説明 |
whdl | X 位置を照会するウィンドウ・ハンドル。 |
WinGetXPos はウィンドウまたはダイアログ・ボックスの左上隅を照会するので、 WinX とは異なります。一方 WinX はウィンドウ内の文字位置を戻します。 成功時に X 座標の位置が戻されます。
KNOWLEDGEBASE GetPos;
ROUTINES PROCEDURE Main;
PRIVATE
ROUTINES
PROCEDURE Main IS VARIABLES Handle : WINDOW; x,y : INTEGER; ACTIONS WinCreateScrollWindow($Desktop, Handle, $Nullhandler, 10,10,75,25, 'Test', $SystemMonospaced,10, $WinDefaultStyle); x := WinGetXPos(Handle); y := WinGetYPos(Handle); WinWriteLN(Handle, 'The upper left corner of the window is at (' & x & ', ' & y & ')'); WinWait(Handle); END;
WinGetYPos
任意の有効なウィンドウ・ハンドル (ウィンドウまたはダイアログ・ボックスのいずれか) の Y 座標の 位置を照会します。 位置 00 はウィンドウまたはダイアログ・ボックスの左上隅です。
FUNCTION WinGetYPos (VAL whdl: Window): Integer;
引き数名 | 説明 |
whdl | Y 位置を照会するウィンドウ・ハンドル。 |
WinGetYPos はウィンドウまたはダイアログ・ボックスの左上隅を照会するので、 WinY とは異なります。一方 WinY はウィンドウ内の文字位置を戻します。
WinGetXPos ステートメントについては、例を参照してください。
WinGetXPos
位置ポインターを新規の位置に移動します。
FUNCTION WinGoToXY(VAL whdl: WINDOW, VAL xLoc, yLoc:
INTEGER): INTEGER;
引き数名 | 説明 |
whdl | 操作が実行されるウィンドウのハンドル。 |
xLoc | 現行の位置ポインターの新規の X 位置。 |
yLoc | 現行の位置ポインターの新規の Y 位置。 |
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;
ウィンドウの高さを照会して、その高さを文字セルで表して戻します。
FUNCTION WinHeight(VAL whdl: WINDOW): INTEGER;
引き数名 | 説明 |
whdl | 操作が実行されるウィンドウのハンドル。 |
WinHeight は指定のウィンドウの現行のクライアント域の高さを戻します。
WinCreateMouseZone($Handle,1,1, WinWidth($Handle),WinHeight($Handle),1);
リソース・ファイルからメニューをロードして、それを特定のウィンドウに接続します。 (前に接続されているメニューがある場合はそれが置き換えられます。)
FUNCTION WinLoadMenuBar(VAL win: WINDOW, VAL resource : STRING ): INTEGER;
引き数名 | 説明 |
win | フォーム、総称、スクロール、またはハイパーテキスト |
resource | 標準形式のリソース文字列 |
メニューをフォームに接続するためのショートカットは、メニューに対して、同じ .df ファイル内の フォームと同じ名前を付けることです。 フォームがメニュー・スタイルである場合には、メニューは自動的に ロードされます。
KNOWLEDGEBASE loadmenu;
ROUTINES
PROCEDURE Main;
(* ***** PRIVATE ***** *)
PRIVATE
VARIABLES (* Global Variable to hold the Window handle of the window *) mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES
ACTIONS WinCreate($Desktop, mainWindow, $NullHandler, 10, 10, 80, 25, 'Test Window', $WinDefaultStyle); (*load the menu with id MAIN_MENU from the file loadmenu.df *) WinLoadMenuBar(mainWindow, 'loadmenu[MAIN_MENU]'); WinWait(mainWindow);
END;
.df ファイルからメニュー・リソースをロードして、それをウィンドウのポップアップ・メニュー として関連づけて、既存のポップアップ・メニューと置き換えます。 ポップアップ・メニューは自動的に 現れて、プラットフォーム用の正しいマウス・アクションを使用します。 ポップアップ・メニューから の選択は $MsgMenu によってレポートされます。
FUNCTION WinLoadPopupMenu( VAL whdl: WINDOW, VAL menu: STRING, ): INTEGER;
引き数名 | 説明 |
whdl | タイトル・テキストが変更されるダイアログ・ボックス・フォームまたは ウィンドウのハンドル。 |
menu | 作成されるメニューに合わせてメニューについて記述した仕様ファイルの完全修飾名。 |
WinLoadPopupMenu の使用時には、プラットフォームに対する正しいマウス・アクション によってメニューが自動的に現れます。 ユーザーがメニュー・アイテムを選択すると、$MsgMenu がウィンドウに送信されます。 これは古い関数 WinPopup とは異なります。 WinPopup では、 ユーザーは正しいマウス・アクションを理解し、WinPopup を呼び出してポップアップ・メニューを 表示する必要があります。 WinPopup は選択されたメニュー・アイテムの ID を戻します。
KNOWLEDGEBASE loadpop;
ROUTINES
PROCEDURE Main;
(* ***** PRIVATE ***** *)
PRIVATE
VARIABLES (* Global Variable to hold the Window handle of the window *) mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES
ACTIONS WinCreate($Desktop, mainWindow, $NullHandler, 10, 10, 80, 25, 'Test Window', $WinDefaultStyle); (* load the menu with id MAIN_MENU from the file loadmenu.df *) WinLoadPopupMenu(mainWindow, 'loadmenu[MAIN_MENU]'); WinWait(mainWindow);
END;
WinSetPopupMenu
リソース・ファイルからツールバーをロードして、それを特定のウィンドウに接続します。 (前に接続されているツールバーがある場合はそれが置き換えられます。)
FUNCTION WinLoadToolBar(VAL win: WINDOW, VAL resource : STRING ): INTEGER;
引き数名 | 説明 |
win | フォーム、総称、スクロール、またはハイパーテキスト |
resource | 標準形式のリソース文字列 |
ツールバーをフォームに接続するためのショートカットは、同じ .df ファイル内のフォームと同じ名前で ツールバーを指定することです。 フォームがツールバー・スタイルである場合には、ツールバーは 自動的にロードされます。
KNOWLEDGEBASE loadtool;
ROUTINES
PROCEDURE Main;
(* ***** PRIVATE ***** *)
PRIVATE
VARIABLES (* Global Variable to hold the Window handle of the window *) mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES
ACTIONS WinCreate($Desktop, mainWindow, $NullHandler, 10, 10, 80, 25, 'Test Window', $WinDefaultStyle); (* load the toolbar with id MAIN_TOOLBAR from the file loadtool.df *) WinLoadToolBar(mainWindow, 'loadtool[MAIN_TOOLBAR]'); WinWait(mainWindow);
END;
メニュー・アイテムのチェック状態を設定します。
FUNCTION WinMenuCheckItem(VAL whdl: WINDOW, VAL id: STRING, VAL newState: BOOLEAN): INTEGER;
FUNCTION WinMenuCheckItem(VAL whdl: WINDOW, VAL id: INTEGER, VAL newState: BOOLEAN): INTEGER;
引き数名 | 説明 |
whdl | メニュー・バーが付いているウィンドウのハンドル |
id | 設定されるメニュー・アイテムの ID |
newState | メニュー・アイテムの新規の状態 |
WinMenuCheckItem により、メニュー・アイテムにチェックしたりチェック解除する ことができます。 指定のオプションの現在のチェック状態は、WinMenuItemIsChecked を呼び出す時にテストすることができます。
注: メニュー・アイテムは 文字列または整数で識別することができます
WinMenuCheckItem($Handle,204,TRUE);
メニュー・アイテムの使用可能または使用禁止状態を設定します。
FUNCTION WinMenuEnableItem(VAL whdl: WINDOW, VAL id: STRING, VAL newState: BOOLEAN): INTEGER;
FUNCTION WinMenuEnableItem(VAL whdl: WINDOW, VAL id: INTEGER, VAL newState: BOOLEAN): INTEGER;
引き数名 | 説明 |
whdl | メニュー・バーが付いているウィンドウのハンドル |
id | 設定されるメニュー・アイテムの ID |
newState | メニュー・アイテムの新規の状態 |
WinMenuEnableItem を使用して、メニュー・アイテムを使用可能または使用禁止にすることができます。 使用禁止にしたアイテムを使用することはできません。 $SysMenuCloseItem 定数を使用して、 ウィンドウのシステム・メニュー上の「クローズ」アイテムを次の方法で使用可能または使用禁止に することができます:
(* This line enables the Close item *) WinMenuEnableItem (myWindow, $SysMenuCloseItem, TRUE); (* This line disables the Close item *) WinMenuEnableItem (myWindow, $SysMenuCloseItem, FALSE);
注: メニュー・アイテムは 文字列または整数で識別することができます
WinMenuEnableItem($Handle,204,TRUE);
メニュー・アイテムが現在チェックされているかどうかを調べるためにテストします。
FUNCTION WinMenuItemIsChecked(VAL whdl: WINDOW, VAL id: STRING): BOOLEAN;
FUNCTION WinMenuItemIsChecked(VAL whdl: WINDOW, VAL id: INTEGER): BOOLEAN;
引き数名 | 説明 |
whdl | メニュー・バーが付いているウィンドウのハンドル |
id | 設定されるメニュー・アイテムの ID |
TSD Script により、選択アイテムのメニュー・バーをセットアップすることができます。 WinMenuItemIsChecked を呼び出して次の 2 つのアイテムを渡すことによって、 指定のメニュー・アイテムが選択されているかどうかを検査することができます:
注: メニュー・アイテムは 文字列または整数で識別することができます。
IF WinMenuItemIsChecked($Handle,204) THEN CarryOutAction; END;
メッセージ・ボックスを表示して、ユーザーの選択を戻します。 (メッセージ・テキストの長さは 512 文字までに制限されています。)
FUNCTION WinMessageBox(VAL whdlParent: WINDOW, VAL title: STRING, VAL style: INTEGER, VAL message: STRING): INTEGER;
イベント・ハンドラーおよび DDE
$MsgDDEInitiate メッセージを処理する時は、WinWait を使用しないで ください。 $MsgDDEInitiate はアプリケーションにメッセージを同報通信して、応答が戻されるまでメッセージ待ち行列をロックします。 一方、 WinWait ステートメントは、やはりメッセージ待ち行列からの応答を待機するイベント を開始します。 WinWait は、他のアプリケーションがメッセージ待ち行列にメッセージ を送信するのを防ぎます。 この結果はデッドロックとなり、実際にユーザー・インターフェースを ロックします。
引き数名 | 説明 |
whdlParent | メッセージ・ボックスの親。 これが $Desktop である場合には、メッセージ・ボックスはモーダルとはなりません。 |
title | ウィンドウ・タイトル・バーに表示されるタイトル。 ウィンドウには、タイトルを表示するためのタイトル・バーがなければなりません。 $WinTitle スタイルを使用します。 |
style | メッセージ・ボックスのスタイル。これは、メッセージ・ボックスの外観および動作をコントロールするビット・マスクです。 スタイル・オプションの説明については、「注」セクションを参照してください。 |
messageText | 表示するメッセージのテキスト。ワード・ラップと改行がサポートされています。 (512 文字までに制限されています。) |
メッセージ・ボックスの説明
メッセージ・ボックスは、WinMessageBox を使用して作成する単純なダイアログ・ボックスです。 .df ファイルを作成したり、Interface Designer を使用する必要はありません。
WinMessageBox を使用する時には、タイトル、テキスト・ストリング (メッセージ) および 3 個までのボタンを追加することができます。 他のテキスト・ボックスまたはコントロール を追加することはできません。
メッセージ・ボックスのカスタマイズ
メッセージ・ボックスのスタイルは以下の設定値の組み合わせです:
スタイル名 | 説明 |
ボタン・スタイル | メッセージ・ボックス中に現れるボタンの選択を示します。 |
アイコン・スタイル | メッセージ・ボックス中に表示されるアイコンのタイプを示します。 |
デフォルト・ボタン | どのボタンをデフォルトのボタンとするかを示します。 |
モード | メッセージ・ボックスの様式を示します。 これにより、ユーザーがメッセージ・ボックスに応答する前に何かを実行することができるかどうかが決まります。 |
タイトル | OS/2 では、ウィンドウにタイトル・バーを追加したい場合には、 $WinTitle 定数を指定しなければなりません。 Windows では、すべてのウィンドウに自動的にタイトル・バーが付きます。 |
メッセージ・ボックスのスタイルを作成するためには、以下のボタン・スタイルの 1 つを選択してください:
以下のアイコン・スタイルから複数を選択するか、あるいは何も選択しないでください:
以下のデフォルト・ボタンから 1 つを選択するか、あるいは何も選択しないでください:
以下のモードから 1 つを選択するか、あるいは何も選択しないでください:
メッセージ・ボックスに「取消」ボタンがある場合には、Esc キーでメッセージ・ボックスがクローズし、 WinMessageBox が $MBResultCancel を戻します。 「取消」ボタンがない場合には、Esc キー は効果がありません。 $MBResultError は内部エラー条件の場合にのみ戻されます。
メッセージ・ボックスは、メッセージ・テキストおよびタイトルの長さに基づいて、 自動的にそのサイズが決定されます。 メッセージ・ボックスは、画面の高さの 2/3 までとすることができます。
WinMessageBox ($Desktop,'Error',$MBOK+$MBIconError, 'Unable to open file');
スタイル・フラグのリストについては、メッセージ・ ボックス・スタイルを参照してください
引き数として渡されたウィンドウの親。
FUNCTION WinParent(VAL whdl: WINDOW): WINDOW;
引き数名 | 説明 |
whdl | 親が要求されたウィンドウのハンドル。 |
VARIABLES parent: WINDOW; ACTIONS parent := WinParent($Handle);
引き数として渡されたウィンドウの親を戻します。
ウィンドウの現在のドロー・カラーを設定します。 ドロー・カラーにより、テキストのカラーと 背景のカラーが決まります。
FUNCTION WinSetColor(VAL whdl: WINDOW, VAL foreGround: INTEGER; VAL backGround: INTEGER): INTEGER;
引き数名 | 説明 |
whdl | 操作が実行されるウィンドウのハンドル。 |
foreGround | 新規の前景のドロー・カラー。カラー定数の完全なリストについては、「注」セクションを参照してください。 |
backGround | 新規の背景のドロー・カラー。 カラー定数の完全なリストについては、「注」セクションを参照してください。 |
事前定義のカラー定数
以下の事前定義のカラー定数を使用することができます:
注: $WinDefaultColor は、 ウィンドウについて、システムのデフォルトの前景または背景を選択します
$WinTransparent により、すべてのテキスト出力操作は、背景色として $WinOpaque を指定した WinSetColor を呼び出すまでは、透過テキストを書き込みます。 透過テキストがデフォルトです。
$WinOpaque により、すべてのテキスト出力操作が不透明テキストを書き込みます。 すなわち、テキストを取り囲む長方形が消去されて現行の背景色となります。 $WinOpaque は、背景色として $WinTransparent を指定した WinSetColor を呼び出すまでは、 有効のままとなります。
オペレーティング・システムによって定義されたカラーへのアクセス
以下の事前定義定数を使用して、オペレーティング・システムによって定義された ユーザーによる構成可能なカラーにアクセスしてください:
WHEN $Event IS $MsgPaint THEN WinSetColor($Handle,$WinWhite,$WinBlack); WinClear( $Handle ); END;
Tivoli Service Desk 6.0 Developer's Toolkit Script 言語解説書