最終更新日 2024-09-25
「hmPy・IronPython」の例題⑧ クラスを使ったFormやGUIのコンポーネント
概要
IronPythonの例題のひとつとなります。
フォームの操作
C#で利用するのと、全く同一です。
非常に典型的な作りであり、一番見慣れている形と言えるでしょう。
#PY = loaddll( hidemarudir + @"\hmPy.dll" );
#_ = dllfuncw(#PY, "DoString", R"IRONPYTHON(
import clr
clr.AddReferenceByPartialName('System.Windows.Forms')
clr.AddReferenceByPartialName('System.Drawing')
import System
import System.Windows.Forms
import System.Drawing
from System.Drawing import *
from System.Windows.Forms import *
from System.Drawing import Point
from System.Windows.Forms import Form, Button, Application
# 現在のファイル名をフォームのタイトルに使うため
curfilename = hm.Macro.Var["filename"]
variable1 = 300
class MyForm(Form):
def __init__(self):
self.Text = curfilename
self.Width = 450
self.b1 = Button()
self.b1.Width = 240
self.b1.Height = 30
self.b1.Left = 20
self.b1.Top = 30
self.b1.Text = '秀丸マクロボタン(半角アイウエオ)'
self.b1.Click += self.b1_Click
self.Controls.Add(self.b1)
def b1_Click(self, sender, earg):
self.cd = ColorDialog()
self.cd.Color = Color.Blue
self.cd.AllowFullOpen = True
self.cdret = self.cd.ShowDialog()
sender.Text = curfilename
if self.cdret == DialogResult.OK:
self.BackColor = self.cd.Color
f = MyForm()
Application.Run(f)
hm.Macro.Var["$recieve_f"] = f.ToString() # フォームを文字列化したものを返す。
f.Show()
)IRONPYTHON"
);
// IronPython内部のクラスインスタンスをそのまま文字列化したようなものが表示される。
message($recieve_f);
freedll(#PY);