【问题标题】:AHK GUI card view flow issueAHK GUI卡查看流程问题
【发布时间】:2018-02-21 23:21:05
【问题描述】:
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 + tab

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

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

【问题讨论】:

  • 所以,如果我对您的理解正确,您想防止用户使用 ^tab ^+tab 循环浏览标签?

标签: user-interface views autohotkey


【解决方案1】:

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

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

对于不带 ctrl+... 热键的选项卡循环,我获取当前选定选项卡的名称,并使用 GuiControl,Choose... 选择下一个/上一个选项卡.

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

; 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

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-04
    • 1970-01-01
    • 2015-08-22
    • 2019-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多