【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つもチェックされていないことを判断しているコードは、ループの最初に記述していますが、もしループの最後に記述してしまうとエラーが出て実行できなくなります。

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

  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


目次