AHK v2:选择列表GUI的封装

问题描述 投票:0回答:1

我一直致力于将 AutoHotkey 脚本从 v1 转换为 v2,并且在封装选择列表 GUI 方面遇到了挑战。我花了几个小时在网上寻找解决方案,但一直找不到。 AHK v2 帮助文件虽然很全面,但对初学者来说不太友好,我正在努力寻找正确的语法。

我面临的具体问题涉及将 GUI 创建代码封装在函数中,并且我想避免使用全局变量。我想调用此函数,从列表中选择一个项目,然后将该项目返回给调用者。

我相信我不是唯一一个努力从 AHK v1 过渡到 AHK v2 的人。我也很惊讶 AutoHotkey v2 没有标签。

autohotkey ahk2
1个回答
0
投票
#Requires AutoHotkey v2.0
#SingleInstance Force


; Driver Code
ItemList := ["Item 1", "Item 2", "Item 3", "Item 4", "Item 5"]
Loop
{
    item := "You selected " OpenListSelectionGui(ItemList, "Select an Item")
    info := "Do you want to continue the tests?"
    test := MsgBox(item "`n`n" info, "AutoHotkey v2 GUI Testing", "OKCancel")
    if (test == "Cancel")
        ExitApp
}

; GUI Encapsulation
OpenListSelectionGui(pList, pGuiTitle)
{
    SelectedValue := ""
    ListGui := Gui("ToolWindow", pGuiTitle)
    ListGui.OnEvent("Close", Gui_Close)
    ListCtrl := ListGui.AddListBox("Choose1 r5", pList)
    ListGui.AddButton("Default", "Select").OnEvent("Click", Gui_Close)
    ListGui.Show()
    
    While (!SelectedValue)
    {
        Sleep 222
    }

    Return SelectedValue

    Gui_Close(*)
    {
        SelectedValue := ListCtrl.Text
        ListGui.Destroy
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.