mieki256's diary



2016/01/12(火) [n年前の日記]

#3 [dxruby][dxrubyws] DXRubyWSでチェックボックスを表示してみる

DXRubyWS で、チェックボックスを表示してみたい。

_sample/minsample.rb を眺めると、WS::WSCheckBox なるものがある。名前からして、コレがチェックボックスだな…。

さらに、 _lib/StandardGUI/checkbox.rb を眺めると…。
WS::WSCheckBox.new(tx, ty, width, caption)

tx : 表示位置 x
ty : 表示位置 y
width: 横幅
caption : キャプション文字列
他にも…。 それらを踏まえてサンプルソースを書いてみる。

_checkbox_test.rb
# DXRubyWSでチェックボックスを表示してみるテスト

require_relative 'lib/dxrubyws'
require_relative 'lib/standardgui'

module WS

  # チェックボックスを表示してみるウインドウクラス
  class CheckBoxWindow < WSWindow

    # コンストラクタ。初期化処理
    def initialize(*args)
      super

      @chkbox = []

      chkbox_list = [
        "Character",
        "Fg Color",
        "Bg Color",
      ]

      x, y = 8, 8
      w, h = 0, 0
      chkbox_list.each do |caption|

        # チェックボックスを生成
        # (x, y, width, caption) を渡す
        cb = WS::WSCheckBox.new(x, y, 120, caption)

        # あらかじめチェックを入れておく
        cb.checked = true

        # クライアント領域に追加
        client.add_control(cb, :chkbox)

        # 状態が変更された時の処理を登録
        cb.add_handler(:change, self.method(:on_change))

        # 後で参照するかもしれないから一応記憶しておく
        @chkbox.push(cb)

        # 次の表示位置を求める
        y += cb.height + 4
      end
    end

    # 状態が変更された時の処理
    def on_change(obj, checked)
      puts "#{obj.caption}, #{checked}"
    end
  end
end

# ウインドウを生成して画面に登録
window = WS::CheckBoxWindow.new(8, 8, 120, 120, "CheckBoxWindow")
WS.desktop.add_control(window)

Window.loop do
  WS.update
end
checkbox_test.png
それらしく表示された。

チェックを入れたり外したりすると、on_change メソッドが呼ばれて、キャプションとチェック状態が標準出力に出力される。

以上です。

過去ログ表示

Prev - 2016/01 - Next
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project