AHK 图形用户界面卡查看流问题


Gui, 1:Add, Tab, x-11 y-21 w493 h405 vCardTabs, Tab1|Tab2|Tab3
Gui, Tab, Tab1 
    Gui, 1:Add, Text,, This is tab 1
    Gui, 1:Add, Button, x352 y330 w100 h30 , Next
Gui, Tab, Tab2
    Gui, 1:Add, Text,, This is tab 2
    Gui, 1:Add, Button, x352 y330 w100 h30 , Next
    Gui, 1:Add, Button, x242 y330 w90 h30 , Back
Gui, Tab, Tab3  
    Gui, 1:Add, Text,, This is tab 3
    Gui, 1:Add, Button, x242 y330 w90 h30 , Back
Gui, 1:Show, x-1246 y259 h379 w479, Card view gui
Return
1GuiClose:
ExitApp
ButtonBack:
Send ^+{TAB}
return
ButtonNext:
Send ^{TAB}
return

我已经在 AHK 中创建了一个卡片视图布局,但是我遇到了一个问题,我使用了一种创建一组选项卡的方法,并在可查看程序窗口之外的用户视图中隐藏选项卡,但是用户可以向窗口发送命令以循环浏览选项卡,例如 Control + 选项卡

我想知道是否有更好的方法来形成这种类型的 GUI 并拥有更多控制权,例如仅通过按下按钮传递到下一个选项卡(面板?

如果我错过了某种类型的面板视图,可以添加以避免此问题,这将对我有很大帮助,谢谢

我假设您想为脚本禁用 ctrl+tab 和 ctrl+shift+tab,但仍然让按钮在选项卡中循环。

下面你会发现我覆盖了ctrl+...热键,如果您的 GUI 处于活动状态,则不允许发送该功能,否则它会发送所需的击键(很重要,因为我们希望它在其他选项卡式应用程序中工作(。

为了在没有ctrl + 的情况下循环浏览选项卡...热键,我得到当前所选选项卡的名称,并使用GuiControl,选择...以选择下一个/上一个选项卡。

最后,在脚本结束时,我演示了您可以命名您的 guis 并将它们设置为默认值。

; you can name your guis vs using numbers
Gui, MyCustomName_:Default ; setting as default will tell all controls below it to use that gui
Gui, Add, Tab, w493 h405 vCardTabs, Tab1|Tab2|Tab3
Gui, Tab, Tab1 
    Gui, Add, Text,, This is tab 1
    Gui, Add, Button, x352 y330 w100 h30 , Next
Gui, Tab, Tab2
    Gui, Add, Text,, This is tab 2
    Gui, Add, Button, x352 y330 w100 h30 , Next
    Gui, Add, Button, x242 y330 w90 h30 , Back
Gui, Tab, Tab3  
    Gui, Add, Text,, This is tab 3
    Gui, Add, Button, x242 y330 w90 h30 , Back
Gui, Show, y259 h379 w479, Card view gui
return
MyCustomName_GuiClose:
ExitApp
$^tab::
{
    IfWinNotActive, Card view gui
        SendInput, ^{tab}
    return
}
$^+tab::
{
    IfWinNotActive, Card view gui
        SendInput, ^+{tab}
    return
}
ButtonBack:
GuiControlGet, name,, CardTabs
if (name == "Tab2") {
    GuiControl, Choose, CardTabs, Tab1
} else if (name == "Tab3") {
    GuiControl, Choose, CardTabs, Tab2
}
return
ButtonNext:
GuiControlGet, name,, CardTabs
if (name == "Tab1") {
    GuiControl, Choose, CardTabs, Tab2
} else if (name == "Tab2") {
    GuiControl, Choose, CardTabs, Tab3
}
return

希望这有帮助!

最新更新