「hmRb・IronRuby」のFormやGUIのコンポーネント

概要

C#のクラスと同じような形で実装することとなります。

IronRubyと大文字小文字

IronRubyの場合、.NET Flameworkのメソッドやプロパティについて、やや特殊な処理がなされているようで、
「最初の1文字目」だけは、「大文字小文字」は問われない作りようです。
(例:Showでもshowでも良い。btn.Widthでもbtn.widthでも良い)

フォームの実装

以下のようなファイルをwinform.rbとして作成してみましょう。
文字コードはutf-16(unicode)です。

# coding: utf-16

require 'mscorlib'
load_assembly "System.Windows.Forms"
load_assembly "System.Drawing"

include System::Windows::Forms
include System::Drawing

$result_from_ruby = "ボタンはまだ押していないよ"

class IronRubyForm < Form

  def initialize()
    self.Text = 'IronRubyからのフォーム'
    self.TopMost = true
    self.Size = Size.new(400, 200)
    @btn = Button.new
    @btn.Location = Point.new(50, 50)
    @btn.Width = 200
    @btn.Text = "このボタンをクリック"

    @btn.Click { |sender, e| self.btn_Click(sender, e) }

    self.Controls.Add(@btn)
  end

  def btn_Click(sender, e)
      MessageBox.Show(
            "ボタンが押されました!\n" +
            "渡ってきたファイル名は:" + $hm.Macro.Var['filename2']
      )
      $result_from_ruby = "ボタンは押されたよ"
  end

end

IronRubyForm.new.ShowDialog

呼び出すマクロ

上のファイルを呼び出すマクロを記述し、適当に秀丸に登録して、
実行してみましょう。
マクロファイルは、utf-16で保存してください。

#RB = loaddll( hidemarudir + "\\" + "hmRb.dll" );

#_ = dllfuncw(#RB, "DoFile", currentmacrodirectory + "\\winform.rb" );
// 解放
freedll(#RB);

実行イメージ

PICTURE