Autoit 入門書

Autoit|GUI作成ツール(Koda)でウィンドウを作成する – その1

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 = する

すべてのコントロールにイベントを生成のみにチェックした場合のコード

ボタンを2つ追加した
#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 文で書く場合、上記のように修正する必要があります。

長くなりますので、今回はここまでにして次回②から説明します。

コメント(降順)

タイトルとURLをコピーしました