「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);
    

    実行イメージ