GUI onde os botões abrem submenus para textos personalizados Topic is solved

Tire suas dúvidas sobre programação em AutoHotkey

Moderator: Gio

cunhaww

GUI onde os botões abrem submenus para textos personalizados  Topic is solved

Post by cunhaww » 23 Jan 2024, 13:45

Boa tarde pessoal, preciso de um Help. :wave:

Estou precisando de um Script pelo AHK onde eu abra um GUI de navegação e cada botão dentro da GUI quando clicado se expande para submenus com textos personalizados (para e-mails, respostas aos usuários etc...).
Atualmente estou utilizando um Script que quando clico SHIFT + SCROLL DOWN meus menus com submenus se abrem, e ao clicar a resposta é escrita em qualquer .txt com o comando SEND... porém a ideia de ter uma GUI com os botões deixaria tudo mais organizado para uma quantidade maior de botões com menus e submenus. Poderiam me ajudar?

Segue Script que estou utilizando atualmente e que gostaria de passar para uma GUI com botões. (Contém Lorem Ipsum nos locais de texto)

Code: Select all

#SingleInstance,Force

Menu, MyMainMenu, Add, E-mail padrão, MenuHandler 
Menu, MySubMenu1, Add, Cotação, SubMenu1Label 
Menu, MySubMenu1, Add, Orçamento, SubMenu1Label
Menu, MySubMenu1, Add, Fidelidade, SubMenu1Label
Menu, MySubMenu1, Add, Finalizar vendas, SubMenu1Label
Menu, MySubMenu1, Add, Nossos descontos, SubMenu1Label
Menu, MyMainMenu, Add, E-mail padrão, :MySubMenu1

Menu, MyMainMenu, Add, Problemas, MenuHandler
Menu, MySubMenu2, Add, Bios Problem, SubMenu2Label
Menu, MySubMenu2, Add, Wifi lento, SubMenu2Label
Menu, MySubMenu2, Add, Acesso rápido, SubMenu2Label
Menu, MyMainMenu, Add, Problemas, :MySubMenu2

return

+WheelDown::
Menu, MyMainMenu, Show
return

MenuHandler:
return

SubMenu1Label:
If (A_ThisMenuItemPos = 1) {
	send, Lorem ipsum dolor sit amet, consectetur adipiscing elit. In placerat suscipit lacus non rutrum. 
} else if (A_ThisMenuItemPos = 2) {
	send, Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae.
}
 else if (A_ThisMenuItemPos = 3) {
	send, Etiam dictum congue nisl. Quisque augue ex, mollis sit amet mollis et, gravida non tellus. 
}
else if (A_ThisMenuItemPos = 4) {
	send, Nunc sagittis nec nisl vel imperdiet. Mauris nec hendrerit lacus. 
	}
else if (A_ThisMenuItemPos = 5) {
	send, isus vitae consectetur efficitur, neque tortor varius purus, a efficitur enim nibh eu erat.
	}

return

SubMenu2Label:
If (A_ThisMenuItemPos = 1) {
	send, Lorem ipsum dolor sit amet, consectetur adipiscing elit.
} 
else if (A_ThisMenuItemPos = 2) {
	send, Lorem ipsum dolor sit amet, consectetur adipiscing elit.
}
else if (A_ThisMenuItemPos = 3) {
	send, orem ipsum dolor sit amet, consectetur adipiscing elit. 
}

return

RPM
Posts: 4
Joined: 01 Jun 2016, 17:51

Re: GUI onde os botões abrem submenus para textos personalizados

Post by RPM » 25 Jan 2024, 23:07

Olá! O código refatorado a seguir se aproxima do que deseja. Ocorre que ao selecionar um item do menu a própria interface gráfica receberia o texto, por ser a janela ativa. Pra contornar, inseri um Edit que exibe o texto selecionado e uma hotstring "/7/" para efetuar o disparo do texto.

Code: Select all

#SingleInstance, Force

Menu, MySubMenu1, Add, Cotação, MenuLabel
Menu, MySubMenu1, Add, Orçamento, MenuLabel
Menu, MySubMenu1, Add, Fidelidade, MenuLabel
Menu, MySubMenu1, Add, Finalizar vendas, MenuLabel
Menu, MySubMenu1, Add, Nossos descontos, MenuLabel

