ruby-****@lists*****
ruby-****@lists*****
2003年 5月 26日 (月) 21:41:56 JST
------------------------- REMOTE_ADDR = 210.249.193.205 REMOTE_HOST = URL = http://ruby-gnome2.sourceforge.jp/?%A5%B3%A5%F3%A5%DC%A5%DC%A5%C3%A5%AF%A5%B9 ------------------------- = コンボボックス Gtkのコンボボックスはいくつかの選択項目を表示するドロップダウンリストとそれを表示するためのボタン、直接入力できるテキストボックスからなります。 == 基本的な使い方 とりあえず、基本的な使い方として、ボタンをクリックすると現在選択されているアイテムを標準出力に出力するサンプルを書いてみます。 require 'gtk' combo = Gtk::Combo.new combo.set_popdown_strings(["Banana", "Apple", "Grape"]) button = Gtk::Button.new("Click") button.signal_connect(Gtk::Button::SIGNAL_CLICKED) do printf("Selected item = %s\n", combo.entry.get_text) end box = Gtk::VBox.new box.pack_start(combo) box.pack_start(button) window = Gtk::Window.new window.add(box) window.show_all Gtk.main --- Gtk::Combo.new Gtk::Comboオブジェクトを生成します。 --- Gtk::Combo#set_popdown_strings(array) ドロップダウンリストに設定する文字列を配列で指定します。各文字列はユニークである必要があります。 * array - ドロップダウンに指定する文字列の配列。 --- Gtk::Combo#entry コンボボックスのエントリはGtk::Entryです。ドロップダウンで選択した情報はこのテキストボックスに表示されますので、現在選択されている情報を取得する場合はGtk::Entry#get_textを使って情報を取ります。 == テキストボックス内で、矢印キーを押してもアイテムを変化させないようにする デフォルトの実装では、テキストボックスにフォーカスをあてた状態で、上下矢印キーを押すとドロップダウンリストの内容順にテキストボックスの内容が変わるのですが、これを抑制することができます。ってあまり使わないか。 require 'gtk' combo = Gtk::Combo.new combo.set_popdown_strings(["Banana", "Apple", "Grape"]) combo.set_use_arrows(false) Gtk::Window.new.add(combo).show_all Gtk.main よくわからない場合はGtk::Combo#set_use_arrows()の行をコメントアウトしてみた場合と比べてみると良いと思います。 --- Gtk::Combo#set_use_arrows(value) テキストボックス内での矢印キーの操作方法を指定する。 * value - true/falseで、それぞれ矢印キーが有効/無効となる。デフォルトはtrue。 == テキストボックス内で、矢印キーを押すとアイテムが選択され続けるようにする って、言葉で言うと難しいのですが、例えば、デフォルトの状態でテキストボックスにフォーカスをあてた状態で下矢印キーを押すと、 Banana → Apple → Grape → フォーカスが別のウィジェットに移る となるのですが、これを、 Banana → Apple → Grape → Banana → Apple → ... とずっとテキストウィジェットにフォーカスが当たった状態にしてみます。ちなみに別のウィジェットにフォーカスを移す場合はTABキーを押します。 require 'gtk' combo = Gtk::Combo.new combo.set_popdown_strings(["Banana", "Apple", "Grape"]) combo.set_use_arrows_always(true) Gtk::Window.new.add(combo).show_all Gtk.main --- Gtk::Combo#set_use_arrows_always(value) 矢印キーの挙動を変更します。 * value - trueの場合、矢印キーでずっとドロップダウンリストのアイテムを順番に表示し続ける。デフォルトはfalse。 == テキストボックスのリターンキーでドロップダウンリストが現れないようにする デフォルトの実装では、テキストボックスにフォーカスをあてた状態で、リターンキーを押すとドロップダウンリストが現れるのですが、これを抑制することができます。 require 'gtk' combo = Gtk::Combo.new combo.set_popdown_strings(["Banana", "Apple", "Grape"]) combo.disable_activate Gtk::Window.new.add(combo).show_all Gtk.main よくわからない場合はGtk::Combo#disable_actibateの行をコメントアウトしてみた場合と比べてみると良いと思います。 --- Gtk::Combo#disable_activate テキストウィジェットにフォーカスがあたった状態でリターンキーを押してもドロップダウンリストが表示されないようにする。 == テキストボックス内で大文字・小文字の区別をしなくする 以下の例で、Bananaと表示されているところで、最後のnanaをNANAと入力してみてください。NANAがnanaに自動的に変換されます。これは、大文字・小文字の違いを無視してドロップダウンリストのアイテムの中に合うものと一致させます。実は、これはデフォルトの動作です。 次に、以下のGtk::Combo#set_case_sensitive()にtrueを設定してみてください。今度は変換されなくなります。 require 'gtk' combo = Gtk::Combo.new combo.set_popdown_strings(["Banana", "Apple", "Grape"]) combo.set_case_sensitive(false) Gtk::Window.new.add(combo).show_all Gtk.main --- Gtk::Combo#set_case_sensitive(value) テキストボックスに直接入力された文字列をドロップダウンリスト内のアイテムの中にマッチするものがあるかどうかを判定する際に大文字・小文字を区別するかどうかを指定します。 * value - trueの場合は大文字・小文字を区別し、falseの場合はドロップダウンリストのアイテムの中で合うものにマッチさせる。デフォルトはfalse。 == 選択専用(入力不可)にする コンボボックスからの選択のみでテキストボックスの直接入力をできないようにしてみます。って言っても要はGtk::Entry(Gtk::Editable#set_editable(editable))で入力を不可にするだけです。 require 'gtk' combo = Gtk::Combo.new combo.set_popdown_strings(["Banana", "Apple", "Grape"]) combo.entry.set_editable(false) Gtk::Window.new.add(combo).show_all Gtk.main ------------------------- = コンボボックス ((*まだRuby/GTK(1)向けのものです。*)) Gtkのコンボボックスはいくつかの選択項目を表示するドロップダウンリストとそれを表示するためのボタン、直接入力できるテキストボックスからなります。 == 基本的な使い方 とりあえず、基本的な使い方として、ボタンをクリックすると現在選択されているアイテムを標準出力に出力するサンプルを書いてみます。 require 'gtk' combo = Gtk::Combo.new combo.set_popdown_strings(["Banana", "Apple", "Grape"]) button = Gtk::Button.new("Click") button.signal_connect(Gtk::Button::SIGNAL_CLICKED) do printf("Selected item = %s\n", combo.entry.get_text) end box = Gtk::VBox.new box.pack_start(combo) box.pack_start(button) window = Gtk::Window.new window.add(box) window.show_all Gtk.main --- Gtk::Combo.new Gtk::Comboオブジェクトを生成します。 --- Gtk::Combo#set_popdown_strings(array) ドロップダウンリストに設定する文字列を配列で指定します。各文字列はユニークである必要があります。 * array - ドロップダウンに指定する文字列の配列。 --- Gtk::Combo#entry コンボボックスのエントリはGtk::Entryです。ドロップダウンで選択した情報はこのテキストボックスに表示されますので、現在選択されている情報を取得する場合はGtk::Entry#get_textを使って情報を取ります。 == テキストボックス内で、矢印キーを押してもアイテムを変化させないようにする デフォルトの実装では、テキストボックスにフォーカスをあてた状態で、上下矢印キーを押すとドロップダウンリストの内容順にテキストボックスの内容が変わるのですが、これを抑制することができます。ってあまり使わないか。 require 'gtk' combo = Gtk::Combo.new combo.set_popdown_strings(["Banana", "Apple", "Grape"]) combo.set_use_arrows(false) Gtk::Window.new.add(combo).show_all Gtk.main よくわからない場合はGtk::Combo#set_use_arrows()の行をコメントアウトしてみた場合と比べてみると良いと思います。 --- Gtk::Combo#set_use_arrows(value) テキストボックス内での矢印キーの操作方法を指定する。 * value - true/falseで、それぞれ矢印キーが有効/無効となる。デフォルトはtrue。 == テキストボックス内で、矢印キーを押すとアイテムが選択され続けるようにする って、言葉で言うと難しいのですが、例えば、デフォルトの状態でテキストボックスにフォーカスをあてた状態で下矢印キーを押すと、 Banana → Apple → Grape → フォーカスが別のウィジェットに移る となるのですが、これを、 Banana → Apple → Grape → Banana → Apple → ... とずっとテキストウィジェットにフォーカスが当たった状態にしてみます。ちなみに別のウィジェットにフォーカスを移す場合はTABキーを押します。 require 'gtk' combo = Gtk::Combo.new combo.set_popdown_strings(["Banana", "Apple", "Grape"]) combo.set_use_arrows_always(true) Gtk::Window.new.add(combo).show_all Gtk.main --- Gtk::Combo#set_use_arrows_always(value) 矢印キーの挙動を変更します。 * value - trueの場合、矢印キーでずっとドロップダウンリストのアイテムを順番に表示し続ける。デフォルトはfalse。 == テキストボックスのリターンキーでドロップダウンリストが現れないようにする デフォルトの実装では、テキストボックスにフォーカスをあてた状態で、リターンキーを押すとドロップダウンリストが現れるのですが、これを抑制することができます。 require 'gtk' combo = Gtk::Combo.new combo.set_popdown_strings(["Banana", "Apple", "Grape"]) combo.disable_activate Gtk::Window.new.add(combo).show_all Gtk.main よくわからない場合はGtk::Combo#disable_actibateの行をコメントアウトしてみた場合と比べてみると良いと思います。 --- Gtk::Combo#disable_activate テキストウィジェットにフォーカスがあたった状態でリターンキーを押してもドロップダウンリストが表示されないようにする。 == テキストボックス内で大文字・小文字の区別をしなくする 以下の例で、Bananaと表示されているところで、最後のnanaをNANAと入力してみてください。NANAがnanaに自動的に変換されます。これは、大文字・小文字の違いを無視してドロップダウンリストのアイテムの中に合うものと一致させます。実は、これはデフォルトの動作です。 次に、以下のGtk::Combo#set_case_sensitive()にtrueを設定してみてください。今度は変換されなくなります。 require 'gtk' combo = Gtk::Combo.new combo.set_popdown_strings(["Banana", "Apple", "Grape"]) combo.set_case_sensitive(false) Gtk::Window.new.add(combo).show_all Gtk.main --- Gtk::Combo#set_case_sensitive(value) テキストボックスに直接入力された文字列をドロップダウンリスト内のアイテムの中にマッチするものがあるかどうかを判定する際に大文字・小文字を区別するかどうかを指定します。 * value - trueの場合は大文字・小文字を区別し、falseの場合はドロップダウンリストのアイテムの中で合うものにマッチさせる。デフォルトはfalse。 == 選択専用(入力不可)にする コンボボックスからの選択のみでテキストボックスの直接入力をできないようにしてみます。って言っても要はGtk::Entry(Gtk::Editable#set_editable(editable))で入力を不可にするだけです。 require 'gtk' combo = Gtk::Combo.new combo.set_popdown_strings(["Banana", "Apple", "Grape"]) combo.entry.set_editable(false) Gtk::Window.new.add(combo).show_all Gtk.main