Formatar Data em edit Delphi
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.
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
Curtidas 0
Melhor post
Gxf
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.
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!!!
GOSTEI 1
Mais Respostas
Gxf
01/02/2017
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.
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?
GOSTEI 0
Gxf
01/02/2017
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.
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? :((((
GOSTEI 0
Pestana
01/02/2017
se for para formatar a data tente assim:
FormatDateTime('mm/yyyy',date)GOSTEI 0
Gxf
01/02/2017
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
GOSTEI 0
Raimundo Pereira
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.
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.
GOSTEI 0
Gxf
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.
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?
GOSTEI 0
Nomad
01/02/2017
Estou com a mesma dúvida..
Como ficaria no caso de dia/mês/ano?
Não consegui converter mesmo analisando o código. :/
Como ficaria no caso de dia/mês/ano?
Não consegui converter mesmo analisando o código. :/
GOSTEI 0
Raimundo Pereira
01/02/2017
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);
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);
GOSTEI 0
Gxf
01/02/2017
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);
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
GOSTEI 0
Raimundo Pereira
01/02/2017
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);
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);
GOSTEI 0
Gxf
01/02/2017
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);
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.
GOSTEI 0
Gxf
01/02/2017
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?
Teria alguma forma de bloquear isto?
GOSTEI 0
Raimundo Pereira
01/02/2017
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?
Se a quantidade de caracteres do campo for menor que 8 "03/02/2017 " Ele roda a função.
Certo?
GOSTEI 0
Raimundo Pereira
01/02/2017
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
{ 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
GOSTEI 0
Raimundo Pereira
01/02/2017
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
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
GOSTEI 0
Gxf
01/02/2017
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
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
Desta forma deu certinho no edit, porém se for um mask edit não vai :/
GOSTEI 0
Raimundo Pereira
01/02/2017
Para o mask edit, você precisará mudar a mascara.
Provavelmente você está usando apenas 00/00 .
Depois de antes de chamar a função você precisará mudar para 00/00/0000
Provavelmente você está usando apenas 00/00 .
Depois de antes de chamar a função você precisará mudar para 00/00/0000
GOSTEI 0
Gxf
01/02/2017
Para o mask edit, você precisará mudar a mascara.
Provavelmente você está usando apenas 00/00 .
Depois de antes de chamar a função você precisará mudar para 00/00/0000
Provavelmente você está usando apenas 00/00 .
Depois de antes de chamar a função você precisará mudar para 00/00/0000
Eu estava usando "99/99/9999"
pois utilizando "00/00/0000", quando coloco 01/01/16 e dou TAB ocorre 'Invalid input value. Use escape key to abandon changes'.
GOSTEI 0
Pestana
01/02/2017
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);
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);
E se você inserir uma data neste formato 1/1/16 (que também é uma data válida), o que acontece?
GOSTEI 0
Pestana
01/02/2017
Ou se a data do Windows estiver com um outro formato, p.ex: d/m/aa (que também é uma data válida)?
GOSTEI 0
Raimundo Pereira
01/02/2017
Neste caso usar uma variável tipo date.
Preenchendo esta variável no formato dd/mm/yyyy.
Todo o tratamento é dado em cima de um determinado formato.
Quando citei >>Depois de antes de chamar a função você precisará mudar para 00/00/0000
Na verdade eu quiz dizer para você mudar dd/mm/yyyy.
Preenchendo esta variável no formato dd/mm/yyyy.
Todo o tratamento é dado em cima de um determinado formato.
Quando citei >>Depois de antes de chamar a função você precisará mudar para 00/00/0000
Na verdade eu quiz dizer para você mudar dd/mm/yyyy.
GOSTEI 0
Gxf
01/02/2017
Neste caso usar uma variável tipo date.
Preenchendo esta variável no formato dd/mm/yyyy.
Todo o tratamento é dado em cima de um determinado formato.
Quando citei >>Depois de antes de chamar a função você precisará mudar para 00/00/0000
Na verdade eu quiz dizer para você mudar dd/mm/yyyy.
Preenchendo esta variável no formato dd/mm/yyyy.
Todo o tratamento é dado em cima de um determinado formato.
Quando citei >>Depois de antes de chamar a função você precisará mudar para 00/00/0000
Na verdade eu quiz dizer para você mudar dd/mm/yyyy.
Como ficaria a implementação nesse caso?
GOSTEI 0