VisualuRubyを試す
というわけでVisualuRubyを使ってみる。
- VisualuRuby計画(仮称) - 本家サイト
- COM Meets Ruby - ActiveScriptRuby入手
- GeSource - VisualuRuby概要や環境構築
- 雪見酒のホームページ - Rubyもの - Formdesigner for VisualuRuby、HTML help for VisualuRuby
既にRubyがインストールされている場合は本家サイトのライブラリだけを入れれば良いみたいですが、まだRubyをインストールしていない場合には、ActiveScriptRubyのmsiを入手してインストールした方が丸ごと環境がインストールされる様なので簡単そうです。今回はこちらを使用してインストールしました。VisualuRubyのGUIデザイン用にFormdesignerというのがあったので一緒にインストールしてみました、手順はファイルを展開してFormDesigner.rbを実行です。
Formdesignerの使用方法は基本的にFormにボタン等の部品を配置していく作業で他のWindows系の開発環境と同じ要領ですね。例えばhelloというプロジェクトを保存するとhello.rb、_frm_hello.rbというソースファイルが作成されて、GUIの定義はfrm_hello.rbの方に記述されています。再度FormdesignerのメニューのOpenFormから_frm_hello.rbを開くとGUIのFormが表示されます。ここで各部品を選択するとInspectメニューがその部品のプロパティ?に変化するので、ここでアトリビュートを変更を行います。使用可能なイベントやメソッドはそれぞれのタブにリストアップされていて選択するとクリップボードにコピーされるので、別途エディタで開いたhello.rbにペーストして処理を記述していくような手順になるみたいです。
そんな要領で例によってボタンを押すと文字を表示するプログラムを作ってみました。自分でソースに追加したのはdef btn_clickedの部分3行だけで、後はFormdesignerの自動生成です。
初期設定はconstructというメソッドに記述されるようです。addControlの第二引数(btn,txt)はFormdesigner各部品のInspectのnameで付けた値で、これが各部品を示すインスタンス変数になる様です。hello.rb上のメインとなる部分がクラス定義になっていないのがちょっと気持ち悪いなぁ。多分簡単に書き換えは出来ると思いますけど、わからないのでとりあえずこのまま。
hello.rb
#! ruby -Ks require 'vr/vruby' require '_frm_hello.rb' module Frm_Main def self_created end def btn_clicked # ボタンクリック時の処理 @txt.text=@txt.text + "Hello World\n" end end VRLocalScreen.start Frm_Main
_frm_hello.rb
## CAUTION!! ## This code was automagically ;-) created by FormDesigner. # NEVER modify manualy -- otherwise, you'll have a terrible experience. require 'vr/vruby' require 'vr/vrcontrol' module Frm_Main def _Main_init $_Main_fonts=[ @screen.factory.newfont('MS Pゴシック',-16,0,4,0,0,0,50,128) # フォント指定 ] self.caption = 'Hello' self.move(137,124,150,150) addControl(VRButton,'btn',"Push",0,88,144,40,1342177280) # ボタン追加 addControl(VRText,'txt',"",0,0,144,88,1344274500) # テキストエリア追加 @txt.setFont($_Main_fonts[0]) end def construct _Main_init end end #VRLocalScreen.start Frm_Main