2016/01/13(水) [n年前の日記]
#1 [dxruby][dxrubyws] DXRubyWSでテキストボックスを表示してみる
自作キャラグラエディタを作っていた際に、困ってしまった点があって。テキストボックス(1行分のテキスト入力ができるGUI部品)を実装するかどうかで悩んだというか。
新規キャンバスを作る際に、キャンバスサイズを入力して新規作成したかったのだけど。サイズを入力するためには、テキストボックスが必要だよなと。でも、実装が絶対に大変だよなと。なので、そのへん、結局諦めてしまったのですが。しかし、DXRubyWSを使えば、そこらへんを解決することができるのかもしれない…。
ということで、DXRubyWSでテキストボックスを表示できるか試してみようと。
ググってみたら、DXRuby, DXRubyWS作者様の、はてな日記記事がヒットした。
_DXRubyWSでのアプリ開発を考える - mirichiの日記
サンプルとして書かれてるソースの中で、テキストボックスが使われてる。ありがたや。ほとんどそのまま写経させてもらって動作確認してみたり。
_textbox_test.rb
_lib/StandardGUI/textbox.rb を眺めると、
新規キャンバスを作る際に、キャンバスサイズを入力して新規作成したかったのだけど。サイズを入力するためには、テキストボックスが必要だよなと。でも、実装が絶対に大変だよなと。なので、そのへん、結局諦めてしまったのですが。しかし、DXRubyWSを使えば、そこらへんを解決することができるのかもしれない…。
ということで、DXRubyWSでテキストボックスを表示できるか試してみようと。
ググってみたら、DXRuby, DXRubyWS作者様の、はてな日記記事がヒットした。
_DXRubyWSでのアプリ開発を考える - mirichiの日記
サンプルとして書かれてるソースの中で、テキストボックスが使われてる。ありがたや。ほとんどそのまま写経させてもらって動作確認してみたり。
_textbox_test.rb
# DXRubyWSでテキストボックスを表示してみるテスト
require_relative 'lib/dxrubyws'
require_relative 'lib/standardgui'
module WS
class TextBoxWindow < WSWindow
def initialize(*args)
super
# テキストボックスを生成して追加
x, y = 16, 16
w, h = 200, 24
@txtbox = WS::WSTextBox.new(x, y, w, h)
client.add_control(@txtbox)
# テキストボックスの内容を設定
@txtbox.text = "320"
# ボタンを生成して追加
x += @txtbox.width
w, h = 80, 24
@btn = WS::WSButton.new(x, y, w, h, "Button")
client.add_control(@btn)
# ボタンが押された時の処理を登録
@btn.add_handler(:click, self.method(:on_click))
end
# ボタンが押された時の処理
def on_click(obj, tx, ty)
# メッセージボックスを生成して画面に登録
msgbox = WS::WSMessageBox.new("Message", "TextBox = #{@txtbox.text}")
WS.desktop.add_control(msgbox)
end
end
end
window = WS::TextBoxWindow.new(8, 8, 360, 96, "TextBoxWindow")
WS.desktop.add_control(window)
Window.loop do
WS.update
end
テキストボックスが表示された。ボタンを押した時の処理の中で、テキストボックスの内容を取得することもできている。_lib/StandardGUI/textbox.rb を眺めると、
WS::WSTextBox.new(tx, ty, sx, sy)の引数を渡して生成するらしい。tx, ty は表示位置だろうけど、sx, sy は何だろう? その2つを、Image.new() に渡してるから…おそらく横幅、縦幅みたいなものかしら。
[ ツッコむ ]
以上です。