Menu, MySubMenu2, Add, Bios Problem, MenuLabel
Menu, MySubMenu2, Add, Wifi lento, MenuLabel
Menu, MySubMenu2, Add, Acesso rápido, MenuLabel

Gui, Font, s10, Consolas
Gui, Add, Button, w120 gExibirMenu, E-mail padrão
Gui, Add, Button, w120 gExibirMenu, Problemas

Gui, Add, Edit, r5 w500 vTexto +ReadOnly

Gui, Font, s12 cMaroon bold, Consolas
Gui, Add, Text, , Hotstring: /7/

Gui, Show, w800 h600
return

GuiClose:
ExitApp

ExibirMenu(){
	Switch A_GuiControl
	{
	Case "E-mail padrão":
		Menu, MySubMenu1, Show
	Case "Problemas":
		Menu, MySubMenu2, Show
	}
}

MenuLabel:
	Gui, Submit, NoHide
	Switch A_ThisMenuItem
	{
	Case "Cotação":
		GuiControl, , Texto, Cotação Lorem ipsum dolor sit amet, consectetur adipiscing elit. In placerat suscipit lacus non rutrum.
	Case "Orçamento":
		GuiControl, , Texto, Orçamento Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae.
	Case "Fidelidade":
		GuiControl, , Texto, Fidelidade Etiam dictum congue nisl. Quisque augue ex, mollis sit amet mollis et, gravida non tellus.
	Case "Finalizar vendas":
		GuiControl, , Texto, Finalizar vendas Nunc sagittis nec nisl vel imperdiet. Mauris nec hendrerit lacus.
	Case "Nossos descontos":
		GuiControl, , Texto, Nossos descontos isus vitae consectetur efficitur, neque tortor varius purus, a efficitur enim nibh eu erat.
	Case "Bios Problem":
		GuiControl, , Texto, Bios Problem Lorem ipsum dolor sit amet, consectetur adipiscing elit.
	Case "Wifi lento":
		GuiControl, , Texto, Wifi lento Lorem ipsum dolor sit amet, consectetur adipiscing elit.
	Case "Acesso rápido":
		GuiControl, , Texto, Acesso rápido Lorem ipsum dolor sit amet, consectetur adipiscing elit.
	}
return

; hotstring - digitar barra sete barra para enviar o texto selecionado
:*:/7/::
Gui, Submit, NoHide
SendInput, % Texto
return

cunhaww

Re: GUI onde os botões abrem submenus para textos personalizados

Post by cunhaww » 26 Jan 2024, 07:59

Realmente muito bom :D só isso ja me ajudou bastante pois ainda não conheço muito em relação a GUI, muito obrigado mesmo. Vou tentar desenvolver algo utilizando um TreeView que ao clicar ele digite automaticamente para o ultimo local .txt que deixei o mouse selecionado. Isso apenas para facilitar entre as operações e diminuir cliques e erros, acho que no caso de utilizar um TreeView não seria necessário uma HotString para digitar novamente o texto no local desejado (Vou tentar)
Caso alguém saiba como realizar isso e queira compartilhar o conhecimento eu agradeceria demais e aprenderia também :beer: . Obrigado pela ajuda pessoal :bravo:


[Mod edit: Removed the quote tags around your reply that indicates incorrectly that it was a quote by RPM.]

User avatar
Encrypton
Posts: 24
Joined: 10 Feb 2022, 15:21

Re: GUI onde os botões abrem submenus para textos personalizados

Post by Encrypton » 18 Feb 2024, 07:01

Code: Select all

#SingleInstance, Force

Gui, Add, Button, x10 y10 w120 h30 gMenu1, E-mail padrão
Gui, Add, Button, x10 y50 w120 h30 gMenu2, Problemas
return

Menu1:
Gui, Add, Button, x140 y10 w120 h30 gSubMenu1_1, Cotação
Gui, Add, Button, x140 y50 w120 h30 gSubMenu1_2, Orçamento
Gui, Add, Button, x140 y90 w120 h30 gSubMenu1_3, Fidelidade
Gui, Add, Button, x140 y130 w120 h30 gSubMenu1_4, Finalizar vendas
Gui, Add, Button, x140 y170 w120 h30 gSubMenu1_5, Nossos descontos
return

