YKLook説明書 GUIオブジェクト利用の手引き ダイアログウインドウ 前へ   次へ
   

ダイアログウインドウ


ダイアログウインドウの使い方の概要を説明します。
詳細については  クラス解説 YKLookMain の下記メソッドの説明をご覧ください。

以下はこのページ内の全項目です。


全体の概要

ダイアログウインドウ用のメソッドには以下のものがあります。

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記法による指定もできます。
メッセージには文字列だけでなく以下のものが指定できます。

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





   
YKLook説明書 GUIオブジェクト利用の手引き ダイアログウインドウ 前へ   次へ


Copyright (c) 2003-2010 YorozuKotowariYa Ltd.