ajuda com Gui

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

Moderator: Gio

cimerio
Posts: 44
Joined: 29 Apr 2019, 15:37

ajuda com Gui

29 Jun 2020, 14:32

olá a todos. estou começando a mexer com Gui, mas ainda apanhando. montei o seguinte script abaixo, mas depois de preencher um dos campos, quando eu clico em Ok, não acontece nada:

Code: Select all

{
!w::





Gui, New , , Graphic Interface
Gui, Test:New 

Gui, add, Text,, Digite o numero do empenho:
Gui, Add, Edit, vEmp1
Gui, add, Text,, Ou...
Gui, add, Text,, A natureza da despesa, para uma consulta geral:
Gui, Add, Edit, vNd1
Gui, Add, Button, Default w80, OK
Gui, Show
return


GuiClose:
ButtonOK:
Gui, Submit

if (vEmp1 != "")
	MsgBox %vEmp1%
else
	MsgBox %vNd1%


return
garry
Posts: 3740
Joined: 22 Dec 2013, 12:50

Re: ajuda com Gui

29 Jun 2020, 14:57

exemplo

Code: Select all

;Gui, New , , Graphic Interface
;Gui, Test:New 
Gui, add, Text,, Digite o numero do empenho:
Gui, Add, Edit, vEmp1
Gui, add, Text,, Ou...
Gui, add, Text,, A natureza da despesa, para uma consulta geral:
Gui, Add, Edit, vNd1
Gui, Add, Button, Default w80 gOK1, OK
Gui, Show,x100 y100,TEST
return
;--------
GuiClose:
exitapp
;--------
OK1:
Gui, Submit,nohide
if (Emp1 != "")
	msgbox, 262208,EDIT-1 , %Emp1%
else
	msgbox, 262208,EDIT-2 , %Nd1%
return
;===========================
User avatar
Hologram
Posts: 140
Joined: 06 May 2020, 16:47

Re: ajuda com Gui

29 Jun 2020, 18:07

Olá amigo, vou comentar dentro do seu script

Code: Select all

{ ; os colchetes servem para manter um código dentro de algo, no caso nunca jamais serão usados na primeira linha
!w:: ; Botao que seta o script





Gui, New , , Graphic Interface ; o "New" é usado para criar uma nova Gui em cima de Outra, oq não é o caso ja que ela é a primeira
Gui, Test:New  

Gui, add, Text,, Digite o numero do empenho: ; Um simples texto, porem não indica nenhuma posição 
Gui, Add, Edit, vEmp1 ; Uma barra de edit que não indica posição
Gui, add, Text,, Ou...
Gui, add, Text,, A natureza da despesa, para uma consulta geral:
Gui, Add, Edit, vNd1
Gui, Add, Button, Default w80, OK 
Gui, Show
return ; o script parara aqui, acaso não for chamado por outras coisas


GuiClose: 
ButtonOK: ; aqui precisa apenas a variavel do botao, não "ButtonOK"
Gui, Submit
if (vEmp1 != "") ; if se refere a "se" no caso se "vEmp1 for != que "") ele executara as linhas a seguir, caso contrario pulara para o Else
	MsgBox %vEmp1%
else
	MsgBox %vNd1%


return



Modo certo:

Code: Select all

w:: ; botao que iniciara o script

Gui, Show, w430 h430,Teste ; criação da Gui de fundo e seu tamanho
Gui, Add, Button, x0 y100 w85 h25 gMENU_OK, OK ; criação de um botao, suas coordenadas dentro da gui, seu tamanho, , nome do botao
Gui, Add, Text, x0 y0, Digite o numero do empenho ; um texto simples, em determinadas coordenadas da Gui
Gui, Add, Edit, vEu_sou_ums_variavel x0 y30 w260 h25 ; Uma barra de edit com a variavel Eu_sou_ums_variavel
return ; só precisamos disso, podemos retornar, o script acaba aqui se não for chamado pelo botao ou outra Hotkey

MENU_OK: ; estamos chamando o menu Ok acaso for clicado
Gui, submit, nohide
MsgBox, A sua mensagem na barra de Edit foi %Eu_sou_ums_variavel% ; Mensagem que aparecerá quando for clicado puxado juntamente pelo conteudo da variavel
return
Discord: Npc Bugado#9074



local config = {
delrey = getPlayerCarValue(cid, DELREY),
cigarro = getPlayerCancer(cid, DERBY),
prostituta = getPlayerAIDS(cid, cracuda),
tresOitao = getPlayerRevorvi(cid, 38)
}
if(delrey == "Ligado" and cigarro == "Aceso" and prostituta == "No Colo" and tresOitao == "Carregado") then
doPlayerSendTextMessage(cid, MESSAGE_INFO_DESCR, "Começou o fim de semana. #PAS")
end


User avatar
Gio
Posts: 1247
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: ajuda com Gui

29 Jun 2020, 19:39

Boa noite cimerio.

Ambas as respostas acima estão certas, vou apenas comentar um ponto sobre a questão.

As duas linhas abaixo estão incompatíveis:

Code: Select all

Gui, Add, Edit, vEmp1
; ...
if (vEmp1 != "")
A razão é simples: no comando de criação do campo, você deve utilizar um v antes do nome da variável que deseja que seja atrelada ao campo. Mas o nome da variável na verdade não contém esse v. Sendo assim, a segunda linha deveria verificar condicionalmente a variável Emp1 e NÃO uma variável vEmp1.

Corrigindo isso teremos:

Code: Select all

Gui, Add, Edit, vEmp1 ; Veja que somente nesta linha indicamos o V antes do nome da variável.
; ...
if (Emp1 != "") ; Por isso foi necessário corrigir o nome aqui.

:arrow: Perceba o seguinte: o parâmetro em que colocamos o nome da variável é o parâmetro de opções, mas existem outras opções possíveis para serem colocadas neste parâmetro, portanto, a forma pela qual o interpretador entende que estamos nos referindo ao nome da variável dentro das opções do campo é exatamente aquele v antes do nome. Por este motivo não poderíamos simplesmente colocar o nome da variável solto (pois daí como o interpretador saberia que aquilo é o nome da variável a ser atrelada ao campo? Poderia ser o nome da g-label ou alguma outra opção, por exemplo - O v é como ele sabe).
cimerio
Posts: 44
Joined: 29 Apr 2019, 15:37

Re: ajuda com Gui

03 Jul 2020, 14:05

obrigado pelos esclarecimentos, amigos.
cimerio
Posts: 44
Joined: 29 Apr 2019, 15:37

Re: ajuda com Gui

03 Jul 2020, 14:24

tem duas coisas que estão obscuras pra mim.

a primeira é por que o resultado aparece quando eu clico em X para fechar a gui? eu quero que o resultado apareça quando eu click em enter ou com o mouse em OK. se eu faço isso, não aparece nada.

o outro problema é que a gui não reinicia(se destrói) no final de cada execução. explico. se eu tento rodar de novo com alt+w, retorna um erro de que a variável nao pode ser usada mais de uma vez em cada gui. ou seja, elimina a vantagem de eu deixar o script ativo. tenho que executar (f5) de novo.
garry
Posts: 3740
Joined: 22 Dec 2013, 12:50

Re: ajuda com Gui

03 Jul 2020, 14:47

talvez ...

Code: Select all

;- ajuda com Gui 
;- https://www.autohotkey.com/boards/viewtopic.php?f=69&t=77950

~$!w::
Gui, New , , Graphic Interface
;Gui, Test:New 
Gui, add, Text,, Digite o numero do empenho:
Gui, Add, Edit, vEmp1
Gui, add, Text,, Ou...
Gui, add, Text,, A natureza da despesa, para uma consulta geral:
Gui, Add, Edit, vNd1
Gui, Add, Button, Default w80 gOK1, OK
Gui, Show,x100 y100,TEST
return
;--------
GuiClose:
Gui,minimize
return
;--------
OK1:
Gui, Submit,nohide
if (Emp1 != "")
	msgbox, 262208,EDIT-1 , %Emp1%
else
	msgbox, 262208,EDIT-2 , %Nd1%
return
;===========================
esc::exitapp
User avatar
Gio
Posts: 1247
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: ajuda com Gui

03 Jul 2020, 17:04

cimerio wrote:
03 Jul 2020, 14:24
tem duas coisas que estão obscuras pra mim.

a primeira é por que o resultado aparece quando eu clico em X para fechar a gui?

Isso está ocorrendo porque você colocou a label GuiClose logo antes da label ButtonOK sem nenhuma separação entre elas. A label GuiClose é a label que é chamada quando o usuário clica no X da GUI principal do programa, e como não existe nenhuma separação entre as labels no momento, ela está descendo a execução para o código da label ButtonOK quando é chamada (ou seja, quando o usuário clica no X).

:arrow: Em outras palavras, adicione um Return entre a label GuiClose e a label ButtonOK para criar uma separação entre elas.

o outro problema é que a gui não reinicia(se destrói) no final de cada execução. explico. se eu tento rodar de novo com alt+w, retorna um erro de que a variável nao pode ser usada mais de uma vez em cada gui. ou seja, elimina a vantagem de eu deixar o script ativo. tenho que executar (f5) de novo.
Por padrão, as GUIs não se destroem quando o usuário clica no X. Elas são somente escondidas. Para destruir uma GUI quando o usuário clicar no X, você pode utilizar o comando Gui, Destroy na label GuiClose (a label que é chamada quando o usuário clica no X).

Exemplo:

Code: Select all

!w::

Gui, New , , Graphic Interface
Gui, Test:New 

Gui, add, Text,, Digite o numero do empenho:
Gui, Add, Edit, vEmp1
Gui, add, Text,, Ou...
Gui, add, Text,, A natureza da despesa, para uma consulta geral:
Gui, Add, Edit, vNd1
Gui, Add, Button, Default w80, OK
Gui, Show
return

GuiClose:
Gui, destroy ; O comando Gui, Destroy efetivamente destrói a GUI.
Return ; O return impede a chamada à label GuiClose de depois pular para o código da label ButtonOK abaixo.

ButtonOK:
Gui, Submit

if (vEmp1 != "")
	MsgBox %vEmp1%
else
	MsgBox %vNd1%


return
garry
Posts: 3740
Joined: 22 Dec 2013, 12:50

Re: ajuda com Gui

04 Jul 2020, 07:09

obrigado Gio , pequena correção

Code: Select all

!w::
Gui, New , , Graphic Interface
;Gui, Test:New 
Gui, add, Text,, Digite o numero do empenho:
Gui, Add, Edit, vEmp1
Gui, add, Text,, Ou...
Gui, add, Text,, A natureza da despesa, para uma consulta geral:
Gui, Add, Edit, vNd1
Gui, Add, Button, Default w80, OK
Gui, Show
return
GuiClose:
Gui, destroy ;- O comando Gui, Destroy efetivamente destrói a GUI.
Return       ;- O return impede a chamada à label GuiClose de depois pular para o código da label ButtonOK abaixo.
ButtonOK:
Gui, Submit
if (Emp1 != "")
	MsgBox %Emp1%
else
	MsgBox %Nd1%
return
esc::exitapp
cimerio
Posts: 44
Joined: 29 Apr 2019, 15:37

Re: ajuda com Gui

27 Jul 2020, 16:02

obrigado, colegas, agora consigo fazer uma gui.
Uma ultima duvida por agora: quando eu lanço a gui, o cursor não aparece automaticamente no primeiro campo Edit, para digitação.
tem como fazer com que apareça? assim, não preciso toda hora clicar nesse campo com o mouse, antes de digitar.
garry
Posts: 3740
Joined: 22 Dec 2013, 12:50

Re: ajuda com Gui

28 Jul 2020, 06:40

examplo-1

Code: Select all

Gui, add, Text,, Digite o numero do empenho:
Gui, Add, Edit, vEmp1
Gui, add, Text,, Ou...
Gui, add, Text,, A natureza da despesa, para uma consulta geral:
Gui, Add, Edit, vNd1
Gui, Add, Button, Default w80 gA1, OK
Gui, Show
GuiControl, Focus,Emp1
return
GuiClose:
exitapp
A1:
Gui, Submit,nohide
if (Emp1 != "")
	MsgBox %Emp1%
else
	MsgBox %Nd1%
return
;===================================
exemplo-2 com cálculo

Code: Select all

#warn
#noenv
name1:="MATHE-TEST" 
setworkingdir,%a_scriptdir%
Gui,1:default
Gui,1: +AlwaysOnTop -DPIScale -Theme
Gui,1:Color,Black,Black                        ; GUI Black / EDIT is BLACK
Gui,1:Font,CYellow s12,Lucida Console          ; EDIT-TEXT is Yellow
;-------
A:=20
B:=60
Gui,1:add,Text,    x10    y10   cWhite,A=
Gui,1:add,Edit,    x140   y10   w120 h40    right   vA1 , %a%   
Gui,1:add,Text,    x10    y70   cWhite,B=
Gui,1:add,Edit,    x140   y70   w120 h40    right   vB1 , %b%
Gui,1:add,Text,    x10    y130  cRED,RESULT=
Gui,1:add,Edit,    x140   y130  w120 h40    right   vResult readonly cWhite,
;- normal button
;Gui,1: Add, Button, x20 y350 w250 h37 gCALC,CALCULATE
;- or color button
Gui,1: Add, Progress, x20 y350 w250 h37 Disabled Background87CEEB
Gui,1: Add, Text, xp yp wp hp BackgroundTrans 0x201 cBlack vText +Border gCALC,CALCULATE
;--
Gui,1: Add, Button, x300 y350 w150 h37 gClear,CLEAR
;--------
Gui,1:Show,x1 y1 w800 h420 ,%name1%
GuiControl, Focus,A1                        ;- set focus to the first field
send,{end}
Return
;-------------
Guiclose:
exitapp
;-------------
CALC:
Gui,1:submit,nohide
if (a1="" or B1="")
  return
c:=a1+b1
Guicontrol,1:,Result,%c%
msgbox, 262208,TEST-MATHE,You clicked button = CALCULATE`n----------------`nThe result is %c%,2  ;- msgbox for 2 seconds
GuiControl, Focus,A1                        ;- set focus to the first field
send,{end}
return
;-------------
CLEAR:
Guicontrol,1:,A1
Guicontrol,1:,B1
Guicontrol,1:,Result,
return
;======================== END SCRIPT ====================
cimerio
Posts: 44
Joined: 29 Apr 2019, 15:37

Re: ajuda com Gui

29 Jul 2020, 12:52

garry wrote:
28 Jul 2020, 06:40
examplo-1

Code: Select all

Gui, add, Text,, Digite o numero do empenho:
Gui, Add, Edit, vEmp1
Gui, add, Text,, Ou...
Gui, add, Text,, A natureza da despesa, para uma consulta geral:
Gui, Add, Edit, vNd1
Gui, Add, Button, Default w80 gA1, OK
Gui, Show
GuiControl, Focus,Emp1
return
GuiClose:
exitapp
A1:
Gui, Submit,nohide
if (Emp1 != "")
	MsgBox %Emp1%
else
	MsgBox %Nd1%
return
;===================================
exemplo-2 com cálculo

Code: Select all

#warn
#noenv
name1:="MATHE-TEST" 
setworkingdir,%a_scriptdir%
Gui,1:default
Gui,1: +AlwaysOnTop -DPIScale -Theme
Gui,1:Color,Black,Black                        ; GUI Black / EDIT is BLACK
Gui,1:Font,CYellow s12,Lucida Console          ; EDIT-TEXT is Yellow
;-------
A:=20
B:=60
Gui,1:add,Text,    x10    y10   cWhite,A=
Gui,1:add,Edit,    x140   y10   w120 h40    right   vA1 , %a%   
Gui,1:add,Text,    x10    y70   cWhite,B=
Gui,1:add,Edit,    x140   y70   w120 h40    right   vB1 , %b%
Gui,1:add,Text,    x10    y130  cRED,RESULT=
Gui,1:add,Edit,    x140   y130  w120 h40    right   vResult readonly cWhite,
;- normal button
;Gui,1: Add, Button, x20 y350 w250 h37 gCALC,CALCULATE
;- or color button
Gui,1: Add, Progress, x20 y350 w250 h37 Disabled Background87CEEB
Gui,1: Add, Text, xp yp wp hp BackgroundTrans 0x201 cBlack vText +Border gCALC,CALCULATE
;--
Gui,1: Add, Button, x300 y350 w150 h37 gClear,CLEAR
;--------
Gui,1:Show,x1 y1 w800 h420 ,%name1%
GuiControl, Focus,A1                        ;- set focus to the first field
send,{end}
Return
;-------------
Guiclose:
exitapp
;-------------
CALC:
Gui,1:submit,nohide
if (a1="" or B1="")
  return
c:=a1+b1
Guicontrol,1:,Result,%c%
msgbox, 262208,TEST-MATHE,You clicked button = CALCULATE`n----------------`nThe result is %c%,2  ;- msgbox for 2 seconds
GuiControl, Focus,A1                        ;- set focus to the first field
send,{end}
return
;-------------
CLEAR:
Guicontrol,1:,A1
Guicontrol,1:,B1
Guicontrol,1:,Result,
return
;======================== END SCRIPT ====================
:thumbup:

Return to “Ajuda e Suporte Geral”

Who is online

Users browsing this forum: No registered users and 26 guests