mieki256's diary



2016/01/13(水) [n年前の日記]

#1 [dxruby][dxrubyws] DXRubyWSでテキストボックスを表示してみる

自作キャラグラエディタを作っていた際に、困ってしまった点があって。テキストボックス(1行分のテキスト入力ができるGUI部品)を実装するかどうかで悩んだというか。

新規キャンバスを作る際に、キャンバスサイズを入力して新規作成したかったのだけど。サイズを入力するためには、テキストボックスが必要だよなと。でも、実装が絶対に大変だよなと。なので、そのへん、結局諦めてしまったのですが。しかし、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
textbox_test.png
テキストボックスが表示された。ボタンを押した時の処理の中で、テキストボックスの内容を取得することもできている。

_lib/StandardGUI/textbox.rb を眺めると、
WS::WSTextBox.new(tx, ty, sx, sy)
の引数を渡して生成するらしい。tx, ty は表示位置だろうけど、sx, sy は何だろう? その2つを、Image.new() に渡してるから…おそらく横幅、縦幅みたいなものかしら。

以上です。

過去ログ表示

Prev - 2016/01 - Next
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

カテゴリで表示

検索機能は Namazu for hns で提供されています。(詳細指定/ヘルプ


注意: 現在使用の日記自動生成システムは Version 2.19.6 です。
公開されている日記自動生成システムは Version 2.19.5 です。

Powered by hns-2.19.6, HyperNikkiSystem Project