AHK GUI卡查看流程问题

时间:2015-04-09 20:56:00

标签: user-interface views autohotkey

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并拥有更多的控制权,例如只需按下按钮就可以转到下一个标签(面板?)

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

1 个答案:

答案 0 :(得分:2)

我假设您要为脚本禁用ctrl + tab和 ctrl + shift + tab 但仍然拥有按钮循环显示选项卡。

下面你会发现我覆盖 ctrl + ...热键,如果你的gui处于活动状态,则不允许发送该函数,否则它会发送所需的按键(这很重要,因为我们想要在其他标签应用程序中工作。)

要通过选项卡循环w / o 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

希望这有帮助!