Fórum Formatar Data em edit Delphi #574459

01/02/2017

0

Gostaria de saber a função de autocompletar data em um edit.
Por exemplo:
Coloco 01/16 e ao pressionar TAB puxar automático no edit 2016, sendo assim 01/2016
Mas isto com qualquer período que o o usuário digitar.
Gxf

Gxf

Responder

Post mais votado

01/02/2017

Boa noite,
Criei a função e está funcionando como você deseja, veja se realmente ajuda.


private
{ Private declarations }
Function Formate_Data(Dados_Atual:String):String;


implementation
{$R *.dfm}
Function TForm1.Formate_Data(Dados_Atual:String):String;
begin
Result:=
Copy(Dados_Atual,1,2)+//Pegamos o mês ou seja os dois primeiros digitos da esquerda para a direita
'/'+
Copy(DateToStr(now),7,2)+//Pegamos os dois digitos do ano Atual

Copy(Dados_Atual,4,2);//Pegamos os dois ultomos digitos Informado

//Exemplo:
//Onde uma vez foi digitado 01/17
// A função entede que 01 é o mês e 17 é o ano.
// Então será convertido para 01/2017.
end;


//Chamando a Função
No evento onexit do edit desejado cole.
Edit1.Text:=Formate_Data(Edit1.Text);

Bônus do Canal: Aprendiz Delphi.
Abraço.


P2, muito obrigado!!!! Era isso mesmo, certinho!!!

Gxf

Gxf
Responder

Gostei + 1

Mais Posts

01/02/2017

Gxf

Gostaria de saber a função de autocompletar data em um edit.
Por exemplo:
Coloco 01/16 e ao pressionar TAB puxar automático no edit 2016, sendo assim 01/2016
Mas isto com qualquer período que o o usuário digitar.


Alguém?
Responder

Gostei + 0

01/02/2017

Gxf

Gostaria de saber a função de autocompletar data em um edit.
Por exemplo:
Coloco 01/16 e ao pressionar TAB puxar automático no edit 2016, sendo assim 01/2016
Mas isto com qualquer período que o o usuário digitar.


Alguém?


