新規作成  編集  Ruby-GNOME2 Project Website  ページ一覧  検索  更新履歴  編集履歴  RSS  Back  ログイン

gtk2-tut-adjustment-howto 差分 - Ruby-GNOME2 Project Website

  • 最後の更新で追加された部分はこのように表示します。
  • 最後の更新で削除された部分はこのように表示します。

= アジャストメントを簡単に使う方法

調節可能なウィジェットは,
* 任意の数値を扱うもの
* 特定の単位の値を要求して使用するもの
に大雑把に分類することができる.

== 任意の数値を扱うグループ
このグループには((<レンジウィジェット|gtk2-tut-range>))(
((<スクロールバー|gtk2-tut-scrollbar>)),((<スケール|gtk2-tut-scale>)),((<プログレスバー|gtk2-tut-progressbar>)),および((<スピンボタン|gtk2-tut-spinbutton>))
)が含まれる.
これらのウィジェットは全て,一般にユーザーによってマウスあるいはキーボードで「((*直接調節される*))」ウィジェットだ.
これらのウィジェットではvalueが取り得る値の範囲はlowerからupperで,
デフォルトではアジャスメントのvalueを変更するだけである.

== 特定の単位の値を要求して使用するもの
もう一方のグループには,テキストウィジェット,((<ビューポート|gtk2-tut-viewport>)),
複合リストウィジェット,そして((<スクロールドウィンドウ>>)が含まれる.
これらのウィジェットは全て,ピクセル値を調整値として使用する.
また,これらのウィジェットは全て一般的に((<スクロールバー>))を用いて「((*間接的に調整される*))」ウィジェットでもある.


== アジャストメントの生成
アジャストメントを利用するウィジェットは全て
それ自身でアジャストメントを作成するか,
または渡されたアジャストメントを利用することが可能であるが,
一般的にはこの種のウィジェット自身にアジャストメントを生成させたいだろう.

通常,これらのウィジェットは,
value以外のどのような調整値を渡しても結局全ての値をオーバーライドしてしまい,
その結果は一般に不定(undefined)である.
((-つまり,その挙動を調べるためにソースコードを読む必要があり,そしてそれはウィジェットごとに異なるかもしれないということである.-))

さて,多分読者はこう考えているだろう.
テキストウィジェットや((<ビューポート>))はアジャストメントのvalue以外の値を設定しようとし,
((<スクロールバー>))がvalueのみを設定するというのなら,
もし((<スクロールバー|gtk2-tut-scrollbar>))と((<ビューポート|gtk2-tut-viewport>))の間でアジャストメントオブジェクトを共有した場合,
((<スクロールバー|gtk2-tut-scrollbar>))を操作すると自動的に((<ビューポート|gtk2-tut-viewport>))を調節するのだろうか,と.

もちろんその通りである! 次のようにするだけだ:

  # 内部でアジャストメントを作成
  viewport = Gtk::Viewport.new(nil, nil)
  
  # そして,新しく作られたアジャストメントをスクロールバーに使う
  vscrollbar = Gtk::VScrollbar.new(viewport.vadjustment)