サンプルコード

Autoit|GUIメニュー、ラジオボタン、チェックボックス、ボタンの色付けのサンプルコード2

今回は、Autoit GUIメニュー、ラジオボタン、チェックボックス、ボタンの色付けのサンプルコード1 で紹介したサンプルコードを違う書き方で、まったく同じ動作をするサンプルコードを紹介します。

サンプルコード

$Radio1 = GUICtrlCreateRadio("上", 24, 88, 113, 17) $Radio2 = GUICtrlCreateRadio("下", 184, 88, 113, 17) $Radio3 = GUICtrlCreateRadio("左", 24, 120, 113, 17) $Radio4 = GUICtrlCreateRadio("右", 184, 120, 113, 17)

上のコードは次のように、一次元配列 を使って書くこともできます。

Global $Radio[4] Global $Location[4] = ["上", "下", "左", "右"] Global $LeftTop[8] = [24, 184, 24, 184, 88, 88, 120, 120] For $i = 0 To 3 $Radio[$i] = GUICtrlCreateRadio($Location[$i], $LeftTop[$i], $LeftTop[$i + 4], 113, 17) Next

コードが違っても、動作は同じで、ラジオボタンを4つ作成します。

配列を作るには、変数の宣言が必要になります。

宣言には、Dim / Global / Local の 3つのキーワードのどれかを使用します。

主に使うのは Global と Local です。

Globalグローバル変数の作成
Localローカル/関数内変数を作成

配列を使用すると、長いコードを短くすることができます。

While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Button1 ; ----------------------------------------チェックボックスの判断 If GUICtrlRead($Radio1) = $GUI_CHECKED Then MsgBox(0, _CheckboxCheck(), '"上" が選択されています。', 0, $Form1) ElseIf GUICtrlRead($Radio2) = $GUI_CHECKED Then MsgBox(0, _CheckboxCheck(), '"下" が選択されています。', 0, $Form1) ElseIf GUICtrlRead($Radio3) = $GUI_CHECKED Then MsgBox(0, _CheckboxCheck(), '"左" が選択されています。', 0, $Form1) ElseIf GUICtrlRead($Radio4) = $GUI_CHECKED Then MsgBox(0, _CheckboxCheck(), '"右" が選択されています。', 0, $Form1) Else MsgBox(16, _CheckboxCheck(), "何も選択されていません", 0, $Form1) EndIf ; ------------------------------------チェックボックスの判断 終了 Case $MenuItem2; 終了 Exit Case $MenuItem4; WEBサイトへ ShellExecute("https://autoit.windows-waza.com/") Case $MenuItem5 MsgBox(0, "バージョン情報", "1.0.0.0", 0, $Form1); バージョン情報 EndSwitch WEnd

上のコードは、次のように書くことができます。

While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE, $MenuItem2; プロフラムを閉じる Exit Case $Button1 For $i = 0 To 4; チェックボックスの判断 If $i = 4 Then MsgBox(16, _CheckboxCheck(), "何も選択されていません", 0, $Form1) ExitLoop EndIf Switch GUICtrlRead($Radio[$i]); $Location[4] = ["上", "下", "左", "右"] Case $GUI_CHECKED MsgBox(0, _CheckboxCheck(), '"' & $Location[$i] & '" が選択されています。', 0, $Form1) ExitLoop EndSwitch Next; -----チェックボックスの判断 終了 Case $MenuItem4 ShellExecute("https://autoit.windows-waza.com/"); WEBサイトへ Case $MenuItem5 MsgBox(0, "バージョン情報", "1.0.0.0", 0, $Form1); バージョン情報 EndSwitch WEnd

Case $GUI_EVENT_CLOSE, $MenuItem2 の部分を見ると、変数が 2つ指定されているのが分かります。

このように、条件つき命令文の「Switch」では複数の条件を指定することができます。

If $i = 4 Then (変数 $i が 4ならば) でチェックボックスが 1つもチェックされていないことを判断しています。

Switch GUICtrlRead($Radio[$i])
Case $GUI_CHECKED
MsgBox(0, _CheckboxCheck(), ‘”‘ & $Location[$i] & ‘” が選択されています。’, 0, $Form1)
ExitLoop
EndSwitch

変数 $i が 4以外なら、$i = 0 から始まり、一回ループをするごとに変数 $i の値は1増えていきます。

  • For $i = 0 To 4

配列 $Location[4] = [“上”, “下”, “左”, “右”] で指定した配列は次のように書いても構いません。

Global $Location[4]

$Location[0] = “上”

$Location[1] = “下”

$Location[2] = “右”

$Location[3] = “左”

一回目のループは $Location[0] 、2回目は $Location[1] 、3回目は $Location[2] 、4回目は $Location[3] となります。

配列の最初は「1」ではなく、「0」から始まるということを覚えておきましょう。

実際にサンプルコードをコピーして動作を確認してみてください。

サンプルコードを読み、各コードの場所にも注意してみましょう。

例えば、チェックボックスが 1つもチェックされていないことを判断しているコードは、ループの最初に記述していますが、もしループの最後に記述してしまうとエラーが出て実行できなくなります。

一度試してみると理解できると思います。

コメント