Autoit でウィンドウを作成する際に、メニュー、ボタンやインプットボックスなど(以下コントロールと呼びます)を作成する場合、追加するコントロールが少ないなら直接コードを書いたほうが速くできます。
しかし、追加するコントロールが多い場合は、GUI作成ツールを使用したほうが効率的です。
Autoit で使用する GUI作成ツールは、「Koda」と呼びます。
Koda を使うと、とても簡単にウィンドウを作成でき、ボタンなどのコントロールの追加や配置場所が目に見えて分かるので、初心者の方にはおすすめです。
Koda の使い方がわからないという方がいるようなので、数回に分けて紹介したいと思います。
Koda を使うには、 SciTE をダウンロードする必要があります。
Koda の場所
Koda の場所は、通常は次のフォルダーにインストールされます。
64ビット OS の場合
C:\Program Files (x86)\autoit3\SciTE\Koda\
32ビット OS の場合
C:\Program Files\autoit3\SciTE\Koda\
フォルダーを開くと、「FD.exe」というファイルがあります。
これが Koda のファイル名です。
Koda を開くと次のように、ツールボックスやウィンドウが表示されます。
Koda の日本語化
次のページでダウンロード、日本語化方法を確認できますので、必要な方はご利用ください。
GUI作成ツール「koda(FormDesigner)」の日本語化
Koda の説明
①メニューバー
メニューバーからファイルを開いたり、保存や各種設定をすることが出来ます。
メニューのオプション>オプションをクリックすると、各種設定ができます。
ここでよく使う「フォームを実行」や「Undo」などのアイコンをツールバーに表示することが出来ます。
オプションの中の「コード生成」は、チェックしても反応がありませんでした。
設定しても意味がありません。
コード生成オプションを設定する際はツールから設定します。
メニューのツール>「フォーム生成の詳細オプション」をクリックすると、OnEventモードでコードを生成するかを選択できます。
メニューのツール>「フォームを実行」をクリックすると、SciTEエディタが開きます。
開いた SciTE には、コードが生成されています。
「OnEventモードでコードを生成」にチェックをせずに作成した場合のコード
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 613, 429, 431, 265)
GUISetFont(9, 400, 0, "MS Pゴシック")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
無限ループの中身を見てみましょう。
条件付き命令文の Switch文が記述されています。
OnEventモードを使用しない場合、Switch文が使用されます。
「OnEventモードでコードを生成」にチェックをして作成した場合のコード
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 613, 429, 431, 265)
GUISetFont(9, 400, 0, "MS Pゴシック")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
Sleep(100)
WEnd
無限ループの中身を見てみると、スリープしか記述されていません。
その代わり、Opt(“GUIOnEventMode”, 1) が追加されています。
GUIOnEventMode = OnEvent関数を登録する/しない
0 = (デフォルト) しない
1 = する
すべてのコントロールにイベントを生成のみにチェックした場合のコード
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 613, 429, 431, 265)
GUISetFont(9, 400, 0, "MS Pゴシック")
$Button1 = GUICtrlCreateButton("Button1", 16, 16, 153, 73)
$Button2 = GUICtrlCreateButton("Button1", 16, 96, 153, 73)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Form1
Case $Form1
Case $Form1
Case $Form1
Case $Button1
Case $Button2
EndSwitch
WEnd
何故か Case $Form1 が4つ作成されていますね。
これは後で説明します。
OnEventモードですべてのコントロールにイベントを生成のみにチェックした場合のコード
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
Opt("GUIOnEventMode", 1)
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 613, 429, 431, 265)
GUISetFont(9, 400, 0, "MS Pゴシック")
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "Form1Minimize")
GUISetOnEvent($GUI_EVENT_MAXIMIZE, "Form1Maximize")
GUISetOnEvent($GUI_EVENT_RESTORE, "Form1Restore")
$Button1 = GUICtrlCreateButton("Button1", 16, 16, 153, 73)
GUICtrlSetOnEvent(-1, "Button1Click")
$Button2 = GUICtrlCreateButton("Button1", 16, 96, 153, 73)
GUICtrlSetOnEvent(-1, "Button2Click")
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
Sleep(100)
WEnd
Func Button1Click()
EndFunc
Func Button2Click()
EndFunc
Func Form1Close()
EndFunc
Func Form1Maximize()
EndFunc
Func Form1Minimize()
EndFunc
Func Form1Restore()
EndFunc
GUISetOnEven 関数が追加されていますね。
$Button1 = GUICtrlCreateButton("Button1", 16, 16, 153, 73)
GUICtrlSetOnEvent(-1, "Button1Click")
例えば上記のボタンがクリックされた場合の動作は、次のユーザー定義関数で指定します。
Func Button1Click()
EndFunc
Case $Form1 が4つ作成されている理由
次の部分は OnEventモードで作成されたコードです。
GUISetOnEvent($GUI_EVENT_CLOSE, "Form1Close")
GUISetOnEvent($GUI_EVENT_MINIMIZE, "Form1Minimize")
GUISetOnEvent($GUI_EVENT_MAXIMIZE, "Form1Maximize")
GUISetOnEvent($GUI_EVENT_RESTORE, "Form1Restore")
指定したイベントが発生した場合のユーザー定義関数。
Func Form1Close()
ウィンドウを閉じるイベントが発生した場合
EndFunc
Func Form1Maximize()
ウィンドウを最小化するイベントが発生した場合
EndFunc
Func Form1Minimize()
ウィンドウを最大化するイベントが発生した場合
EndFunc
Func Form1Restore()
最小化したウィンドウを元に戻すイベントが発生した場合
EndFunc
これを OnEventモードではない Switch 文で書くと次のようになります。
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=
$Form1 = GUICreate("Form1", 613, 429, 431, 265)
GUISetFont(9, 400, 0, "MS Pゴシック")
$Button1 = GUICtrlCreateButton("Button1", 16, 16, 153, 73)
$Button2 = GUICtrlCreateButton("Button1", 16, 96, 153, 73)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
ウィンドウを閉じるイベントが発生した場合
Case $GUI_EVENT_MINIMIZE
ウィンドウを最小化するイベントが発生した場合
Case $GUI_EVENT_MAXIMIZE
ウィンドウを最大化するイベントが発生した場合
Case $GUI_EVENT_RESTORE
最小化したウィンドウを元に戻すイベントが発生した場合
Case $Button1
Case $Button2
EndSwitch
WEnd
Switch 文で書く場合、上記のように修正する必要があります。
長くなりますので、今回はここまでにして次回②から説明します。
コメント(降順)