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 メソッドが呼ばれて、キャプションとチェック状態が標準出力に出力される。
[ ツッコむ ]
以上です。