Menu2:
Gui, Add, Button, x140 y10 w120 h30 gSubMenu2_1, Bios Problem
Gui, Add, Button, x140 y50 w120 h30 gSubMenu2_2, Wifi lento
Gui, Add, Button, x140 y90 w120 h30 gSubMenu2_3, Acesso rápido
return

SubMenu1_1:
SendInput, Lorem ipsum dolor sit amet, consectetur adipiscing elit. In placerat suscipit lacus non rutrum.
return

SubMenu1_2:
SendInput, Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae.
return

SubMenu1_3:
SendInput, Etiam dictum congue nisl. Quisque augue ex, mollis sit amet mollis et, gravida non tellus.
return

SubMenu1_4:
SendInput, Nunc sagittis nec nisl vel imperdiet. Mauris nec hendrerit lacus.
return

SubMenu1_5:
SendInput, Cras vitae consectetur efficitur, neque tortor varius purus, a efficitur enim nibh eu erat.
return

SubMenu2_1:
SendInput, Lorem ipsum dolor sit amet, consectetur adipiscing elit.
return

SubMenu2_2:
SendInput, Lorem ipsum dolor sit amet, consectetur adipiscing elit.
return

SubMenu2_3:
SendInput, Lorem ipsum dolor sit amet, consectetur adipiscing elit.
return

GuiClose:
ExitApp
return

GuiEscape:
ExitApp
return

cunhaww

Re: GUI onde os botões abrem submenus para textos personalizados

Post by cunhaww » 23 Feb 2024, 06:01

Encrypton wrote:
18 Feb 2024, 07:01

Code: Select all

#SingleInstance, Force

Gui, Add, Button, x10 y10 w120 h30 gMenu1, E-mail padrão
Gui, Add, Button, x10 y50 w120 h30 gMenu2, Problemas
return

Menu1:
Gui, Add, Button, x140 y10 w120 h30 gSubMenu1_1, Cotação
Gui, Add, Button, x140 y50 w120 h30 gSubMenu1_2, Orçamento
Gui, Add, Button, x140 y90 w120 h30 gSubMenu1_3, Fidelidade
Gui, Add, Button, x140 y130 w120 h30 gSubMenu1_4, Finalizar vendas
Gui, Add, Button, x140 y170 w120 h30 gSubMenu1_5, Nossos descontos
return

Menu2:
Gui, Add, Button, x140 y10 w120 h30 gSubMenu2_1, Bios Problem
Gui, Add, Button, x140 y50 w120 h30 gSubMenu2_2, Wifi lento
Gui, Add, Button, x140 y90 w120 h30 gSubMenu2_3, Acesso rápido
return

SubMenu1_1:
SendInput, Lorem ipsum dolor sit amet, consectetur adipiscing elit. In placerat suscipit lacus non rutrum.
return

SubMenu1_2:
SendInput, Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae.
return

SubMenu1_3:
SendInput, Etiam dictum congue nisl. Quisque augue ex, mollis sit amet mollis et, gravida non tellus.
return

SubMenu1_4:
SendInput, Nunc sagittis nec nisl vel imperdiet. Mauris nec hendrerit lacus.
return

SubMenu1_5:
SendInput, Cras vitae consectetur efficitur, neque tortor varius purus, a efficitur enim nibh eu erat.
return

SubMenu2_1:
SendInput, Lorem ipsum dolor sit amet, consectetur adipiscing elit.
return

SubMenu2_2:
SendInput, Lorem ipsum dolor sit amet, consectetur adipiscing elit.
return

SubMenu2_3:
SendInput, Lorem ipsum dolor sit amet, consectetur adipiscing elit.
return

GuiClose:
ExitApp
return

GuiEscape:
ExitApp
return
Bom dia, como roadria esse código? Testei em um novo documento .AHK porem quando cliquei ele não rodou

User avatar
Encrypton
Posts: 24
Joined: 10 Feb 2022, 15:21

Re: GUI onde os botões abrem submenus para textos personalizados

Post by Encrypton » 08 Apr 2024, 18:12

por gentileza tente assim

