Arquivos do Blog
Tratando Incremento e Decremento de Campos Data/Hora
Fala galera, beleza?
Para efetuarmos o incremento ou decremento em valores de Data/Hora, utilizaremos algumas propriedades que explicaremos um pouco melhor abaixo, as funções são encontradas na Unit DateUtils, que será necessário ser declarada para que o Delphi encontre as funções.
- IncMillisecond – Incrementa/Decrementa Milisegundos
- IncSecond – Incrementa/Decrementa Segundos
- IncMinute – Incrementa/Decrementa Minutos
- IncDay – Incrementa/Decrementa Dias
- IncMonth – Incrementa/Decrementa Meses
- IncYear – Incrementa/Decrementa Anos
Não existe as funções DecMillisecond, DecSecond, DecMinute, DecDay, DecMonth, DecYear. Para esses casos, utilizaremos as respectivas funções passando como parâmetro um valor negativo.
- Incrementos de Milisegundos (IncMillisecond)
var minhaData : TDateTime; begin // Configure nossa data para o início de 2020 minhaData := EncodeDateTime(2020, 1, 1, 0, 0, 0, 0); ShowMessage('Data = '+DateTimeToStr(minhaData)); // Adicionar 5000 milisegundos na data/hora minhaData := IncMillisecond(minhaData, 5000); ShowMessage('Data + 5000 milisegundos = ' + DateTimeToStr(minhaData)); // Subtrair 1000 milisegundos na data/hora minhaData := IncMillisecond(minhaData, -1000); ShowMessage('Data - 1000 milisegundos = '+ DateTimeToStr(minhaData)); end;
Teremos como resultado das funções acima 3 mensagens, sendo:
A 1º mensagem: ‘Data = 01/01/2020’
A 2º mensagem: ‘Data + 5000 milisegundos = 01/01/2020 00:00:05’
A 3º mensagem: ‘Data – 1000 milisegundos = 01/01/2020 00:00:04’
- Incremento de Segundos (IncSecond)
var minhaData : TDateTime; begin // Configure nossa data para o fim de 2020 minhaData := EncodeDateTime(2005, 12, 31, 23, 59, 0, 0); ShowMessage('Data = '+ DateTimeToStr(minhaData)); // Adicionar 60 segundos na data/hora myDate := IncSecond(myDate, 60); ShowMessage('Data + 60 segundos = '+DateTimeToStr(minhaData)); // Subtrair 120 segundos na data/hora minhaData := IncSecond(minhaData, -120); ShowMessage('Data - 120 segundos = '+DateTimeToStr(minhaData)); end;
Teremos como resultado das funções acima 3 mensagens, sendo:
A 1º mensagem: ‘Data = 31/12/2020 23:59:00’
A 2º mensagem: ‘Data + 60 segundos = 01/01/2021’
A 3º mensagem: ‘Data – 120 segundos = 31/12/2020 23:58:00’
- Incremento de Minutos(IncMinute)
var minhaData : TDateTime; begin // Defina nossa data antes do final do ano 2020 minhaData := EncodeDateTime(2020, 12, 31, 23, 0, 0, 0); ShowMessage('Data = '+DateTimeToStr(minhaData)); // Adicionar 100 minutos na data minhaData := IncMinute(minhaData, 100); ShowMessage('Data + 100 minutos = '+DateTimeToStr(minhaData)); // Subtrair 40 minutes na data minhaData := IncMinute(minhaData, -40); ShowMessage('Data - 40 minutos = '+DateTimeToStr(minhaData)); end;
Teremos como resultado das funções acima 3 mensagens, sendo:
A 1º mensagem: ‘Data = 31/12/2020 23:00:00’
A 2º mensagem: ‘Data + 100 minutos = 01/01/2021 00:40:00’
A 3º mensagem: ‘Data – 40 minutos = 01/01/2021’
- Incremento de Dias(IncDay)
var MinhaData : TDateTime; begin // Defina nossa data antes do final do ano 2020 MinhaData := EncodeDate(2020, 12, 30); ShowMessage('Data = '+DateToStr(MinhaData)); // Adicinar 10 dias na data MinhaData := incDay(MinhaData, 10); ShowMessage('Data + 10 Dias = '+DateToStr(MinhaData)); // Subtrair 12 dias na data MinhaData := incDay(MinhaData, -12); ShowMessage('Data - 12 Dias = '+DateToStr(MinhaData)); end;
Teremos como resultado das funções acima 3 mensagens, sendo:
A 1º mensagem: ‘Data = 30/12/2020’
A 2º mensagem: ‘Data + 10 dias = 09/01/2021’
A 3º mensagem: ‘Data – 12 dias = 29/12/2020’
- Incremento de Meses(IncMonth)
var minhaData : TDateTime; begin minhaData := StrToDate('31/01/2000'); //Fim de Janeiro em ano bissexto ShowMessage('Data = ' + DateToStr(minhaData)); // Incrementar em 1 (padrão) // 31/Janeiro/2000 ==> 31/Fevereiro/2000 (ilegal) ==> 29/Fevereiro/2000 minhaData := IncMonth(minhaData); ShowMessage('Data + 1 mês = ' + DateToStr(minhaData)); // Incrementar em 12 meses // 29/Fevereiro/2000 ==> 29/Fevereiro/2000 (ilegal) ==> 28/Fevereiro/2001 minhaData := IncMonth(minhaData, 12); // Incrementar em 12 meses ShowMessage('Data + 12 meses = ' + DateToStr(minhaData)); end;
Teremos como resultado das funções acima 3 mensagens, sendo:
A 1º mensagem: ‘Data = 31/01/2000’
A 2º mensagem: ‘Data + 1 mês = 29/02/2000’
A 3º mensagem: ‘Data + 12 meses = 28/02/2001’
- Incremento de Ano(IncYear)
var minhaData : TDateTime; begin // Configure nossa data para um dia especial de ano bissexto minhaData := EncodeDate(2000, 02, 29); ShowMessage('Data = '+DateToStr(minhaData)); // Adicionar 2 anos na data minhaData := IncYear(minhaData, 2); ShowMessage('Data + 2 Anos = '+DateToStr(minhaData)); // Subtrair 2 anos na data minhaData := IncYear(minhaData, -2); ShowMessage('Data - 2 Anos = '+DateToStr(minhaData)); end;
Teremos como resultado das funções acima 3 mensagens, sendo:
A 1º mensagem: ‘Data = 29/02/2000’
A 2º mensagem: ‘Data + 2 Anos = 28/02/2002’
A 3º mensagem: ‘Data – 2 Anos = 28/02/2000’
Copiar parte de string (LeftStr ou RightStr)
Fala galera beleza ?
To passando hoje pra deixar mais uma dica de função do Delphi para copiar parte de uma string a partir do seu início ou do seu fim, sabendo apenas a quantidade de caracteres que devem ser copiados.
Vou deixar abaixo um exemplo e o vídeo de como trabalhar com a função. (Post e vídeo utilizando o mesmo exemplo)
No exemplo a função será implementada no evento OnClick do botão, mas fica a critério do desenvolvedor escolher onde melhor ela se encaixa no seu código.
Para trabalharmos com as funções LeftStr e RightStr, devemos declarar a Unit System.StrUtils, no nosso form.
procedure TForm.Button1Click(Sender : TObject);
var
AuxStr, AuxLeft, AuxRight: string;
begin
AuxStr := ‘Canal Desenvolvedor Delphi’;
AuxLeft := LeftStr(AuxStr, 5); //Copiará 5 caracteres da Esquerda pra direita da string, ou seja, a palavra Canal’
AuxRight := RightStr(AuxStr, 6); // Copiará 6 caracteres da Direita pra esquerda da string, ou seja, a palavra Delphi
Showmessage(‘Left: ‘ + AuxLeft + sLineBreak + ‘Right: ‘ + AuxRight);
end;
Fixar ano em campo TMaskEdit
Fala galera, beleza?
Estamos de volta, agora sem deixar o blog sem atualizações 😉
No post de hoje, vamos tratar de uma funcionalidade para quem deseja criar um maskedit para data, mas quer manter o ano fixo, sem que o usuário possa alterar.
Para casos de sistemas que tenham o ano fixo ou que seja controlado por algum outro local.
Abaixo segue a função que permite isso.
O FOR é utilizado para colocar a “\” antes dos caracteres que serão fixos e não podem ser alterados, no caso o ano presente na data.
var
sAno: string;
I: Integer;
CompMascara: string;
begin
MaskEdit1.Clear;
MaskEdit1.EditMask := EmptyStr;
sAno := Edit1.Text;
for I := 1 to Length(sAno) do
CompMascara := CompMascara + '\' + sAno[I];
MaskEdit1.EditMask := '99/99/' + CompMascara + ';0;_';
end;