#!ruby # -*- mode: ruby; coding: utf-8 -*- # Last updated: <2016/01/12 20:39:20 +0900> # # 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