Estou querendo fazer GUI customizada,tipo,mudar o ícone do botão fechar/minimizar,as bordas,etc..
Alguém tem alguma ideia de Biblioteca ou funções para isso?
Ex. do que quero fazer:
GUI customizada Topic is solved
Moderator: Gio
- juanmuscaria
- Posts: 65
- Joined: 29 Oct 2017, 10:53
- Location: Brazil
- Contact:
Re: GUI customizada
Olá juanmuscaria.
Seja bem-vindo ao fórum do AutoHotkey.
Desconheço uma biblioteca para customização de GUIs de um modo geral, talvez porque GUIs sejam na verdade compostas de vários elementos diferentes (e em quantidades e posições diferentes). Há, no entanto, alguns exemplos bem interessantes de GUIs customizadas neste tópico:
https://autohotkey.com/boards/viewtopic.php?t=3851
E também é possível encontrar exemplos de customização de vários elementos específicos de GUIs (Por exemplo, como criar botões com imagens e etc).
Assim, para criar uma gui sem bordas, por exemplo, basta usar:
E mesmo assim se quando estiver fazendo sua GUI customizada sentir necessidade de mudar algum elemento específico (botão, borda, cor, etc) e não encontrar a solução, pode fazer uma pergunta sobre o elemento em questão e vamos ajudá-lo
Seja bem-vindo ao fórum do AutoHotkey.
Desconheço uma biblioteca para customização de GUIs de um modo geral, talvez porque GUIs sejam na verdade compostas de vários elementos diferentes (e em quantidades e posições diferentes). Há, no entanto, alguns exemplos bem interessantes de GUIs customizadas neste tópico:
https://autohotkey.com/boards/viewtopic.php?t=3851
E também é possível encontrar exemplos de customização de vários elementos específicos de GUIs (Por exemplo, como criar botões com imagens e etc).
Todas essa modificações são possíveis também. Eu sugiro olhar o que já está disponível de forma integrada no AutoHotkey primeiro (pois é o mais fácil de implementar). Você pode encontrar algumas das opções integradas aqui: https://autohotkey.com/docs/misc/Styles.htmtipo,mudar o ícone do botão fechar/minimizar,as bordas,etc..
Assim, para criar uma gui sem bordas, por exemplo, basta usar:
Code: Select all
Gui -Border
Gui, show, w300 h300
"What is suitable automation? Whatever saves your day for the greater matters."
Barcoder - Create QR Codes and other Barcodes using only Autohotkey !!
Archmage Gray - A fantasy shooter game fully coded in AutoHotkey
Barcoder - Create QR Codes and other Barcodes using only Autohotkey !!
Archmage Gray - A fantasy shooter game fully coded in AutoHotkey
- juanmuscaria
- Posts: 65
- Joined: 29 Oct 2017, 10:53
- Location: Brazil
- Contact:
Re: GUI customizada
Obrigado pelas respostas,mas tenho uma duvida em:
1-se eu usar funções para fazer elementos de GUI (Botão,Texto,etc...) pode me causar problemas
2-Criar varias GUIs no mesmo script
Agradeço se conseguir me responder
1-se eu usar funções para fazer elementos de GUI (Botão,Texto,etc...) pode me causar problemas
2-Criar varias GUIs no mesmo script
Agradeço se conseguir me responder
Re: GUI customizada Topic is solved
Não creio que causaria problemas, mas você teria que alinhar todas as particularidades das funções e da criação das GUIs, é claro.1-se eu usar funções para fazer elementos de GUI (Botão,Texto,etc...) pode me causar problemas
Isso é bem simples na verdade. Você pode fazer isso usando números ou nomes para identificar as diferentes GUIs. A sintaxe é essa abaixo (usando o número ou nome e depois dois pontos entre o comando "gui" e os comandos que você quer que se refiram a uma GUI específica).2- Criar varias GUIs no mesmo script
Code: Select all
Gui, add, text, x50 y50, PRIMEIRA GUI
Gui, show, w300 h400
Gui, 2: add, text, x50 y50, SEGUNDA GUI
Gui, 2: show, w600 h100
1 - Algumas GUIs podem ser "pertencentes" a outras GUIs. Isso é muito útil quando você quer criar uma gui secundária para colher dados acessórios em uma rotina implementada em uma GUI principal, por exemplo.
2 - As funções de GUIs, como Lv_Add(), operam na GUI considerada "padrão" do script. Você pode redefinir a gui padrão a qualquer momento usando a sintaxe Gui, Default (ou Gui, 2: Default se for uma gui numerada ou nomeada) por exemplo.
3 - Quando uma gui principal é fechada, a label GuiClose é executada se existir. Quando uma gui numerada ou nomeada é fechada, a label chamada, se existir, segue a sintaxe 2GuiClose (com o número antes).
4 - As variáveis embutidas A_Gui e A_GuiControl podem te ajudar a implementar algumas rotinas.
5 - As labels dos botões e outras rotinas podem te ajudar a definir quando as GUIs secundárias são criadas.
Abaixo eu coloquei um exemplo de duas GUIs, sendo que a segunda complementa a rotina da primeira, trabalhando de forma conjunta para implementar uma rotina só. Usei algumas das implementações descritas acima. Basicamente o papel da segunda GUI é coletar uma senha do usuário. Se a senha estiver correta, ela dará seguimento à rotina da Gui 1 (soma dos valores). Espero que seja um bom exemplo para estudo de GUIs secundárias.
Code: Select all
;************************************************************************************
; PRIMEIRO, CRIAMOS A GUI PRINCIPAL, CHAMADA "SOMADORA COM SENHA"
;************************************************************************************
Gui, add, edit, x50 y50 number vPRIMEIRO_VALOR
Gui, add, edit, x50 y80 number vSEGUNDO_VALOR
Gui, add, button, x50 y120 gSOMAR_VALORES, SOMAR
Gui, add, EDIT, x50 y150 disabled
Gui, show, w400 h400, SOMADORA COM SENHA
Return
;******************************************************************************************************************************************************************
; DEPOIS, CRIAMOS UMA FUNÇÃO PARA CRIAR A SEGUNDA GUI, QUE SERÁ PERTENCENTE À GUI 1 (E VAI BLOQUEÁ-LA ENQUANTO NÃO FOR FECHADA).
; Essa função será chamada através da label do botão da Gui 1.
;******************************************************************************************************************************************************************
SOMAR_VALORES:
COLLECT_PASS()
Return
COLLECT_PASS()
{
Gui, 2: Add, Text, x50 y50, SENHA:
Gui, 2: add, edit, x50 y80 vSENHA_INSERIDA
Gui, 2: Add, Button, x50 y120 gVERIFICA_SENHA, CONFIRMAR
Gui, 2: show, w200 h150
Gui, 2: +Owner1
Gui, 1: +Disabled ; Aqui desabilitamos a Gui 1 quando a Gui 2 for criada (isso será desfeito quando a gui 2 for fechada, lá em 2guiclose).
}
VERIFICA_SENHA:
Gui, 2: Submit, nohide
If (SENHA_INSERIDA = "EXEMPLO") ; Se a senha escrita na Gui 2 estiver correta, o valor será somado.
{
Gosub, 2GuiClose
Gui, 1: Submit, nohide
VALOR_A_EXIBIR := PRIMEIRO_VALOR + SEGUNDO_VALOR
ControlSetText, Edit3, %VALOR_A_EXIBIR%, SOMADORA COM SENHA
}
Else ; Mas se a senha estiver errada, nada acontece (e não adianta fechar a gui 2, pois o código acima só ocorre se a senha estiver certa e o botão pressionado).
{
msgbox % "Senha errada! A senha correta é a palavra EXEMPLO"
}
Return
;***********************************************************************
; SE A GUI 2 FOR FECHADA, DESTRUÍMOS ELA E LIBERAMOS A GUI 1.
;***********************************************************************
2GuiClose:
Gui, 1: -Disabled ; Aqui reabilitamos a gui 1.
Gui, 2: Destroy
Return
;***********************************************************************
; SE A GUI 1 FOR FECHADA, ENCERRAMOS O SCRIPT.
;***********************************************************************
Guiclose:
ExitApp
"What is suitable automation? Whatever saves your day for the greater matters."
Barcoder - Create QR Codes and other Barcodes using only Autohotkey !!
Archmage Gray - A fantasy shooter game fully coded in AutoHotkey
Barcoder - Create QR Codes and other Barcodes using only Autohotkey !!
Archmage Gray - A fantasy shooter game fully coded in AutoHotkey
- juanmuscaria
- Posts: 65
- Joined: 29 Oct 2017, 10:53
- Location: Brazil
- Contact:
Re: GUI customizada
Muito obrigado pela ajuda,com isso vou fazer umas funções para simplificar a criação de GUIs
Re: GUI customizada
Outro exemplo:
Code: Select all
#NoEnv
#Warn
SendMode Input
SetWorkingDir %A_ScriptDir%
#SingleInstance force
WM_NCLBUTTONDOWN := "0xA1" ; https://msdn.microsoft.com/en-us/library/windows/desktop/ms645620(v=vs.85).aspx
HTCAPTION := 2 ; https://msdn.microsoft.com/en-us/library/windows/desktop/ms645618(v=vs.85).aspx
JANELA_AMPLIADA := 1 ; https://www.autohotkey.com/docs/commands/WinGet.htm#List
Gui, minhaGUI:Default
Gui, -Caption hwndminhaJanelaID +MinSize300x300 +Resize
Gui, Color, White, White
Gui, Margin, 10, 10
Gui, Add, Picture, vbotãoMinimizar Section gminimizarAJanela Icon40, mmcndmgr.dll ; https://diymediahome.org/windows-icons-reference-list-with-details-locations-images/?lang=es
Gui, Add, Picture, vbotãoAmpliar ys-3 gampliarAJanela Icon62, mmcndmgr.dll
Gui, Add, Picture, vbotãoFechar ys-1 gfecharAJanela Icon162, imageres.dll
Gui, Add, Text, vbarraDoTítulo x0 y0 hp+20 Border BackgroundTrans Center gmoverAFanela,
Gui, Font, s15, Segoe UI
Gui, Add, Text, vtítulo x0 ys-3 BackgroundTrans Center, minha GUI
GuiControlGet, títuloPosiçãoETamanho, Pos, título ; https://www.autohotkey.com/docs/commands/GuiControlGet.htm#subcommands
TITULO_LARGURA := títuloPosiçãoETamanhoW
Gui, Show, w400 h400
return
minimizarAJanela:
MsgBox % A_ThisLabel
WinMinimize, A ; A = janela ativa
return
ampliarAJanela:
MsgBox % A_ThisLabel
WinGet, minOMax, MinMax ; https://www.autohotkey.com/docs/commands/WinGet.htm#List
if (minOMax = JANELA_AMPLIADA)
WinRestore, A
else
WinMaximize, A
return
moverAFanela: ; ; https://autohotkey.com/board/topic/80594-how-to-enable-drag-for-a-gui-without-a-titlebar/
PostMessage, %WM_NCLBUTTONDOWN%, %HTCAPTION%,,, A
return
minhaGUIGuiSize: ; https://www.autohotkey.com/docs/commands/Gui.htm#GuiSize ; https://www.autohotkey.com/docs/commands/GuiControl.htm#Move
GuiControl, MoveDraw, barraDoTítulo, % "w" . A_GuiWidth
GuiControl, MoveDraw, título, % "x" . A_GuiWidth//3-TITULO_LARGURA//2
GuiControl, MoveDraw, botãoMinimizar, % "x" . A_GuiWidth-110
GuiControl, MoveDraw, botãoAmpliar, % "x" . A_GuiWidth-70
GuiControl, MoveDraw, botãoFechar, % "x" . A_GuiWidth-30
return
minhaGUIGuiEscape:
minhaGUIGuiClose:
fecharAJanela:
MsgBox % A_ThisLabel
Exitapp
Return to “Ajuda e Suporte Geral”
Who is online
Users browsing this forum: No registered users and 48 guests