Procedure CompletaDataEdit( Const pData : String ; pEdit : TEdit ; const pErro : boolean = True );
var
DataStr : String;
Year, Month, Day : Word;
i, TotSepara : Integer;
begin
DataStr:= pData;
if DataStr = '' then
begin
pEdit.Text := '';
Exit;
end;
TotSepara := 0;
//Conta quantos numeros existem na Variaval DataStr( pData )
for i := 1 to Length(DataStr) do
begin
if not (DataStr in ['0'..'9']) then
begin
DataStr := FormatSettings.DateSeparator;
inc(TotSepara);
end;
end;
// Remove os Separadores de Data
while (DataStr <> '') and ( DataStr[Length(DataStr)] = FormatSettings.DateSeparator) do
begin
Delete(DataStr, Length(DataStr), 1);
Dec(TotSepara);
end;
// Pega o Ano mes e Dia
DecodeDate(Now, Year, Month, Day);
if TotSepara = 0 then
begin
case Length(DataStr) of
0 : DataStr := DateToStr(date);
1, 2 : DataStr := DataStr+FormatSettings.DateSeparator+IntToStr(Month);
4 : Insert(FormatSettings.DateSeparator, DataStr, 3);
6, 8 : begin
Insert(FormatSettings.DateSeparator, DataStr, 5);
Insert(FormatSettings.DateSeparator, DataStr, 3);
end;
end;
end;
try
pEdit.Text := DateToStr(StrToDate(DataStr));
except
if pErro = true then
pEdit.Text := DateToStr(Date)
else
pEdit.Text := '';
end;
end;
How to Use
// the OnExit Event de TEdit
procedure TFmBI0016.edt_dataExit(Sender: TObject);
begin
inherited;
//Complete a partially typed date
//The function complements the date with the month and year
CompletaDataEdit((Sender as TEdit).text,( Sender As TEdit));
end;
var
DataStr : String;
Year, Month, Day : Word;
i, TotSepara : Integer;
begin
DataStr:= pData;
if DataStr = '' then
begin
pEdit.Text := '';
Exit;
end;
TotSepara := 0;
//Conta quantos numeros existem na Variaval DataStr( pData )
for i := 1 to Length(DataStr) do
begin
if not (DataStr in ['0'..'9']) then
begin
DataStr := FormatSettings.DateSeparator;
inc(TotSepara);
end;
end;
// Remove os Separadores de Data
while (DataStr <> '') and ( DataStr[Length(DataStr)] = FormatSettings.DateSeparator) do
begin
Delete(DataStr, Length(DataStr), 1);
Dec(TotSepara);
end;
// Pega o Ano mes e Dia
DecodeDate(Now, Year, Month, Day);
if TotSepara = 0 then
begin
case Length(DataStr) of
0 : DataStr := DateToStr(date);
1, 2 : DataStr := DataStr+FormatSettings.DateSeparator+IntToStr(Month);
4 : Insert(FormatSettings.DateSeparator, DataStr, 3);
6, 8 : begin
Insert(FormatSettings.DateSeparator, DataStr, 5);
Insert(FormatSettings.DateSeparator, DataStr, 3);
end;
end;
end;
try
pEdit.Text := DateToStr(StrToDate(DataStr));
except
if pErro = true then
pEdit.Text := DateToStr(Date)
else
pEdit.Text := '';
end;
end;
How to Use
// the OnExit Event de TEdit
procedure TFmBI0016.edt_dataExit(Sender: TObject);
begin
inherited;
//Complete a partially typed date
//The function complements the date with the month and year
CompletaDataEdit((Sender as TEdit).text,( Sender As TEdit));
end;