hakeの日記

Windows環境でプログラミングの勉強をしています。

VisualuRubyを試す

というわけで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上のメインとなる部分がクラス定義になっていないのがちょっと気持ち悪いなぁ。多分簡単に書き換えは出来ると思いますけど、わからないのでとりあえずこのまま。

追記

 メイン部分をクラス定義にする書き方も覚えました。詳細は、vrubyカテゴリにて

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