Create  Edit  Diff  Phillro Industries  Index  Search  Changes  History  Source  RSS  Note  wikifarm  Login

tut-tut_button

Author: NISHIO Mizuho

ボタン

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

その1 (Phi::Button)

典型的なボタンです。 $(Apollo)/sample/tutorial/button1.rb

   1|require 'phi'
   2|
   3|form = Phi::Form.new(:form1, 'formです')
   4|button = Phi::Button.new(form, :button1, 'hoge')
   5|button.on_click = proc do
   6|  t = Time.now.to_s
   7|  print t, "\r\n"
   8|  button.caption = t
   9|end
  10|form.show
  11|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

その2 (Phi::SpeedButton?)

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

   1|require 'phi'
   2|
   3|form = Phi::Form.new(:form1, 'formです')
   4|button = Phi::SpeedButton.new(form, :button1, 'hoge')
   5|button.flat = true
   6|button.allow_all_up = true
   7|button.group_index = 1
   8|button.on_click = proc do
   9|  if button.down?
  10|    button.caption = '1'
  11|  else
  12|    button.caption = '2'
  13|  end
  14|end
  15|form.show
  16|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

その3 (Phi::RadioButton?)

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

   1|require 'phi'
   2|
   3|form = Phi::Form.new(:form1, 'formです')
   4|button = Phi::RadioButton.new(form, :button1, 'hoge')
   5|form.on_click = proc do
   6|  if button.checked?
   7|    print "checked\r\n"
   8|  else
   9|    print "not checked\r\n"
  10|  end
  11|end
  12|form.show
  13|Phi.mainloop

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

解説

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

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

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

クラスやメソッド

Phi::RadioButton

Last modified:2004/11/26 05:56:56
Keyword(s):
References:[tut-tut_index]