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() に渡してるから…おそらく横幅、縦幅みたいなものかしら。
[ ツッコむ ]
以上です。