Code: Select all

#SingleInstance, Force

Gui, Add, Button, x10 y10 w120 h30 gMenu1, E-mail padrão
Gui, Add, Button, x10 y50 w120 h30 gMenu2, Problemas
return

Menu1:
Gui, Add, Button, x140 y10 w120 h30 gSubMenu1_1, Cotação
Gui, Add, Button, x140 y50 w120 h30 gSubMenu1_2, Orçamento
Gui, Add, Button, x140 y90 w120 h30 gSubMenu1_3, Fidelidade
Gui, Add, Button, x140 y130 w120 h30 gSubMenu1_4, Finalizar vendas
Gui, Add, Button, x140 y170 w120 h30 gSubMenu1_5, Nossos descontos
Gui, Show  ; Mostra a GUI para atualizar as alterações feitas
return

Menu2:
Gui, Add, Button, x140 y10 w120 h30 gSubMenu2_1, Bios Problem
Gui, Add, Button, x140 y50 w120 h30 gSubMenu2_2, Wifi lento
Gui, Add, Button, x140 y90 w120 h30 gSubMenu2_3, Acesso rápido
Gui, Show  ; Mostra a GUI para atualizar as alterações feitas
return

SubMenu1_1:
SendInput, Lorem ipsum dolor sit amet, consectetur adipiscing elit. In placerat suscipit lacus non rutrum.
return

SubMenu1_2:
SendInput, Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae.
return

SubMenu1_3:
SendInput, Etiam dictum congue nisl. Quisque augue ex, mollis sit amet mollis et, gravida non tellus.
return

SubMenu1_4:
SendInput, Nunc sagittis nec nisl vel imperdiet. Mauris nec hendrerit lacus.
return

SubMenu1_5:
SendInput, Cras vitae consectetur efficitur, neque tortor varius purus, a efficitur enim nibh eu erat.
return

SubMenu2_1:
SendInput, Lorem ipsum dolor sit amet, consectetur adipiscing elit.
return

SubMenu2_2:
SendInput, Lorem ipsum dolor sit amet, consectetur adipiscing elit.
return

SubMenu2_3:
SendInput, Lorem ipsum dolor sit amet, consectetur adipiscing elit.
return

GuiClose:
ExitApp
return

GuiEscape:
ExitApp
return

droyo
Posts: 4
Joined: 20 Mar 2023, 22:57

Re: GUI onde os botões abrem submenus para textos personalizados

Post by droyo » 19 Apr 2024, 14:24

Não manjo muito da v1, mas na v2 eu faria assim (mantendo seu hotkey para ativação):

Code: Select all

#Requires AutoHotkey v2.0
#SingleInstance Force

+WheelDown::ShowGui(Buttons)

Buttons := Map(
    "E-mail padrão", Map(
        "Cotação",          "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In placerat suscipit lacus non rutrum.",
        "Orçamento",        "Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia curae.",
        "Fidelidade",       "Etiam dictum congue nisl. Quisque augue ex, mollis sit amet mollis et, gravida non tellus.",
        "Finalizar vendas", "Nunc sagittis nec nisl vel imperdiet. Mauris nec hendrerit lacus.",
        "Nossos descontos", "Cras vitae consectetur efficitur, neque tortor varius purus, a efficitur enim nibh eu erat.",
    ),
    "Problemas", Map(
        "Bios Problem",  "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
        "Wifi lento",    "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
        "Acesso rápido", "Lorem ipsum dolor sit amet, consectetur adipiscing elit.",
    ),
)

ShowGui(Buttons) {
    myGui := Gui("+AlwaysOnTop -MaximizeBox -MinimizeBox", "")
    myGui.SetFont("s10")
    for k, v in Buttons
        myGui.Add("Button", "y+5", k).OnEvent("Click", TrataClick)
    myGui.Show()

    TrataClick(bt, *) {
        Texto := Buttons[bt.Text]
        myGui.Destroy()
        if type(Texto) = "Map"
            ShowGui(Texto)
        else
            Sleep(250), Send(Texto)
    }
}
Depois para alterar ou acrescentar mais itens seria apenas alterar a variável "Buttons".

Post Reply

Return to “Ajuda e Suporte Geral”