Quantcast
Channel: Delphi Forum - Delphi Programming Kings of Code - Delphi Programming
Viewing all articles
Browse latest Browse all 173

Complete date in TField

$
0
0
Procedure CompletaDataField( Const pData : String ; pField : TFIELD ; const pErro : boolean = True );
var
  DataStr          : String;
  Year, Month, Day : Word;
  i, TotSepara     : Integer;
begin

  DataStr:= pData;

  if DataStr = '' then
  begin
    pField.Value := NULL;
    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
    pField.Value := StrToDate(DataStr);
  except
    if pErro = true then
      pField.Value := Date
    else
     pField.Value := NULL;
  end;
end;


//How to use

//Use this in OnSetText event the Field

procedure TFmBI0004.qry_vendedor_admissaoSetText(Sender: TField;  const Text: string);
begin
  inherited;
  //The function complete the date
  CompletaDataField(Text,Sender);
end;
 

Viewing all articles
Browse latest Browse all 173

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>