Tivoli Service Desk 6.0 Developer's Toolkit Script 言語解説書
------------------------------------------------------------------------
ハンドルをデスクトップ・ウィンドウに戻します。この値は現行セッションの間は永続
します。 しかし、この値は永久に保管されるわけではありません。
次回にプログラムを
実行する時には、この定数は新しい値をもちます。
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 イベントの発生時にユーザーによって押されるキーを示します。
スクリプトは、カーソル制御キー、変更キー
(たとえば、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 DlgBox(VAL parent: WINDOW, VAL dialogFile: STRING,
VAL EventHandler: EVENT,
REF returnRec: RECORD of ANY): INTEGER;
注意: $MsgDDEInitiate メッセージを処理している時には、 DlgBox は使用しないようにしてください。使用すると、
$MsgDDEInitiate はアプリケーションにメッセージを同報通信して、
応答が戻されるまでメッセージ待ち行列をロックします
その間、DlgBox ステートメントは、これまたメッセージ待ち行列からの応答を待機するイベント・ハンドラーを始動します。
DlgBox は、他のアプリケーションがメッセージ待ち行列にメッセージを送信する妨げとなります。この結果はデッドロックとなり、
実際にはユーザー・インターフェースをロックしてしまいます。
引き数名 | 説明 |
dialogFile | ダイアログ・ボックス仕様ファイルのファイル名。次の検索が実行されます。
1. ファイルに指定された明示的なディレクトリーが含まれる場合には、そのディレクトリーの位置だけが検索されます。 |
このストラテジーを使用してファイルを見つけることができなかった場合に、 DlgBox は、ファイルが見つからなかったことを示すエラー・メッセージを戻してきます。
任意選択で、表示するダイアログ・ボックスの名前を指定することができます。フォーム名は、 fileName[formName] の形式で指定されます。
ウィンドウまたはダイアログ・ボックスで生成されたイベントを処理するイベント・ハンドラー。 イベント処理が必要でない場合には、
キーワード $NullHandler を使用することができます。returnRec 戻り値。ユーザーがダイアログ・ボックスを受け入れた場合には、
そのダイアログ・ボックスに含まれているデータがこのレコードに割り当てられます。この割り当ては、レコード定義のアイテム名と一致した
コントロール名をもつコントロールに基づいて行われます。ダイアログ・ボックス・ウィンドウが他の手段によって破棄された場合には、
値は変更されません。イベント・ハンドラーが存在している場合には、このレコードはそのイベント・ハンドラーに対するインスタンス・データ・パラメーターと同じタイプであることが必要です。
受信する最初のメッセージ
ダイアログ・ボックスの作成時には、以下のメッセージが
示されている順序で受信されます。
* $MsgEnterField は、タブ順序に定義された最初のコントロールに
カーソルを入れます。
* $MsgInitialize は、データを含むコントロールを初期化します。ダイアログ・ボックス内の各コントロールごとに、別個の $MsgInitialize
メッセージが受信されます。
* $MsgCreate は、実際のダイアログ・ボックスを作成します。
空白のトリミング
コントロール内のすべてのスペースが空であった場合には、空白がダイアログ・ボックスからトリムされます。これは、ユーザーが
空のスペースのストリングをコントロールに入力した場合、あるいはダイアログ・ボックス仕様ファイルに空ストリングが含まれている場合に起こる
ことがあります。いずれの場合にも、空のコントロールの値が要求されると、$Unknown が戻されます。
モーダル・ダイアログ・ボックスを作成するには、それを DlgBox ステートメントを使用して作成してください。モーダル・ダイアログ・ボックスは、
アプリケーションのメインウィンドウによって所有されます。モーダル・ダイアログ・ボックスに送られた呼び出しは、ダイアログ・ボックスが破棄されるまで
戻りません。親がデスクトップではなく、所有者が指定されない場合には、親ウィンドウは使用不可とされます。
モーダル・ダイアログ・ボックスがアクティブである間は、エンド・ユーザーはその親ウィンドウまたは他のいずれかの子ウィンドウと
対話できないことがあります。
モードレス (つまり、非モーダル) ダイアログ・ボックスを作成するには、それを DlgCreate ステートメントを使用して作成してください。モードレス・ダイアログ・ボックスに送られた呼び出しは、
即時に戻ります。このウィンドウは、明示的に破棄されるまで存在します。
このダイアログ・ボックスでは、ユーザーがデータを入力するためのテンプレートが提供されます。各種のテキスト・ボックスおよびコントロールがこの
ダイアログ・ボックス仕様ファイルから作成されます。各テキスト・ボックスはデータベースのフィールドと関連し、固有の名前をもっています。1 つまたは複数の
テキスト・ボックスを、そのダイアログ・ボックスのためのインスタンス・データのフィールドに結合することができます。ダイアログ・ボックスのテキスト・ボックスは、同じ名前の
インスタンス・データ・フィールドに結合されます。
ダイアログ・ボックスのテキスト・ボックスがユーザーかアプリケーションのいずれかによって更新された場合には、結合されたインスタンス・データ・フィールドが更新されます。
システムでは、ダイアログ・ボックス・データを強制的にインスタンス・データと同じタイプにするための広範囲のタイプ変換が実行されます。
イベント・ハンドラーが存在している場合には、アプリケーションにはユーザーのアクションが通知され、そのアクションに応答してそれを更新するための機会
が与えられます。
とくに注記されない限り、すべてのダイアログ・ボックス・メッセージの最初の 2 つのイベント・パラメーターは次のようになります。
* イベント・パラメーター 1 (整数) は、選択されたコントロールの ID です。それにアクセスするために、別名 $FieldID が使用されることがあります。
* イベント・パラメーター 2 (ストリング) は、選択されたコントロールの名前です。それにアクセスするために、別名 $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; (* ダイアログ・ボックスが作成された時に一度だけ送信されます *)
(* 疑似パラメーター $FormFile および $FormName を含みます *)
ELSWHEN $MsgDestroy THEN
NOTHING; (* ダイアログ・ボックスが破棄されそうな時に一度だけ送信されます *)
ELSWHEN $MsgHelp THEN
NOTHING; (* ヘルプ・キーまたは「ヘルプ」ボタン *)(* が押され、定義されたヘルプがない時に送信されます *)
(* 現行フィールドまたはフォーム用 *)
ELSWHEN $MsgEnterField THEN
NOTHING; (* 新規フィールドがアクティブ・フィールドに *)
(* なるたびに送信されます。このアクションは 0 を戻す *)
(* ことによって拒否されることがあります *)
ELSWHEN $MsgExitField THEN
NOTHING; (* フィールドが非アクティブになりそうになるたびに *)
(* 送信されます *)
(* このアクションは 0 を戻すことによって拒否されることがあります *)
ELSWHEN $MsgAccept THEN
NOTHING; (* ユーザーがダイアログ・ボックスを受け入れた時に *)
(* 送信されます。この受け入れアクションは 0 を戻すことに *)
(* よって拒否されることがあります *)
ELSWHEN $MsgCancel THEN
NOTHING; (* ユーザーがダイアログ・ボックスを取り消した時に送信されます。*)(* この取り消しアクションは 0 を戻すことによって *)
(* 拒否されることがあります *)
ELSWHEN $MsgSelect THEN
NOTHING;(* フィールド値の変更が検出された時に *)
(* 送信されます。*)
(* 複数行編集および入力フィールドでユーザーが行った変更は *)
(* そのフィールドが終了された時に検出されます。*)(* その他の変更は*)
(* 即時に検出されます。 *)
(* 0 を戻して変更を拒否します。*)
(* インスタンス・データが新規フィールド値に *)
(* 更新されます。*)
(* イベント・パラメーター 3 には古いフィールド値が含まれ *)(* イベント・パラメーター 4 には *)
(* 新規フィールド値が入っています *)
ELSWHEN $MsgMandField THEN
NOTHING; (* ユーザーがダイアログ・ボックスを受け入れた時に送信され、*)(* 必須フィールドに値は含まれ*)
(* ません。システムのデフォルト・アクションは *)
(* メッセージを表示し、受け入れアクションを打ち切る *)
(* ことです。イベント・ハンドラーが 1 (デフォルト) を *)
(* 戻さなければ、メッセージは表示されません。*)
(* 0 が戻され場合には、*)
(* 受け入れアクションが処理されて、 *)
(* $MsgAccept が送信されます *)
ELSWHEN $MsgUser THEN
NOTHING; (* アプリケーションによって定義された任意のメッセージ *)
END;
END (* Dlg Event *);
PROCEDURE DialogExample IS
VARIABLES
dlghdl: WINDOW;
fields: DLGDATA;
ACTIONS
DlgBox ($Desktop,'example[dialog1]',
DlgEvent{fields},fields);
END (* ダイアログ・ボックスの例 *);
戻りコード | 説明 |
1 | 正常終了。 |
0 | ユーザーによる中断。ユーザーがウィンドウをクローズしたか、操作を打ち切りました。通常は、これは Esc キーまたは「取消」ボタンを押して行なわれるか、あるいはシステム・メニューからウィンドウをクローズすることによって行なわれます。 |
-1 | このウィンドウ・ハンドルは有効なウィンドウを参照していません。 ウィンドウがもはや存在していないか、あるいはこのウィンドウがこのコマンドをサポートしていません。 |
-2 | 不明の値 |
-3 | メモリー不足 |
-4 | 作成しない。オペレーティング・システムが要求されたオブジェクトを作成できませんでした。 考えられる 1 つの理由は、親ウィンドウ・ハンドルがもはや存在していないウィンドウを参照することです。 |
-7 | ダイアログ・ボックスの名前付きコントロールが、ウィンドウ・ハンドルによって参照されたダイアログ・ボックスの中に見つかりませんでした。 |
-8 | 要求されたダイアログ・ボックス・コマンドは、指定されたコントロールのタイプでは実行されない可能性があります。 |
-10 | オペレーティング・システム・レベルでの呼び出しが失敗しました。 これは、不適切な構成またはリソースに原因があると考えられます。 |
-12 | SendMessage または PostMessage ステートメントが、 NETx ステートメントではサポートされていないメッセージで呼び出されました。メッセージは、サポートされている $MsgNetx メッセージの 1 つであるか、NETx ステートメントで使用するために特別に定義されたユーザー定義の $MsgUser + n メッセージでなければなりません。 |
ダイアログ・ボックス仕様ファイルの作成については、Tivoli Service Desk 6.0 Developer's Toolkit Interface Designer の手引き を参照してください。
------------------------------------------------------------------------
ダイアログ・ボックス仕様ファイルからモードレス・ダイアログ・ボックスを作成します。
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 は、タブ順序に定義された最初のコントロールにカーソルを入れます。
2. $MsgInitialize は、データを含むコントロールを初期化します。ダイアログ・ボックス内の各コントロールごとに、別個の $MsgInitialize
メッセージが受信されます。
3. $MsgCreate は、実際のダイアログ・ボックスを作成します。
モーダル・ダイアログ・ボックスを作成するには、それを DlgBox ステートメントを使用して作成してください。モーダル・ダイアログ・ボックスは、
アプリケーションのメインウィンドウによって所有されます。モーダル・ダイアログ・ボックスに送られた呼び出しは、ダイアログ・ボックスが破棄されるまで
戻りません。親がデスクトップではなく、所有者が指定されない場合には、親ウィンドウは使用不可とされます。
モーダル・ダイアログ・ボックスがアクティブである間は、エンド・ユーザーはその親ウィンドウまたは他のいずれかの子ウィンドウと
対話できないことがあります。
モードレス (つまり、非モーダル) ダイアログ・ボックスを作成するには、それを DlgCreate ステートメントを使用して作成してください。モードレス・ダイアログ・ボックスに送られた呼び出しは、
即時に戻ります。このウィンドウは、明示的に破棄されるまで存在します。
このダイアログ・ボックスでは、ユーザーがデータを入力するためのテンプレートが提供されます。テキスト・ボックス
などの各種のコントロールがダイアログ・ボックス仕様ファイルの中で定義されます。コントロールには固有の名前があります。これらの 1 つまたは複数をデータベース・フィールドに結合することが
できます。データベースでは、ダイアログ・ボックスのためのインスタンス・データが提供されます。結合されたコントロールの .df 名は、インスタンス・データ・フィールドの名前と同じであること
が必要です。
ダイアログ・ボックスのテキスト・ボックスがユーザーかアプリケーションのいずれかによって更新されるたびに、結合されたインスタンス・データ・フィールドが更新されます。
システムでは、ダイアログ・ボックス・データを強制的にインスタンス・データと同じタイプにするためにタイプの範囲で変換が
実行されます。イベント・ハンドラーが存在している場合には、アプリケーションにはユーザーのアクションが通知され、そのアクションに応答してそれを更新するための
機会が与えられます。
コントロール内のすべてのスペースが空であった場合には、空白がダイアログ・ボックスからトリムされます。これは、ユーザーが
空のスペースのストリングをコントロールに入力した場合、あるいはダイアログ・ボックス仕様ファイルにコントロールのための空ストリングが含まれている場合に起こることがあります。
いずれの場合にも、空のコントロールの値が要求されると、$Unknown が戻されます。
とくに注記されない限り、すべてのダイアログ・ボックス・メッセージの最初の 2 つのイベント・パラメーターは次のようになります。
ダイアログ・ボックス仕様ファイルの作成については、
Tivoli Service Desk 6.0 Developer's Toolkit Interface Designer の手引き を参照してください。
------------------------------------------------------------------------
サブフォームをフォーム・ファイルからロードし、それを既存のダイアログ・フォームのコンテキストの中に表示します。
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 | 新規サブフォームの左上隅で使用される x 位置。この座標は、親ダイアログ・フォームの左上隅と相対関係にあります。 |
yPos | 新規サブフォームの左上隅で使用される y 位置。この座標は、親ダイアログ・フォームの左上隅と相対関係にあります。 |
WHEN $Event IS $MsgCreate THEN
DlgCreateSubForm($Handle, instanceData.theSubForm, 'screens[theSubForm]', SubFormHandler, 3, 50);
END;
ダイアログ・ボックス仕様ファイルの作成については、Tivoli Service Desk 6.0 Developer's Toolkit Interface Designer の手引き を参照してください
------------------------------------------------------------------------
既存のページを既存のフォーム上のノートブックから除去します。
FUNCTION DlgDeletePage ( VAL PARENT : WINDOW,
VAL NOTEBOOKID : STRING,
VAL PAGEID : STRING ) : INTEGER;
引き数の注 | 引き数名の説明 |
親 | ノートブックを含むフォームのためのウィンドウ・ハンドル。 |
NotebookID | ノートブックの ID 名 (.df 仕様からのもの) |
PageID | 除去するページの ID 名 (.df 仕様からのもの) |
KNOWLEDGEBASE dlgpage;
ROUTINES
PROCEDURE Main;
(* ***** PRIVATE ***** *)
PRIVATE
VARIABLES
(* ダイアログ・ボックスのウィンドウ・ハンドルを保留するグローバル変数 *)
mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES
ACTIONS
(* dlgpage.df からのフォーム PAGE_MAIN を使用してダイアログを作成します *)
(* PAGE_MAIN にはそのフォームとしてノートブック PAGE_NOTEBOOK を含むサブフォームがあります *)
(* PAGE_NOTEBOOK には現在 2 つのタブがあります *)
DlgCreate($Desktop, mainWindow, 'dlgpage[PAGE_MAIN]', $NullHandler);
(* 2 ページ目をノートブックから除去します。*)
(* このページには 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 | コマンドによってアドレス指定されたダイアログ・ボックス内のコントロールの名前。これは、Interface Designer またはダイアログ・ボックス仕様ファイルの DEFINE ステートメントの中で指定されていることがあります。この名前は大文字小文字を区別しません。 |
fieldValue | 照会されたコントロールの名前を戻します。データはパラメーターのタイプに変換され、結果の値がそのパラメーターに割り当てられます。一部の変換では意味のある結果が作り出されないことがあります。コントロールが SQLManage コントロールまたはリスト・ボックスであった場合には、追加のパラメーターはレコードまたは整数のリストとなることがあります。アクションは、レコードの各コントロールごとにコントロール別に順に実行されます。コントロールが、リスト・ボックスおよびテーブルのように複数の選択が可能なのもであり、追加のパラメーターが単一の変数であった場合には、最初のアイテムが戻されます。それが変数のリストであった場合には、すべてのアイテムが戻されます。 |
コントロール内のすべてのスペースが空であった場合には、空白がダイアログ・ボックスからトリムされます。これは、ユーザーが
空のスペースのストリングをコントロールに入力した場合、あるいはダイアログ・ボックス仕様ファイルにコントロールのための空ストリングが含まれている場合に起こることがあります。いずれの場合にも、
空のコントロールの値が要求されると、 $Unknown が戻されます。
KNOWLEDGEBASE DlgField;
TYPES
DLGDATA IS RECORD
sampleField: INTEGER;
END;
SQLDATA IS RECORD
firstName: STRING;
lastName: STRING;
END;
(* ******* PRIVATE ******** *)
PRIVATE
ROUTINES
(* ******** ダイアログ・ボックス EVENT HANDLER ******** *)
EVENT DlgEvent( REF fields: DLGDATA ) IS
VARIABLES
names: SQLDATA;
ACTIONS
(* すべてのダイアログ・ボックス・メッセージに疑似パラメーター
$FieldID *)
(* および $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 | コマンドによってアドレス指定されたダイアログ・ボックス内のコントロールの名前。これは、Interface Designer またはダイアログ・ボックス仕様ファイルの DEFINE ステートメントの中で指定されていることがあります。この名前は大文字小文字を区別しません。 |
selectedText | テキスト・ボックスの選択されたテキストがこの引き数で戻されます。テキストが選択されていない場合には、0 の長さのストリングが戻されます。エラーがある場合には、unknown ストリングが戻されます。 |
KNOWLEDGEBASE dlgform;
ROUTINES
PROCEDURE Main;
(* ***** PRIVATE ***** *)
PRIVATE
VARIABLES
(* ダイアログ・ボックスのウィンドウ・ハンドルを保留するグローバル変数 *)
mainWindow : WINDOW;
ROUTINES
EVENT MainEvent is FORWARD;
PROCEDURE Main IS
ACTIONS
(* dlgform.df からの FORM_DLG を使用してダイアログ・ボックスを作成します *)
(* FORM_DLG には CONTROl_TEXT の ID をもつ 1 つの入力フィールドと *)
(* BUTTON_TEXT の ID をもつ 1 つのボタンがあります *)
DlgCreate($Desktop, mainWindow, 'dlgform[FORM_DLG]', MainEvent);
WinWait(mainWindow);
END;
EVENT MainEvent IS
VARIABLES
selString : STRING;
ACTIONS
(* このボタンが押された時に、入力フィールドから選択されたテキストが *)
(* メッセージ・ボックスに表示されます *)
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;
引き数の注 | 引き数名の説明 |
Form | 新規ページが挿入されるフォーム。 |
NotebookId | ページが挿入されるノートブックの ID。 |
PageId | 挿入されるページの ID。 |
FormSpec | フォーム "FILE[FORM_NAME]' 内のサブフォームの仕様。 |
TabName | 挿入されるページタブ・テキスト。 |
Position | 他のタブの中で挿入されるタブの位置。 |
KNOWLEDGEBASE dlgpage;
ROUTINES
PROCEDURE Main;
(* ***** PRIVATE ***** *)
PRIVATE
VARIABLES
(* ダイアログ・ボックスのウィンドウ・ハンドルを保留するグローバル変数 *)
mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES
ACTIONS
(* dlgpage.df からのフォーム PAGE_MAIN を使用してダイアログを作成します *)
(* PAGE_MAIN にはそのフォームとしてノートブック PAGE_NOTEBOOK を含むサブフォームがあります *)
(* PAGE_NOTEBOOK には現在 2 つのタブがあります *)
DlgCreate($Desktop, mainWindow, 'dlgpage[PAGE_MAIN]', $NullHandler);
(* dlgpage.df からのフォーム FORM_TAB3 を ID PAGE_NOTEBOOK により *)
(* 指定されたノートブックの最後のページの後に挿入します。タブの *)
(* 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 | コマンドによってアドレス指定されたダイアログ・ボックス内のコントロールの名前。これは、Interface Designer またはダイアログ・ボックス仕様ファイルの DEFINE ステートメントの中で指定されていることがあります。この名前は大文字小文字を区別しません。 |
insertString | コントロールのカーソル位置で挿入するストリング。選択されたテキストが挿入されたテキストで置き換えられます。 |
選択されたテキストが挿入されたテキストで置き換えられます。
KNOWLEDGEBASE DlgIns_text;
TYPES
DLGDATA IS RECORD
sampleField: INTEGER;
END;
(* ******* PRIVATE ******** *)
PRIVATE
ROUTINES
(* ******** ダイアログ・ボックス EVENT HANDLER ******** *)
EVENT DlgEvent( REF fields: DLGDATA ) IS
VARIABLES
insertString: STRING;
ACTIONS
(* すべてのダイアログ・ボックス・メッセージに疑似パラメーター $FieldID *)
(* および $FieldName があります *)
WHEN $Event IS $MsgChar THEN
WHEN $KeyCode IS $KeyFn2 THEN
(* 機能キー 2 を探します *)
(* 挿入するテキストを求めるプロンプトをユーザーに出します *)
IF WinEditField( $Desktop, insertString, 0, 0, 30,
'Enter insert text',
$WinAutoPos + $WinBorder
+ $WinTitle ) > 0
THEN
(* フィールドは複数行エディター、入力フィールド、またはコンボ・ボックスでなければなりません *)
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 DlgIsItemEnabled (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);
(* ボタンを使用可能にし、ボタンの状況を検査し、
結果を表示します *)
DlgSetEnabled(Handle, 'test_button', TRUE);
DlgIsItemEnabled(Handle, 'test_button',
enabled);
WinMessageBox(Handle, 'Button Status', $MBOK,
enabled);
(* ボタンを使用不可にし、ボタンの状況を検査し、
結果を表示します *)
DlgSetEnabled(Handle, 'test_button', FALSE);
DlgIsItemEnabled(Handle, 'test_button',
enabled);
WinMessageBox(Handle, 'Button Status', $MBOK,
enabled);
WinWait(Handle);
END;
------------------------------------------------------------------------
すべてのテキスト・ボックス、SQL 管理、またはテーブルのコントロールからのすべての値を消去します。
FUNCTION DlgListBoxClear(VAL whdlDialog: WINDOW,
VAL fieldName: STRING): INTEGER;
引き数の注 | 引き数名の説明 |
whdlDialog | 運用されるコントロールを含むダイアログ・ボックスのウィンドウ・ハンドル。コマンドがコントロールを含むイベント・ハンドラーから出された場合には、疑似パラメーター $Handle を使用することができます。 |
fieldName | アドレス指定されるダイアログ・ボックス内のコントロール名のリスト。コントロール名は、Interface Designer またはダイアログ・ボックス仕様ファイルの 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
(* ******** ダイアログ・ボックス 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;
------------------------------------------------------------------------
選択された値をすべてのテキスト・ボックス、SQL 管理、またはテーブルのコントロールから削除します。
FUNCTION DlgListBoxDelete(VAL whdlDialog: WINDOW,
VAL fieldName: STRING): INTEGER;
引き数の注 | 引き数名の説明 |
whdlDialog | 運用されるコントロールを含むダイアログ・ボックスのウィンドウ・ハンドル。コマンドがコントロールを含むイベント・ハンドラーから出された場合には、疑似パラメーター $Handle を使用することができます。 |
fieldName | コマンドによってアドレス指定されたダイアログ・ボックス内のコントロールの名前。これは、Interface Designer またはダイアログ・ボックス仕様ファイルの DEFINE ステートメントの中で指定されていることがあります。この名前は大文字小文字を区別しません。 |
リスト・ボックス内の選択された要素を削除すると、$MsgSelect (または $MsgInitialize) が
$Unknown の値とともに送信されます。前に選択された値はもはや存在していないので、 このメッセージの拒否は効果がありません
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
(* ******** ダイアログ・ボックス 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;
------------------------------------------------------------------------
リスト・ボックス、SQL 管理、またはテーブルのコントロールの選択されたアイテムの索引を照会します。
FUNCTION DlgListBoxIndex(VAL whdlDialog : WINDOW,
VAL fieldName : STRING
): INTEGER;
引き数の注 | 引き数名の説明 |
whdlDialog | 運用されるコントロールを含むダイアログ・ボックスのウィンドウ・ハンドル。コマンドがコントロールを含むイベント・ハンドラーから出された場合には、疑似パラメーター $Handle を使用することができます。 |
fieldName | コマンドによってアドレス指定されたダイアログ・ボックス内のコントロールの名前。これは、Interface Designer またはダイアログ・ボックス仕様ファイルの 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
(* ******** ダイアログ・ボックス 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;
------------------------------------------------------------------------
値をテキスト・ボックス、SQL 管理、またはテーブルのコントロールに挿入します。
FUNCTION DlgListBoxInsert(VAL whdlDialog: WINDOW,
VAL fieldName: STRING,
VAL newValues: LIST OF ANY): INTEGER;
引き数の注 | 引き数名の説明 |
whdlDialog | 運用されるコントロールを含むダイアログ・ボックスのウィンドウ・ハンドル。コマンドがコントロールを含むイベント・ハンドラーから出された場合には、疑似パラメーター $Handle を使用することができます。 |
fieldName | コマンドによってアドレス指定されたダイアログ・ボックス内のコントロールの名前。これは、Interface Designer またはダイアログ・ボックス仕様ファイルの 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
(* ******** ダイアログ・ボックス 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;
------------------------------------------------------------------------
SQL 管理またはテーブルのコントロールの選択された値を更新します。
FUNCTION DlgListBoxUpdate(VAL whdlDialog: WINDOW,
VAL fieldName: STRING, VAL
updateValue: ANY): INTEGER;
引き数の注 | 引き数名の説明 |
whdlDialog | 運用されるコントロールを含むダイアログ・ボックスのウィンドウ・ハンドル。コマンドがコントロールを含むイベント・ハンドラーから出された場合には、疑似パラメーター $Handle を使用することができます。 |
fieldName | コマンドによってアドレス指定されたダイアログ・ボックス内のコントロールの名前。これは、Interface Designer またはダイアログ・ボックス仕様ファイルの DEFINE ステートメントの中で指定されていることがあります。この名前は大文字小文字を区別しません。 |
updateValue | SQL 管理 またはテーブルのコントロール内の選択されたレコードまたはストリングのリストがこのパラメーターの値によって置き換えられます。レコード・フィールドが列名と一致します。レコード・フィールドと一致しない列は、いずれも空のままとされます。レコードが選択されない場合には、「フィールドが見つからない」エラーが戻されます。 |
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
(* ******** ダイアログ・ボックス 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
(* ウィンドウのウィンドウ・ハンドルを保留するグローバル変数 *) mainWindow : WINDOW;
ROUTINES
PROCEDURE Main IS
VARIABLES
ACTIONS
DlgCreate($Desktop, mainWindow, 'dlgsub[FORM_MAIN]', $NullHandler);
(* FORM_NEW を dlgsub.df からサブフォームのコントロールにロードします *)
(* 現行フォーム上の CONTROL_SUBFORM *)
DlgLoadSubForm(mainWindow, 'CONTROL_SUBFORM', 'dlgsub[FORM_NEW]');
WinWait(mainWindow);
END;
------------------------------------------------------------------------
SQL 管理 またはテーブルのコントロールの宣言された列を照会します。
FUNCTION DlgQueryColumnNames(VAL whdlDialog: WINDOW,
VAL fieldName: STRING,
REF columnNames LIST OF STRING): INTEGER;
引き数の注 | 引き数名の説明 |
whdlDialog | 運用されるコントロールを含むダイアログ・ボックスのウィンドウ・ハンドル。コマンドがコントロールを含むイベント・ハンドラーから出された場合には、疑似パラメーター $Handle を使用することができます。 |
fieldName | コマンドによってアドレス指定されたダイアログ・ボックス内のコントロールの名前。これは、Interface Designer またはダイアログ・ボックス仕様ファイルの DEFINE ステートメントの中で指定されていることがあります。この名前は大文字小文字を区別しません。 |
columnName | SQL 管理 またはテーブルのコントロールについて宣言された列名が戻されるストリングのリスト。列名は、それらが宣言された順に戻されます。 |
この例に示されているように、WinWriteLN がストリングのリスト全体を順次に書き込みます。
KNOWLEDGEBASE DlgCols;
TYPES
DLGDATA IS RECORD
sampleField: INTEGER;
END;
SQLDATA IS RECORD
firstName: STRING;
lastName: STRING;
END;
(* ******* PRIVATE *********)
PRIVATE
ROUTINES
(* ******** ダイアログ・ボックス EVENT HANDLER *********)
EVENT DlgEvent( REF fields: DLGDATA ) IS
VARIABLES
columnNames: LIST OF STRING;
whdl: WINDOW;
ACTIONS
(* すべてのダイアログ・ボックス・メッセージに疑似パラメーター $FieldID
および $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;
------------------------------------------------------------------------
リスト・ボックス、コンボ・ボックス、テーブルのコントロール、または SQL 管理 に現在含まれているアイテムの数を照会します。
FUNCTION DlgQueryItemCount (VAL whdlDialog: WINDOW,
VAL fieldName: STRING,
REF itemCount: INTEGER): Integer;
引き数の注 | 引き数名の説明 |
whdlDialog | ダイアログ・ボックスのウィンドウ・ハンドル。 |
fieldName | そのアイテム・カウントを照会するコントロールのフィールド名。 |
itemCount | この関数の呼び出しが行われた後に、itemCount にはコントロールによって取り入れられたアイテムの数が保留されます。 |
この関数は、データのリストを含むコントロール (リスト・ボックス、コンボ・ボックス、テーブルのコントロール、または SQL 管理) だけを処理します。
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 でなければなりません。テーブルのコントロールおよび SQL 管理 コントロールの場合には、このパラメーターはタイプ RECORD でなければなりません。 |
この関数は、データのリストを保留するコントロール (リスト・ボックス、コンボ・ボックス、またはテーブル) だけを処理します。
KNOWLEDGEBASE MCLB;
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 | コマンドによってアドレス指定されたダイアログ・ボックス内のコントロールの名前。これは、Interface Designer またはダイアログ・ボックス仕様ファイルの DEFINE ステートメントの中で指定されていることがあります。この名前は大文字小文字を区別しません。 |
カーソルを新規コントロールに移動させると、$MsgExitField および $MsgEnterField が生成されます。
ダイアログ・ボックス
のイベント・ハンドラーがこれらのいずれかのメッセージを拒否して、操作に失敗することがあります。
KNOWLEDGEBASE DlgSLCT;
TYPES
DLGDATA IS RECORD
sampleField: INTEGER;
END;
(* ******* PRIVATE *********)
PRIVATE
ROUTINES
(* ******** ダイアログ・ボックス EVENT HANDLER *********)
EVENT DlgEvent( REF fields: DLGDATA ) IS
ACTIONS
(* すべてのダイアログ・ボックス・メッセージに疑似パラメーター $FieldID および $FieldName があります *)
WHEN $Event IS $MsgCreate THEN
(* カーソルの初期フィールドを選択します *)
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 | コマンドによってアドレス指定されたダイアログ・ボックス内のコントロールの名前。これは、Interface Designer またはダイアログ・ボックス仕様ファイルの 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 は複数行エディター、入力フィールド、またはコンボ・ボックスでなければなりません *)
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 (* ダイアログ・ボックスの例 *);
------------------------------------------------------------------------
コントロールの使用可能または使用不可状況を設定します。
FUNCTION DlgSetEnabled(VAL whdlDialog: WINDOW,
VAL fieldNames: LIST OF STRING [,
VAL newState: BOOLEAN ]): INTEGER;
引き数の注 | 引き数名の説明 |
whdlDialog | 運用されるコントロールを含むダイアログ・ボックスのウィンドウ・ハンドル。コマンドがコントロールを含むイベント・ハンドラーから出された場合には、疑似パラメーター $Handle を使用することができます。 |
fieldName | コマンドによってアドレス指定されたダイアログ・ボックス内のコントロールの名前。これは、Interface Designer またはダイアログ・ボックス仕様ファイルの 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
(* ******** ダイアログ・ボックス 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 | コマンドによってアドレス指定されたダイアログ・ボックス内のコントロールの名前。これは、Interface Designer またはダイアログ・ボックス仕様ファイルの DEFINE ステートメントの中で指定されていることがあります。この名前は大文字小文字を区別しません。 |
newValue | アドレス指定されたコントロールがこのパラメーターの値に設定されます。 コントロールがチェック・ボックス、オプション・ボタン、またはスライダーである場合には、新規の値は整数に変換され、コントロールはその結果の値に設定されます。この変換に失敗した場合には、通常は結果がゼロとなります。 チェック・ボックスの場合には、ゼロがアンチェックされます。その他すべての値はチェックされます。 その他すべてのコントロール・タイプの場合には、値がストリングに変換されます。 テキスト・ボックス、コンボ・ボックス、リスト・ボックス、およびメッセージの場合には、コントロールが新規のストリングに設定されます。 リスト・ボックスの場合には、リストの中で一致するストリングが検索されます。一致が見つかった場合には、そのストリングが選択されます。 SQL 管理 およびテーブルのコントロールは無視されます。コントロールが正常に更新され、ダイアログ・ボックスのコントロールに結合されたインスタンス・データのフィールドがあった場合には、そのインスタンス・データが更新されます。フィールド値を設定することで、そのフィールドのための選択メッセージが生成されます。 |
コントロールの値を設定すると、$MsgSelect が生成されます。コントロールの値が変更された場合には、$MsgInitialize が生成されます。
$MsgSelect は、ダイアログ・ボックスのイベント・ハンドラーによって拒否されることがあります。
コントロール内のすべてのスペースが空であった場合には、空白がダイアログ・ボックスからトリムされます。これは、ユーザーが空のスペース
のストリングをコントロールに入力した場合、あるいはダイアログ・ボックス仕様ファイルにコントロールの
ための空ストリングが含まれている場合に起こることがあります いずれの場合にも、空のコントロールの値が要求されると、$Unknown が戻されます。
KNOWLEDGEBASE DlgSet_f;
TYPES
DLGDATA IS RECORD
sampleField: INTEGER;
END;
(* ******* PRIVATE *********)
PRIVATE
ROUTINES
(* ******** ダイアログ・ボックス EVENT HANDLER *********)
EVENT DlgEvent( REF fields: DLGDATA ) IS
ACTIONS
(* すべてのダイアログ・ボックス・メッセージに疑似パラメーター $FieldID および $FieldName があります *)
WHEN $Event IS $MsgCreate THEN
(* カーソルの初期フィールドを選択します *)
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 | コマンドによってアドレス指定されたダイアログ・ボックス内のコントロールの名前。これは、Interface Designer またはダイアログ・ボックス仕様ファイルの 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
(* ******** ダイアログ・ボックス 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;
------------------------------------------------------------------------
リスト・ボックスまたはテーブルのコントロール内の 1 つまたは複数のアイテムをその索引によって選択します。
FUNCTION DlgSetListBoxIndex(VAL whdlDialog: WINDOW,
VAL fieldName: STRING,
VAL newIndex:INTEGER | INTEGER
引き数の注 | 引き数名の説明 |
whdlDialog | 運用されるコントロールを含むダイアログ・ボックスのウィンドウ・ハンドル。コマンドがコントロールを含むイベント・ハンドラーから出された場合には、疑似パラメーター $Handle を使用することができます。 |
fieldName | コマンドによってアドレス指定されたダイアログ・ボックス内のコントロールの名前。これは、Interface Designer またはダイアログ・ボックス仕様ファイルの 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 | コマンドによってアドレス指定されたダイアログ・ボックス内のコントロールの名前。これは、Interface Designer またはダイアログ・ボックス仕様ファイルの DEFINE ステートメントの中で指定されていることがあります。この名前は大文字小文字を区別しません。コマンドは、リスト中のすべてのコントロール名について実行されます。処理されたコントロールの数が戻されます。エラーが見つかった時には、処理が停止します。 システム変数 $DlgError がそのエラー・コードに設定されます。処理された最初のコントロールでエラーが起こった場合には、エラー・コードがステートメントによって戻されます。 |
newState | コントロールの新規の状態。このパラメーターは任意指定です。省略した場合には、TRUE とみなされます。 |
DlgSetMandatory を使用して、ダイアログ・ボックスのコントロールの必須状態を変更することができます。たとえば、コントロールが必須ではないが、
特定の状況下にあった場合には、そのダイアログ・ボックスのイベント・ハンドラーでステートメント
DlgSetMandatory ($Handle,'THAT_FIELD',TRUE) を使用して、そのコントロールを必須とすることもできます。Tivoli Service Desk Developer's Toolkit
のダイアログ・ボックス・システムでは、空の必須フィールドをもつダイアログ・ボックスを受け入れることは許可されません。
エラー・メッセージを受け取り、
カーソルは空の最初の必須コントロールに位置づけられます。
DlgSetMandatory ($Handle,'SOCIAL_SECURITY_NUMBER',TRUE);
------------------------------------------------------------------------
ダイアログ・ボックスのコントロールの読み取り専用状態を設定します。
FUNCTION DlgSetReadOnly(VAL whdlDialog: WINDOW, VAL
fieldNames: LIST OF STRING [,
VAL newState: BOOLEAN ]): INTEGER;
引き数の注 | 引き数名の説明 |
whdlDialog | 運用されるコントロールを含むダイアログ・ボックスのウィンドウ・ハンドル。コマンドがコントロールを含むイベント・ハンドラーから出された場合には、疑似パラメーター $Handle を使用することができます。 |
fieldName | コマンドによってアドレス指定されたダイアログ・ボックス内のコントロールの名前。これは、Interface Designer またはダイアログ・ボックス仕様ファイルの 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 (* ダイアログ・ボックスの例 *);
------------------------------------------------------------------------
SQL 選択ステートメントを出して、SQL 管理 に結果テーブルを埋め込みます。
FUNCTION DlgSqlSelect(VAL whdlDialog: WINDOW,
VAL fieldName: STRING,
VAL selectString: STRING, VAL
StripHyperlinks: BOOLEAN): INTEGER;
引き数の注 | 引き数名の説明 |
whdlDialog | 運用されるコントロールを含むダイアログ・ボックスのウィンドウ・ハンドル。コマンドがコントロールを含むイベント・ハンドラーから出された場合には、疑似パラメーター $Handle を使用することができます。 |
fieldName | コマンドによってアドレス指定されたダイアログ・ボックス内のコントロールの名前。これは、Interface Designer またはダイアログ・ボックス仕様ファイルの DEFINE ステートメントの中で指定されていることがあります。この名前は大文字小文字を区別しません。コントロールは SQL 管理 コントロールでなければなりません。 |
selectString | パラメーターは、SQL 選択ステートメントに正しく形式設定されていることが必要です。SQL 選択ステートメントは、SQL データベース管理プログラムに渡されます。 選択が正常に行われた場合には、SQLManage は消去されて、その選択からのすべてのレコードがフィールドに挿入されます。 |
StringHyperlinks | ハイパーテキスト・ストリングをその大括弧内のボタン名にまで削減します。このハイパーテキスト・ストリングの前後のテキストには影響しません。 |
UseHypertextFilter | DlgSqlSelect の現行の DOC では、3 つの入力変数に関する情報だけが提供されます。しかし、このコマンドの EA アプリケーションでの各種の使用により、それが 4 つあることが示されます。4 番目の変数はブールとして表示されます。その内容および使用について文書化される必要があります。 |
OS/2 における SQL 管理 には、最高 65,535 個までのレコードを含めることができます。 Windows では、SQL 管理 に次のように含めることができます。
* 1 行につき 64K のデータ
* 1 行の 1 列につき 256 バイト
* 1 行につき 256 列。
DlgSQLSelect ステートメントが SQL エラーを生成した場合には、その SQL エラーが戻されます。
KNOWLEDGEBASE DlgSQL;
TYPES
DLGDATA IS RECORD
sampleField: INTEGER;
END;
(* ******* PRIVATE ******** *)
PRIVATE
ROUTINES
(* ******** ダイアログ・ボックス EVENT HANDLER *********)
EVENT DlgEvent( REF fields: DLGDATA ) IS
VARIABLES
selectString: STRING;
ACTIONS
(* すべてのダイアログ・ボックス・メッセージに疑似パラメーター $FieldID および $FieldName があります *)
WHEN $Event IS $MsgChar THEN
WHEN $KeyCode IS $KeyAltS THEN (* Look for Alt-S *)
(* 挿入するテキストを求めるプロンプトをユーザーに出します *)
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 | アクションが実行されるタブ付きダイアログ・ボックスの名前。この名前は、フォームが Interface Designer ユーティリティーによって作成された時に設定されます。 |
page | 切り替えるタブの番号を表す整数。最初のタブは 1、2 番目のタブは 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 | サブフォームのコントロールの ID。 |
win | 既存のサブフォーム内のウィンドウ。 |
eventHandler | ウィンドウまたはダイアログ・ボックスで生成されたイベントを処理するイベント・ハンドラー。イベント処理が必要でない場合には、キーワード $NullHandler を使用することができます。 |
style | ウィンドウの外観をコントロールするために使用するスタイル・フラグのセットを表す整数のビット・マスク。 使用できるスタイル・フラグのリストについては、ウィンドウ・スタイルを参照してください |
scrollwindow | TRUE の場合には、スクロール・ウィンドウが作成されます。 |
すべての関数がこの呼び出しから戻されたハンドルに有効なわけではありません。サポートされていない関数は、不良ハンドラー・エラーまたは一般的な障害のために
失敗します。以下の関数は、 DlgWinCreate によって作成されたウィンドウには有効ではありません。
Tivoli Service Desk 6.0 Developer's Toolkit TSD Script 言語解説書