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

tut-tut_pos_size

Author: NISHIO Mizuho

コントロールの配置とサイズ その1

今まではボタンやラベルを一つだけ使いましたが、今回は複数のコントロールを配置したり、配置したコントロールの大きさを変更したりしてみます。

その1(大きさや位置)

$(Apollo)/sample/tutorial/pos_size1.rb

   1|require 'phi'
   2|
   3|form = Phi::Form.new(:form1, 'formです')
   4|button1 = Phi::Button.new(form, :button1, 'hoge')
   5|button1.width = 200
   6|button1.height = 100
   7|button1.left = 15
   8|button1.top = 15
   9|
  10|button2 = Phi::Button.new(form, :button2, 'foo')
  11|button2.width = 30
  12|button2.height = 30
  13|button2.left = button1.left + button1.width
  14|button2.top = button1.top + button1.height
  15|
  16|form.show
  17|Phi.mainloop
  18|

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

解説

4行目で一つ目のボタンが生成され、5〜8行目でその大きさや位置を設定しています。この目的で使用されているのが下の4つの属性です。

ここで注意することはボタンの横と縦の座標はフォームの一番左上が0になるということです。また、横の座標が大きくなるとボタンは右に、縦の座標が大きくなると、ボタンは下に配置されるようになります。

10行目では二つ目のボタンが生成され、11〜14行目でその大きさや位置を設定しています。11と12行目は一つ目のボタンと同じことをしているので、説明は省きます。13行目では一つ目のボタンの横の座標と横幅の和(言いかえれば一つ目のボタンの右端)を二つ目のボタンの左端の座標に設定しています。同じように14行目では一つ目のボタンの下の端を二つ目のボタンの上端の座標に設定しています。

クラスとメソッド

Phi::Button

その2(alignとanchors)

$(Apollo)/sample/tutorial/pos_size2.rb

   1|require 'phi'
   2|
   3|form = Phi::Form.new(:form1, 'formです')
   4|button1 = Phi::Button.new(form, :button1, 'hoge')
   5|button1.align = Phi::AL_LEFT
   6|button1.width = 50
   7|
   8|button2 = Phi::Button.new(form, :button2, 'foo')
   9|button2.width = 30
  10|button2.height = 30
  11|button2.anchors = [Phi::AK_RIGHT, Phi::AK_TOP]
  12|button2.left = form.left - 100
  13|button2.top = 30
  14|
  15|form.show
  16|Phi.mainloop
  17|

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

解説

4行目で一つ目のボタンが生成され、4〜6行目でその大きさや位置を設定しています。5行目は一つ目のボタンがフォームの左端にぴったりくっつくように配置するための設定です。これには button1.align( Phi::Button#align )が使われていて、 Phi::Button#align には下の5つを代入することができます。

    • Phi::AL_CLIENT(親コントロールいっぱいに広がる)
    • Phi::AL_TOP(親コントロールの上の端にぴったりとくっつくように広がる)
    • Phi::AL_LEFT(親コントロールの左端にぴったりとくっつくように広がる)
    • Phi::AL_RIGHT(親コントロールの右端にぴったりとくっつくように広がる)
    • Phi::AL_BOTTOM(親コントロールの下の端にぴったりとくっつくように広がる)

Phi::Control#align を設定した場合、いくつかの属性やメソッドは無視されます。例えば、今回の場合だと button1.height = 30 をスクリプトに加えても、一つ目のボタンの縦幅が30になることはありません。

8行目で二つ目のボタンが生成され、9〜13行目でその大きさや位置を設定しています。11行目以外は分かると思うので、この行だけ説明します。

button2.anchors( Phi::Button#anchors ) は親と子のコントロールの位置関係を保つための属性です。試しにpos_size2.rbを起動して、フォームのサイズを変更してみてください。フォームのサイズが変更されても、fooと書かれたボタンは常にフォームの右上にあることがわかると思います。これはbutton2.anchorsに [Phi::AK_RIGHT, Phi::AK_TOP] が代入されたことで子であるボタンと親であるフォームの右と上の相対位置が常に同じになるように設定されたからです。 Phi::Button#anchors に代入できる値は下の4つを組み合わせたもの( Array のオブジェクト )です。

    • Phi::AK_TOP(親コントロールの上の端との位置関係を保持する)
    • Phi::AK_LEFT(親コントロールの左端との位置関係を保持する)
    • Phi::AK_RIGHT(親コントロールの右端との位置関係を保持する)
    • Phi::AK_BOTTOM(親コントロールの下の端との位置関係を保持する)

クラスとメソッド

Rubyの組み込みクラス

  • Array

Phi::Button

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