2016/01/12(火) [n年前の日記]
#3 [dxruby][dxrubyws] DXRubyWSでチェックボックスを表示してみる
DXRubyWS で、チェックボックスを表示してみたい。
_sample/minsample.rb を眺めると、WS::WSCheckBox なるものがある。名前からして、コレがチェックボックスだな…。
さらに、 _lib/StandardGUI/checkbox.rb を眺めると…。
_checkbox_test.rb
チェックを入れたり外したりすると、on_change メソッドが呼ばれて、キャプションとチェック状態が標準出力に出力される。
_sample/minsample.rb を眺めると、WS::WSCheckBox なるものがある。名前からして、コレがチェックボックスだな…。
さらに、 _lib/StandardGUI/checkbox.rb を眺めると…。
WS::WSCheckBox.new(tx, ty, width, caption) tx : 表示位置 x ty : 表示位置 y width: 横幅 caption : キャプション文字列他にも…。
- checked てのが、チェックされてるかされてないかを保持している変数らしい。
- 状態が変化すると(チェックが入れられたり外されたりすると)、:change というシグナルが来るっぽい。
_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それらしく表示された。
チェックを入れたり外したりすると、on_change メソッドが呼ばれて、キャプションとチェック状態が標準出力に出力される。
[ ツッコむ ]
以上です。