Ninguém? :((((
Responder

Gostei + 0

01/02/2017

Pestana

se for para formatar a data tente assim:

FormatDateTime('mm/yyyy',date)
Responder

Gostei + 0

01/02/2017

Gxf

se for para formatar a data tente assim:

FormatDateTime('mm/yyyy',date)


Agradeço a atenção.

Não seria bem formatar, e sim completar.

Por exemplo:

se digito 01/16 quando apertar tab e pular par outro campo queria que completasse como 01/2016...
se digito 07/15 quando apertar tab e pular par outro campo queria que completasse como 07/2015...

E assim com qualquer mês ano que for informado no edit
Responder

Gostei + 0

01/02/2017

Raimundo Pereira

Boa noite,
Criei a função e está funcionando como você deseja, veja se realmente ajuda.


private
{ Private declarations }
Function Formate_Data(Dados_Atual:String):String;


implementation
{$R *.dfm}
Function TForm1.Formate_Data(Dados_Atual:String):String;
begin
Result:=
Copy(Dados_Atual,1,2)+//Pegamos o mês ou seja os dois primeiros digitos da esquerda para a direita
'/'+
Copy(DateToStr(now),7,2)+//Pegamos os dois digitos do ano Atual

Copy(Dados_Atual,4,2);//Pegamos os dois ultomos digitos Informado

//Exemplo:
//Onde uma vez foi digitado 01/17
// A função entede que 01 é o mês e 17 é o ano.
// Então será convertido para 01/2017.
end;


//Chamando a Função
No evento onexit do edit desejado cole.
Edit1.Text:=Formate_Data(Edit1.Text);

Bônus do Canal: Aprendiz Delphi.
Abraço.
Responder

Gostei + 0

02/02/2017

Gxf

Boa noite,
Criei a função e está funcionando como você deseja, veja se realmente ajuda.


private
{ Private declarations }
Function Formate_Data(Dados_Atual:String):String;


implementation
{$R *.dfm}
Function TForm1.Formate_Data(Dados_Atual:String):String;
begin
Result:=
Copy(Dados_Atual,1,2)+//Pegamos o mês ou seja os dois primeiros digitos da esquerda para a direita
'/'+
Copy(DateToStr(now),7,2)+//Pegamos os dois digitos do ano Atual

Copy(Dados_Atual,4,2);//Pegamos os dois ultomos digitos Informado

//Exemplo:
//Onde uma vez foi digitado 01/17
// A função entede que 01 é o mês e 17 é o ano.
// Então será convertido para 01/2017.
end;


//Chamando a Função
No evento onexit do edit desejado cole.
Edit1.Text:=Formate_Data(Edit1.Text);

Bônus do Canal: Aprendiz Delphi.
Abraço.


Caso for dia/mês/ano , muda muita coisa?
Responder

Gostei + 0

02/02/2017

Nomad

Estou com a mesma dúvida..

Como ficaria no caso de dia/mês/ano?

Não consegui converter mesmo analisando o código. :/
Responder

Gostei + 0

02/02/2017

Raimundo Pereira

Para retornar dia, mês e ano, ficaria assim:

Function TForm1.Formate_Data(Dados_Atual:String):String;
begin
Result:=
Copy(Dados_Atual,1,6)+
Copy(DateToStr(now),7,2)+
Copy(Dados_Atual,7,2);
end;

Para chamar realiza o mesmo procedimento no evento onexit:
Edit1.Text:=Formate_Data(Edit1.Text);
Responder

Gostei + 0

02/02/2017

Gxf

Para retornar dia, mês e ano, ficaria assim:

Function TForm1.Formate_Data(Dados_Atual:String):String;
begin
Result:=
Copy(Dados_Atual,1,6)+
Copy(DateToStr(now),7,2)+
Copy(Dados_Atual,7,2);
end;

Para chamar realiza o mesmo procedimento no evento onexit:
Edit1.Text:=Formate_Data(Edit1.Text);


P2, muito obrigado! É isso mesmo.

Se não for muito incômodo, teria como me explicar o motivo da seqüência de números? Estudei o código mas não consegui compreender.

Se preferir pode me enviar por email: gabryel.silva@ledware.com.br
Responder

Gostei + 0

02/02/2017

Raimundo Pereira

O primeiro número indica a posição inicial a ser copiada.
O segundo número indica a até aonde o conteúdo será copiado.

Exemplo:
Conteúdo 03/02/2017
Para Copiar apenas o mês irei usar (4- Começo a copiar o caractere de 4º posição)
Então da 4º posição quero apenas 2 caracteres.
Então o copy ficará assim >> ,4,2);
Responder

Gostei + 0

03/02/2017

Gxf

O primeiro número indica a posição inicial a ser copiada.
O segundo número indica a até aonde o conteúdo será copiado.

Exemplo:
Conteúdo 03/02/2017
Para Copiar apenas o mês irei usar (4- Começo a copiar o caractere de 4º posição)
Então da 4º posição quero apenas 2 caracteres.
Então o copy ficará assim >> ,4,2);


Muito obrigado P2, me ajudou bastantate.
Responder

Gostei + 0

03/02/2017

Gxf

Mas caso eu passe pelo campo mais de UMA vez com o TAB, altera os dados que já estão preenchidos nele.

Teria alguma forma de bloquear isto?
Responder

Gostei + 0

03/02/2017

Raimundo Pereira

Sim altere a função, colocando um if
Se a quantidade de caracteres do campo for menor que 8 "03/02/2017 " Ele roda a função.
Certo?
Responder

Gostei + 0

03/02/2017

Raimundo Pereira

private
{ Private declarations }
Function Formate_Data(Dados_Atual:String;Quantidade_Char:integer):String;


Function TForm1.Formate_Data(Dados_Atual:String;Quantidade_Char:integer):String;
begin
// Data completa tem 03/02/2017 = 10.
if Quantidade_Char<10 then //Se não estiver formatada será aplicado a conversão.
begin
Result:=
Copy(Dados_Atual,1,6)+
Copy(DateToStr(now),7,2)+
Copy(Dados_Atual,7,2);
end
else
begin
Result:=Dados_Atual;
end;

end;

Chamando a nova função:

Edit1.Text:=Formate_Data(Edit1.Text,Length(Edit1.Text));
//Edit1.Text, é o conteúdo do campo para ser analisado pela função
//Length(Edit1.Text), é a quantidade de carracteres no campo
//Se for menor que 10, será aplicada a conversão.
//Se = 10, permanecerá o valor atual
Responder

Gostei + 0

03/02/2017

Raimundo Pereira

Para validar apenas mês ano:
01/2017 = 7 então verificasse se é menor que 7

Para validar dai, mês e ano:
01/01/2017=10 então verificasse se é menor que 10
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar