[ top ] [ prev ] [ up ] [ next ] Author: NISHIO Mizuho

ボタン

ここではいくつかのボタンの説明をします。

その1(Phi::Button)

典型的なボタンです。button1.rb

001  require 'phi'
002  form = Phi::Form.new(:form1, 'formです')
003  button = Phi::Button.new(form, :button1, 'hoge')
004  button.on_click = proc do
005    t = Time.now.to_s
006    print t, "\r\n"
007    button.caption = t
008  end
009  form.show
010  Phi.mainloop

このスクリプトを実行すると、このような ウィンドウがあらわれます。

解説

3行目でPhi::Buttonのオブジェクトが生成されます。この時、ボタンの文字列は 'hoge' です。 Phi::Button.new の引数の扱いは Phi::Label.new と同じです。

4〜8行はボタンが押された時の動作を決めています。ボタンが押されると、button.on_click( Phi::Button#on_click )という属性に代入された Proc のオブジェクトの内容が実行されます。Procのオブジェクトの内容は現在の日時の取得、現在の日時の操作卓への表示、ボタンの文字列の変更となっています。ここで使われている Time は Ruby の組み込みクラスで、時間に関係する処理を行うクラスです。詳しい使用法についてはRubyのドキュメントを見てください。

クラスやメソッド

Rubyの組み込みメソッド
  • print
    Rubyの組み込みクラス
  • Time
    Phi::Button
  • Phi::Button.new
  • Phi::Button#on_click ( Phi::Control#on_click )
  • その2(Phi::SpeedButton)

    外見を変更することでツールバーのボタンに似せることができます。button2.rb

    001  require 'phi'
    002  
    003  form = Phi::Form.new(:form1, 'formです')
    004  button = Phi::SpeedButton.new(form, :button1, 'hoge')
    005  button.flat = true
    006  button.allow_all_up = true
    007  button.group_index = 1
    008  button.on_click = proc do
    009    if button.down?
    010      button.caption = '1'
    011    else
    012      button.caption = '2'
    013    end
    014  end
    015  form.show
    016  Phi.mainloop
    

    このスクリプトを実行すると、このような ウィンドウがあらわれます。

    解説

    4行目でPhi::SpeedButtonのオブジェクトを生成し、5〜8行でボタンの外見等を設定しています。button.flat( Phi::SpeedButton#flat )の属性にtrueを代入することでツールバーのボタンのような外見にし、button.allow_all_up( Phi::SpeedButton#allow_all_up )の属性にtrueを代入することでグループ化されたボタンがすべて上がった状態にできるようにします。button.group_index ( Phi::SpeedButton#group_index )は同じ番号を持つ複数のPhi::SpeedButtonのオブジェクトをグループ化する属性です。上のスクリプトではボタンは一つしかないので、7行目は一見関係ないように思われますが、この行がないと、 button.allow_all_up = true の設定がうまくいきません。

    8〜14行目でボタンが押された時のイベントを設定しています。button.down?( Phi::SpeedButton#down? )はボタンが下がっている時にtrueを、ボタンが上がっているときにfalseを返します。

    if は Ruby の条件分岐をするための構文です。「if 〜」の〜の部分がtrue を返す時にその次の部分が実行されます。いくつかの条件がある時は elsif を使って条件分岐を行います(elseif ではないことに注意してください)。 if や elsif の条件を調べて、すべての条件に一致しない時に else の次の部分が実行されます。if の詳しい使い方については Ruby のマニュアルを読んでください。

    ここではボタンが下がるとボタンには1が表示され、ボタンが上がるとボタンには2が表示されるということになります。

    クラスやメソッド

    Phi::SpeedButton
  • Phi::SpeedButton.new
  • Phi::SpeedButton#allow_all_up
  • Phi::SpeedButton#caption
  • Phi::SpeedButton#down ( Phi::SpeedButton#down? )
  • Phi::SpeedButton#flat
  • Phi::SpeedButton#group_index
  • Phi::SpeedButton#on_click ( Phi::Control#on_click )


  • その3(Phi::RadioButton)

    いくつかの選択肢から一つだけを選択されるようにしたい時に使われます。button3.rb

    001  require 'phi'
    002  
    003  form = Phi::Form.new(:form1, 'formです')
    004  button = Phi::RadioButton.new(form, :button1, 'hoge')
    005  form.on_click = proc do
    006    if button.checked?
    007      print "checked\r\n"
    008    else
    009      print "not checked\r\n"
    010    end
    011  end
    012  form.show
    013  Phi.mainloop
    

    このスクリプトを実行すると、このような ウィンドウがあらわれます。

    解説

    4行目でPhi::RadioButtonのオブジェクトを生成しています。

    5〜11行はフォームがクリックされた時のイベントを設定しています。button.checked?( Phi::RadioButton#checked? )はボタンがチェックされている時に true を、そうでない時にfalse を返します。

    上の Phi::RadioButton#checked? の説明から分かると思いますが、フォームがクリックされた時にラジオボタンがチェックされていれば、操作卓には"checked" が表示され、ラジオボタンがチェックされていなければ"not checked"が表示されます。

    クラスやメソッド

    Phi::RadioButton
  • Phi::RadioButton.new
  • Phi::RadioButton#checked ( Phi::RadioButton#checked? )
  • author: mzh@portnet.ne.jp
    [ top ] [ prev ] [ up ] [ next ]