Como colocar barras ("/") automaticamente na data?

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

Moderator: Gio

rubbioli
Posts: 8
Joined: 14 Sep 2019, 17:55

Como colocar barras ("/") automaticamente na data?

14 Sep 2019, 21:14

Gostaria de um script que insira automaticamente a "/" na data.
Exemplo: ao digitar 14092019 apareça 14/09/2019.
Só uso datas entre 19xx e 20xx.
Desde já, obrigado!!!
garry
Posts: 1887
Joined: 22 Dec 2013, 12:50

Re: Como colocar barras ("/") automaticamente na data?

15 Sep 2019, 14:45

short example

Code: Select all

Gui, Add, Edit, vA     w300 ,%A_now%              ;- or type 20190915
Gui, Add, Edit, vEdit2 w300 readonly
Gui, add, button, gA1,START
Gui, Show
Return
Guiclose:
exitapp
A1:
GuiControlGet,A
stringmid,d,a,7,2
stringmid,m,a,5,2
stringmid,y,a,1,4
c=%d%/%m%/%y%
GuiControl, Text, Edit2, %c%
Return

Code: Select all

x=16092019 
Gui, Add, Edit, vA     w300 ,%x%                     ;- as example  day/month/year
Gui, Add, Edit, vEdit2 w300 readonly
Gui, add, button, gA1,START
Gui, Show
Return
Guiclose:
exitapp
A1:
GuiControlGet,A
;stringmid,d,a,7,2
;stringmid,m,a,5,2
;stringmid,y,a,1,4

stringmid,d,a,1,2
stringmid,m,a,3,2
stringmid,y,a,5,4

c=%d%/%m%/%y%
GuiControl, Text, Edit2, %c%  ;- 16/09/2019
Return
Last edited by garry on 17 Sep 2019, 06:55, edited 1 time in total.
User avatar
Gio
Posts: 684
Joined: 30 Sep 2013, 10:54
Location: Brazil

Re: Como colocar barras ("/") automaticamente na data?

16 Sep 2019, 11:26

Bom dia Rubbioli.

Seja bem-vindo ao fórum da comunidade do AutoHotkey.

Se entendi o que você deseja, creio que o script abaixo fará o que quer.

Code: Select all

SetBatchLines, -1
SendMode, Input

$0::
$1::
$2::
$3::
$4::
$5::
$6::
$7::
$8::
$9::
BlockInput, On
NUMBERS := NUMBERS . SubStr(A_ThisHotkey, 2, 1)
CURRENT_NUMBER := SubStr(A_ThisHotkey, 2, 1)
If ((SubStr(NUMBERS, -3, 4) >= 1900) AND (SubStr(NUMBERS, -3, 4) <= 2099) AND (StrLen(NUMBERS) >= 8) AND (SubStr(NUMBERS, -7, 2) <= 31) AND (SubStr(NUMBERS, -5, 2) <= 12))
{
	Send {BackSpace}{BackSpace}{BackSpace}{BackSpace}{BackSpace}{BackSpace}{BackSpace}
	DATE_TO_WRITE := SubStr(NUMBERS, -7, 2) . "/" . SubStr(NUMBERS, -5, 2) . "/" . SubStr(NUMBERS, -3, 4)
	Send %DATE_TO_WRITE%
	NUMBERS := ""
}
else
{
	Send %CURRENT_NUMBER%
}
BlockInput, Off
Return


~a::
~b::
~c::
~d::
~e::
~f::
~g::
~h::
~i::
~j::
~k::
~l::
~m::
~n::
~o::
~p::
~q::
~r::
~s::
~t::
~u::
~v::
~x::
~y::
~z::
~BackSpace::
NUMBERS := ""
Return
Basicamente, sempre que você escrever uma sequência de 8 números, o script vai verificar se é uma data válida entre 01/01/1900 e 31/12/2019. Se for, ele vai adicionar as barras. Se não for, ele não vai fazer nada. Além disso, se você precisar escrever uma sequência que se encaixa na descrição, mas não quiser colocar as barras automaticamente, basta apertar um backspace antes do final da sequência e depois reescrever o último número. Por fim, se você escrever alguma letra no meio da sequência, o script descartará a sequência de números armazenada.

Espero ter ajudado, se precisar de mais alguma coisa ou tiver alguma dúvida, só postar abaixo :thumbup:
rubbioli
Posts: 8
Joined: 14 Sep 2019, 17:55

Re: Como colocar barras ("/") automaticamente na data?

16 Sep 2019, 14:05

ola!!!
Obrigado por seu tempo, mas não funcionou!
após digitar por exemplo 16092019 nada de aparecerem as barras!

Desde já, obrigado.
garry wrote:
15 Sep 2019, 14:45
short example

Code: Select all

Gui, Add, Edit, vA     w300 ,%A_now%              ;- or type 20190915
Gui, Add, Edit, vEdit2 w300 readonly
Gui, add, button, gA1,START
Gui, Show
Return
Guiclose:
exitapp
A1:
GuiControlGet,A
stringmid,d,a,7,2
stringmid,m,a,5,2
stringmid,y,a,1,4
c=%d%/%m%/%y%
GuiControl, Text, Edit2, %c%
Return

Return to “Ajuda e Suporte Geral”

Who is online

Users browsing this forum: No registered users and 4 guests