ダイアログウインドウ
ダイアログウインドウの使い方の概要を説明します。
詳細については クラス解説
YKLookMain
の下記メソッドの説明をご覧ください。
-
yk_show_dialog_message()
-
yk_show_dialog_confirm()
-
yk_show_dialog_option()
-
yk_show_dialog_input()
-
yk_show_dialog_select()
以下はこのページ内の全項目です。
ダイアログウインドウ用のメソッドには以下のものがあります。
yk_show_dialog_message() |
メッセージを表示する機能のみ。
ボタンは「OK」のみ |
yk_show_dialog_confirm() |
確認用のダイアログ。
ボタンは「OK」「YES」「NO」「CANCEL」の任意の組み合わせ |
yk_show_dialog_option() |
オプション指定用のダイアログ。
ボタンは任意。個数も任意 |
yk_show_dialog_input() |
入力ダイアログ。
ボタンは「OK」「CANCEL」 |
yk_show_dialog_select() |
選択ダイアログ。
ボタンは「OK」「CANCEL」 |
いずれも
YKLookMain
クラスのインスタンスメソッドです。
YKLook によるGUIプログラムは
YKLookMain
から派生したサブクラスを定義する形になります。
そのため、実際にプログラムを作るときはメソッド名のみで呼び出すことが多いです。
これらのメソッドを呼び出すと、呼び出し元には戻らずに、YKLook のメインループに戻ります。
その後ダイアログを表示します。
ダイアログを表示した後、その結果(アプリ利用者による入力や選択の情報)をもとに処理をするときは
後述の
イベント(メッセージダイアログ) とそれ以降の項目をご覧ください。
ダイアログウインドウにメッセージを表示するプログラム例です。
yk_show_dialog_message( nil, 'メッセージ' )
|
以下は、もう少し具体的に示したプログラム例です。
ボタンを押すと、ダイアログを表示します。
def yki_make_display()
btn = YKLookButton.new( 'ボタン' )
pan = YKLookPanelFlow.new()
pan.yk_add( btn )
yk_add( pan )
btn.yk_set_listener( 'fn_cb_button' )
end
def fn_cb_button( prm_event )
yk_show_dialog_message( nil, 'メッセージ' )
end
|
メッセージ文字列の中に改行を含めることができます。
YKLookLabel
のラベル用文字列と同じようにHTML記法による指定もできます。
メッセージには文字列だけでなく以下のものが指定できます。
- 文字列
- 数値(整数および実数)
- 画像・アイコン(
YKLookImage
クラスのオブジェクト)
- ラベル(
YKLookLabel
クラスのオブジェクト)
- パネル類(
YKLookPanelXxxx
クラスのオブジェクト)。
このパネル内には YKLookLabel クラス等の
オブジェクト(画面上に実際に表示可能なGUI部品)を追加しておく必要
があります。
- 配列。要素として指定できるのは上記の5種類のものに限る。
配列内の要素を順番に上から下へ並べて表示します。
def fn_cb_button_1( prm_event )
img = YKLookImage.yk_from_file( 'xxxx.gif' )
yk_show_dialog_message( nil, img )
end
def fn_cb_button_2( prm_event )
img = YKLookImage.yk_from_file( 'xxxx.gif' )
lab = YKLookLabel.new( 'ラベル', img )
yk_show_dialog_message( nil, lab )
end
def fn_cb_button_3( prm_event )
img = YKLookImage.yk_from_file( 'xxxx.gif' )
ary = [ 'メッセージ1', img, 'メッセージ2' ]
yk_show_dialog_message( nil, ary )
end
|
メッセージ以外にも、このウインドウのタイトルや、メッセージの種類を表すアイコン等を指定することもできます。
メッセージの種類を表すアイコンは「情報」「警告」「異常」「質問」「アイコンなし」の5種類の中から指定することができるほか、任意の画像・アイコンを指定することもできます。
この項目の内容は
yk_show_dialog_message()
だけでなく、すべてのダイアログ用メソッドで共通です。
確認用ダイアログを表示するプログラム例です。
yk_show_dialog_confirm( nil, 'メッセージ' )
|
以下は、もう少し具体的に示したプログラム例です。
ボタンを押すと、ダイアログを表示します。
def yki_make_display()
btn = YKLookButton.new( 'ボタン' )
pan = YKLookPanelFlow.new()
pan.yk_add( btn )
yk_add( pan )
btn.yk_set_listener( 'fn_cb_button' )
end
def fn_cb_button( prm_event )
yk_show_dialog_confirm( nil, 'メッセージ' )
end
|
このプログラム例の場合、「YES」「NO」「CANCEL」の三つのボタンを表示します。
以下の例では、「OK」「CANCEL」の二つのボタンを表示します。
yk_show_dialog_confirm( nil, 'メッセージ', nil, 'OC' )
|
このメソッドの4番目の引数によりボタンの組み合わせを指定します。
ちなみに3番目の引数はウインドウのタイトル文字列です。
ボタンの組み合わせで指定できる文字列と意味は下記のとおりです。
指定 | 意味 |
'OC' | 「OK」「CANCEL」 |
'YN' | 「YES」「NO」 |
'YNC' | 「YES」「NO」「CANCEL」 |
ボタンの表示順は指定できません。
それぞれのOSごとに適切な順番に並びます。
ダイアログを表示した後、その結果(アプリ利用者によるボタンの情報)をもとに処理をするときは
後述の
イベント(確認用ダイアログ) をご覧ください。
オプション指定用ダイアログを表示するプログラム例です。
opt = [ '天狼', '織女', '牽牛', '真珠' ]
yk_show_dialog_option( nil, 'メッセージ', nil, opt )
|
以下は、もう少し具体的に示したプログラム例です。
ボタンを押すと、ダイアログを表示します。
def yki_make_display()
btn = YKLookButton.new( 'ボタン' )
pan = YKLookPanelFlow.new()
pan.yk_add( btn )
yk_add( pan )
btn.yk_set_listener( 'fn_cb_button' )
end
def fn_cb_button( prm_event )
opt = [ '天狼', '織女', '牽牛', '真珠' ]
yk_show_dialog_option( nil, 'メッセージ', nil, opt )
end
|
このプログラム例の場合、ダイアログに「天狼」「織女」「牽牛」「真珠」の四つのボタンを表示します。
このメソッドの4番目の引数によりボタンを指定します。
ちなみに3番目の引数はウインドウのタイトル文字列です。
この4番目の引数は常に配列です。
ここに空の配列を指定すると、ボタンを表示しません。
このときは、ダイアログのウインドウ外枠の左上隅または右上隅にある小さなボタンを押してダイアログを閉じてください。
このボタンは、Mac OS X の場合は赤丸のボタン、
MS-Windows 系の場合は「X」ボタンに対応します。
デフォルトのオプションを指定することもできます。
下の例の場合、「天狼」をデフォルトにしています。
opt = [ '天狼', '織女', '牽牛', '真珠' ]
yk_show_dialog_option( nil, 'メッセージ', nil, opt, 0 )
|
ボタンの表示順は、それぞれのOSごとに異なります。
多くの場合、左から順に右へ並ぶか、右から順に左へ並ぶかのいずれかです。
ダイアログを表示した後、その結果(アプリ利用者によるボタンの情報)をもとに処理をするときは
後述の
イベント(オプション指定用ダイアログ) をご覧ください。
入力ダイアログを表示するプログラム例です。
yk_show_dialog_input( nil, 'メッセージ' )
|
以下は、もう少し具体的に示したプログラム例です。
ボタンを押すと、ダイアログを表示します。
def yki_make_display()
btn = YKLookButton.new( 'ボタン' )
pan = YKLookPanelFlow.new()
pan.yk_add( btn )
yk_add( pan )
btn.yk_set_listener( 'fn_cb_button' )
end
def fn_cb_button( prm_event )
yk_show_dialog_input( nil, 'メッセージ' )
end
|
ダイアログを表示した後、その結果(アプリ利用者による入力情報)をもとに処理をするときは
後述の
イベント(入力ダイアログ) をご覧ください。
選択ダイアログを表示するプログラム例です。
sel = [ '天狼', '織女', '牽牛', '真珠' ]
yk_show_dialog_select( nil, 'メッセージ', nil, sel )
|
以下は、もう少し具体的に示したプログラム例です。
ボタンを押すと、ダイアログを表示します。
def yki_make_display()
btn = YKLookButton.new( 'ボタン' )
pan = YKLookPanelFlow.new()
pan.yk_add( btn )
yk_add( pan )
btn.yk_set_listener( 'fn_cb_button' )
end
def fn_cb_button( prm_event )
sel = [ '天狼', '織女', '牽牛', '真珠' ]
yk_show_dialog_select( nil, 'メッセージ', nil, sel )
end
|
このプログラム例の場合、ダイアログに「天狼」「織女」「牽牛」「真珠」の四つの選択肢を持つポップアップリストを表示します。
このメソッドの4番目の引数により選択肢を指定します。
この4番目の引数は常に配列です。
ちなみに3番目の引数はウインドウのタイトル文字列です。
デフォルトの選択肢を指定することもできます。
下の例の場合、「天狼」をデフォルトにしています。
sel = [ '天狼', '織女', '牽牛', '真珠' ]
yk_show_dialog_select( nil, 'メッセージ', nil, sel, 0 )
|
ダイアログを表示した後、その結果(アプリ利用者による選択)をもとに処理をするときは
後述の
イベント(選択ダイアログ) をご覧ください。
メッセージダイアログからのイベントを処理するプログラム例です。
yk_show_dialog_message( 'fn_cb_dialog', 'メッセージ' )
|
def fn_cb_dialog( prm_event )
# 「OK」ボタンが押されたときの処理
end
|
以下は、もう少し具体的に示したプログラム例です。
ボタンを押すと、
fn_cb_button()
が呼び出されるのでダイアログを表示します。
ダイアログの「OK」ボタンを押すと、
fn_cb_dialog()
が呼び出されます。
def yki_make_display()
btn = YKLookButton.new( 'ボタン' )
pan = YKLookPanelFlow.new()
pan.yk_add( btn )
yk_add( pan )
btn.yk_set_listener( 'fn_cb_button' )
end
def fn_cb_button( prm_event )
yk_show_dialog_message( 'fn_cb_dialog', 'メッセージ' )
end
def fn_cb_dialog( prm_event )
# 「OK」ボタンが押されたときの処理
end
|
yk_show_dialog_message()
の最初の引数に指定するメソッド名は任意ですが、名前の先頭が
'yk'
で始まるものは指定できません。
このメソッド(この例では
fn_cb_dialog()
)の引数は
YKLookEventDialog
クラスのオブジェクトです。
詳細については
クラス解説 YKLookEventDialog
をご覧ください。
上のプログラム例は「OK」ボタンが押されたときにだけ
fn_cb_dialog()
が呼び出されます。
ダイアログのウインドウを直接閉じる特別なボタンが押されたときは呼び出されません。
この特別なボタンは、ウインドウ外枠の左上隅または右上隅にある小さなボタンで、Mac OS X
の場合は赤丸のボタン、MS-Windows 系の場合は「X」ボタンに対応します。
このようなボタンが押されたときでも
fn_cb_dialog()
を呼び出すようにするには、
以下のように配列の形で指定してください。
yk_show_dialog_message( ['fn_cb_dialog'], 'メッセージ' )
|
def fn_cb_dialog( prm_event )
ans = prm_event.yk_answer()
if ans
# 「OK」ボタンが押されたときの処理
else
# ウインドウを直接閉じる特別なボタンが押されたときの処理
end
end
|
上の例では
prm_event.yk_answer()
を使っていますが、
yk_show_dialog_message()
メソッドによるダイアログ表示処理で
prm_event.yk_answer()
を使うことは実際にはあまりありません。
このダイアログを使う場合の多くは下記ふたつの用途です。
- 単にメッセージを表示するのみで、それ以降の処理はない。
- メッセージを表示した後、ダイアログが閉じられたらそのままそれ以降の処理を続ける。
前者の場合はそもそもコールバック用メソッドが必要ありません。
後者の場合はイベントの戻り値をチェックする必要がありません。
従って、後者の場合はコールバック用メソッドで
prm_event.yk_answer()
を使うこともなく、すぐにそれ以降の処理をおこなえばいいだけです。
確認用ダイアログからのイベントを処理するプログラム例です。
yk_show_dialog_confirm( 'fn_cb_dialog', 'メッセージ' )
|
def fn_cb_dialog( prm_event )
ans = prm_event.yk_answer()
# 「OK」「YES」「NO」ボタンが押されたときの処理
end
|
以下は、もう少し具体的に示したプログラム例です。
ボタンを押すと、
fn_cb_button()
が呼び出されるのでダイアログを表示します。
ダイアログの「OK」「YES」「NO」ボタンを押すと、
fn_cb_dialog()
が呼び出されます。
def yki_make_display()
btn = YKLookButton.new( 'ボタン' )
pan = YKLookPanelFlow.new()
pan.yk_add( btn )
yk_add( pan )
btn.yk_set_listener( 'fn_cb_button' )
end
def fn_cb_button( prm_event )
yk_show_dialog_confirm( 'fn_cb_dialog', 'メッセージ' )
end
def fn_cb_dialog( prm_event )
ans = prm_event.yk_answer()
# 「OK」「YES」「NO」ボタンが押されたときの処理
end
|
yk_show_dialog_confirm()
の最初の引数に指定するメソッド名は任意ですが、名前の先頭が
'yk'
で始まるものは指定できません。
このメソッド(この例では
fn_cb_dialog()
)の引数は
YKLookEventDialog
クラスのオブジェクトです。
詳細については
クラス解説 YKLookEventDialog
をご覧ください。
ダイアログのどのボタンが押されたのかを判定するには、
yk_answer()
の戻り値で分かります。
yk_answer()
の戻り値は以下のとおりです。
戻り値 | 意味 |
'O' | 「OK」ボタン |
'Y' | 「YES」ボタン |
'N' | 「NO」ボタン |
'C' | 「CANCEL」ボタン |
nil | ウインドウを直接閉じる特別なボタン |
上のプログラム例は、「OK」「YES」「NO」ボタンが押されたときに
fn_cb_dialog()
が呼び出されます。
しかし「CANCEL」ボタンや、ダイアログのウインドウを直接閉じる特別なボタンが押されたときは呼び出されません。
この特別なボタンは、ウインドウ外枠の左上隅または右上隅にある小さなボタンで、Mac OS X
の場合は赤丸のボタン、MS-Windows 系の場合は「X」ボタンに対応します。
このようなボタンが押されたときでも
fn_cb_dialog()
を呼び出すようにするには、
以下のように配列の形で指定してください。
yk_show_dialog_confirm( ['fn_cb_dialog'], 'メッセージ' )
|
def fn_cb_dialog( prm_event )
ans = prm_event.yk_answer()
if ans
# 「OK」「YES」「NO」「CANCEL」ボタンが押されたときの処理
else
# ウインドウを直接閉じる特別なボタンが押されたときの処理
end
end
|
オプション指定用ダイアログからのイベントを処理するプログラム例です。
opt = [ '天狼', '織女', '牽牛', '真珠' ]
yk_show_dialog_option( 'fn_cb_dialog', 'メッセージ', nil, opt )
|
def fn_cb_dialog( prm_event )
ans = prm_event.yk_answer()
# 「天狼」「織女」「牽牛」「真珠」ボタンが押されたときの処理
end
|
以下は、もう少し具体的に示したプログラム例です。
ボタンを押すと、
fn_cb_button()
が呼び出されるのでダイアログを表示します。
ダイアログの「天狼」「織女」「牽牛」「真珠」ボタンを押すと、
fn_cb_dialog()
が呼び出されます。
def yki_make_display()
btn = YKLookButton.new( 'ボタン' )
pan = YKLookPanelFlow.new()
pan.yk_add( btn )
yk_add( pan )
btn.yk_set_listener( 'fn_cb_button' )
end
def fn_cb_button( prm_event )
opt = [ '天狼', '織女', '牽牛', '真珠' ]
yk_show_dialog_option( 'fn_cb_dialog', 'メッセージ', nil, opt )
end
def fn_cb_dialog( prm_event )
ans = prm_event.yk_answer()
# 「天狼」「織女」「牽牛」「真珠」ボタンが押されたときの処理
end
|
yk_show_dialog_option()
の最初の引数に指定するメソッド名は任意ですが、名前の先頭が
'yk'
で始まるものは指定できません。
このメソッド(この例では
fn_cb_dialog()
)の引数は
YKLookEventDialog
クラスのオブジェクトです。
詳細については
クラス解説 YKLookEventDialog
をご覧ください。
ダイアログのどのボタンが押されたのかを判定するには、
yk_answer()
の戻り値で分かります。
yk_answer()
の戻り値が整数のときは、オプション配列(このプログラム例では
opt
)のインデックスを示します。
戻り値が
nil
のときは、ウインドウを直接閉じる特別なボタンが押されたことを示します。
上のプログラム例は、「天狼」「織女」「牽牛」「真珠」ボタンが押されたときに
fn_cb_dialog()
が呼び出されます。
しかし、ダイアログのウインドウを直接閉じる特別なボタンが押されたときは呼び出されません。
この特別なボタンは、ウインドウ外枠の左上隅または右上隅にある小さなボタンで、Mac OS X
の場合は赤丸のボタン、MS-Windows 系の場合は「X」ボタンに対応します。
このようなボタンが押されたときでも
fn_cb_dialog()
を呼び出すようにするには、
メソッド名を以下のように配列の形で指定してください。
opt = [ '天狼', '織女', '牽牛', '真珠' ]
yk_show_dialog_option( ['fn_cb_dialog'], 'メッセージ', nil, opt )
|
def fn_cb_dialog( prm_event )
ans = prm_event.yk_answer()
if ans
# 「天狼」「織女」「牽牛」「真珠」ボタンが押されたときの処理
else
# ウインドウを直接閉じる特別なボタンが押されたときの処理
end
end
|
入力ダイアログからのイベントを処理するプログラム例です。
yk_show_dialog_input( 'fn_cb_dialog', 'メッセージ' )
|
def fn_cb_dialog( prm_event )
ans = prm_event.yk_answer()
# 「OK」ボタンが押されたときの処理(ansは入力された文字列)
end
|
以下は、もう少し具体的に示したプログラム例です。
ボタンを押すと、
fn_cb_button()
が呼び出されるのでダイアログを表示します。
ダイアログの「OK」ボタンを押すと、
fn_cb_dialog()
が呼び出されます。
def yki_make_display()
btn = YKLookButton.new( 'ボタン' )
pan = YKLookPanelFlow.new()
pan.yk_add( btn )
yk_add( pan )
btn.yk_set_listener( 'fn_cb_button' )
end
def fn_cb_button( prm_event )
yk_show_dialog_input( 'fn_cb_dialog', 'メッセージ' )
end
def fn_cb_dialog( prm_event )
ans = prm_event.yk_answer()
# 「OK」ボタンが押されたときの処理(ansは入力された文字列)
end
|
yk_show_dialog_input()
の最初の引数に指定するメソッド名は任意ですが、名前の先頭が
'yk'
で始まるものは指定できません。
このメソッド(この例では
fn_cb_dialog()
)の引数は
YKLookEventDialog
クラスのオブジェクトです。
詳細については
クラス解説 YKLookEventDialog
をご覧ください。
入力された文字列は、
yk_answer()
の戻り値で分かります。
戻り値が
nil
のときは、「CANCEL」ボタンまたはウインドウを直接閉じる特別なボタンが押されたことを示します。
上のプログラム例は、「OK」ボタンが押されたときにだけ
fn_cb_dialog()
が呼び出されます。
「CANCEL」ボタンや、ダイアログのウインドウを直接閉じる特別なボタンが押されたときは呼び出されません。
この特別なボタンは、ウインドウ外枠の左上隅または右上隅にある小さなボタンで、Mac OS X
の場合は赤丸のボタン、MS-Windows 系の場合は「X」ボタンに対応します。
このようなボタンが押されたときでも
fn_cb_dialog()
を呼び出すようにするには、
以下のように配列の形で指定してください。
yk_show_dialog_input( ['fn_cb_dialog'], 'メッセージ' )
|
def fn_cb_dialog( prm_event )
ans = prm_event.yk_answer()
if ans
# 「OK」ボタンが押されたときの処理(ansは入力された文字列)
else
# 「CANCEL」ボタンまたはウインドウを直接閉じる特別なボタンが押されたときの処理
end
end
|
選択ダイアログからのイベントを処理するプログラム例です。
sel = [ '天狼', '織女', '牽牛', '真珠' ]
yk_show_dialog_select( 'fn_cb_dialog', 'メッセージ', nil, sel )
|
def fn_cb_dialog( prm_event )
ans = prm_event.yk_answer()
# 「OK」ボタンが押されたときの処理(ansは選択肢のインデックス)
end
|
以下は、もう少し具体的に示したプログラム例です。
ボタンを押すと、
fn_cb_button()
が呼び出されるのでダイアログを表示します。
ダイアログの「OK」ボタンを押すと、
fn_cb_dialog()
が呼び出されます。
def yki_make_display()
btn = YKLookButton.new( 'ボタン' )
pan = YKLookPanelFlow.new()
pan.yk_add( btn )
yk_add( pan )
btn.yk_set_listener( 'fn_cb_button' )
end
def fn_cb_button( prm_event )
sel = [ '天狼', '織女', '牽牛', '真珠' ]
yk_show_dialog_select( 'fn_cb_dialog', 'メッセージ', nil, sel )
end
def fn_cb_dialog( prm_event )
ans = prm_event.yk_answer()
# 「OK」ボタンが押されたときの処理(ansは選択肢のインデックス)
end
|
yk_show_dialog_select()
の最初の引数に指定するメソッド名は任意ですが、名前の先頭が
'yk'
で始まるものは指定できません。
このメソッド(この例では
fn_cb_dialog()
)の引数は
YKLookEventDialog
クラスのオブジェクトです。
詳細については
クラス解説 YKLookEventDialog
をご覧ください。
ダイアログのどの選択肢が押されたのかを判定するには、
yk_answer()
の戻り値で分かります。
yk_answer()
の戻り値が整数のときは、選択肢の配列(このプログラム例では
sel
)のインデックスを示します。
戻り値が
nil
のときは、「CANCEL」ボタンまたはウインドウを直接閉じる特別なボタンが押されたことを示します。
上のプログラム例は、「OK」ボタンが押されたときにだけ
fn_cb_dialog()
が呼び出されます。
「CANCEL」ボタンや、ダイアログのウインドウを直接閉じる特別なボタンが押されたときは呼び出されません。
この特別なボタンは、ウインドウ外枠の左上隅または右上隅にある小さなボタンで、Mac OS X
の場合は赤丸のボタン、MS-Windows 系の場合は「X」ボタンに対応します。
このようなボタンが押されたときでも
fn_cb_dialog()
を呼び出すようにするには、
メソッド名を以下のように配列の形で指定してください。
sel = [ '天狼', '織女', '牽牛', '真珠' ]
yk_show_dialog_select( ['fn_cb_dialog'], 'メッセージ', nil, sel )
|
def fn_cb_dialog( prm_event )
ans = prm_event.yk_answer()
if ans
# 「OK」ボタンが押されたときの処理(ansは選択肢のインデックス)
else
# 「CANCEL」ボタンまたはウインドウを直接閉じる特別なボタンが押されたときの処理
end
end
|
Copyright (c) 2003-2010 YorozuKotowariYa Ltd.