Data por Extenso.

20/05/2003

4

Como faço para transformar a data digitada em um DBEdit para data por extenso ?
Alguém pode me ajudar ?


Responder

Posts

20/05/2003

Carnette

Como faço para transformar a data digitada em um DBEdit para data por extenso ? Alguém pode me ajudar ?


Como formatar data para exibição por extenso
O Delphi permite formatar datas para apresentação por extenso de forma bastante simples. Vejamos os seguintes exemplos:

Para formatar a data 18/03/1999, podemos utilizar:

No create do form colocar

Shortdateformat:=

dddd, dd/mm/yyyy = Quinta, 18/03/1999
dd/mmm/yyyy = 18/Mar/1999
dddd, dd´ de ´mmmm´ de ´yyyy = Quinta, 18 de Março de 1999
dd´ de ´mmmm´ de ´yyyy, dddd = 18 de Março de 1999, Quinta


Responder

20/05/2003

Rodrigo Costa

Função para escrever data por extenso eu não tenho, mas tenho uma que escreve valores monetários. Talvez você possa adaptá-la à sua necessidade:

function TForm_notafiscal.Extenso(valor: extended): string; var sValorInt,sValor,sBilh,sMilh,sMil,sCent,sCvos:String; function Cem( sVal:string ):string; const und:array[1..19] of string = ( ´Um´, ´Dois´,´Três´,´Quatro´,´Cinco´,´Seis´,´Sete´,´Oito´, ´Nove´,´Dez´,´Onze´,´Doze´,´Treze´,´Quatorze´,´Quinze´, ´Dezesseis´,´Dezesete´,´Dezoito´,´Dezenove´); dez:array[2..9] of string = (´Vinte´,´Trinta´,´Quarenta´,´Cinqüenta´,´Sessenta´,´Setenta´,´Oitenta´,´Noventa´); cen:array[1..9] of string = (´Cento´,´Duzentos´,´Trezentos´,´Quatrocentos´,´Quinhentos´,´Seiscentos´,´Setecentos´,´Oitocentos´,´Novecentos´); var u,d,c,du:integer; begin result:=´´; c:=strtoint(sVal[1]); d:=strtoint(sVal[2]); u:=strtoint(sVal[3]); du:=strtoint(sVal[2]+sVal[3]); if sVal=´100´ then result:= ´ Cem ´ else if (c>0) then result := cen[c]; if (c>0)and(du>0) then result:=result+´ e ´; if (d>1) then result := result + dez[d]; if (d>1)and(u>0) then result:=result+ ´ e ´+ und[u]; if (du<20)and(du>0) then result := result + und[ du ]; end; begin sValorInt:= formatfloat(´000000000000´,valor); sValor:= formatfloat(´000000000000.00´,valor); sBilh :=copy(sValor,1,3); sMilh :=copy(sValor,4,3); sMil :=copy(sValor,7,3); sCent :=copy(sValor,10,3); sCvos :=´0´+copy(sValor,14,2); Result:= trim(Cem( sBilh )); if sBilh=´001´ then Result:=Result+´ Bilhão, ´; if sBilh>´001´ then Result:=Result+´ Bilhões, ´; Result:=Result + trim(Cem( sMilh )); if sMilh=´001´ then Result:=Result+´ Milhão, ´; if sMilh>´001´ then Result:=Result+´ Milhões, ´; Result:=Result + trim(Cem( sMil )); if sMil >´000´ then begin if (sCvos=´000´) and (scent=´000´) then Result:=Result+´ Mil ´ else Result:=Result+´ Mil e ´; end; Result:=Result + trim(Cem( sCent )); if sValorInt=´000000000001´ then Result:=Result+´ Real ´ else Result:=Result+´ Reais ´; if sCvos=´001´ then Result:=Result +´ e ´ + trim(Cem( sCvos )) + ´ Centavo ´; if sCvos>´001´ then Result:=Result +´ e ´ + trim(Cem( sCvos )) + ´ Centavos ´; end;



Responder

20/05/2003

Jeanfiamoncini

Muito obrigado pela resposta.


Responder

20/05/2003

Carnette

Muito obrigado pela resposta.


function DataExtenso(Data:TDateTime): String;
{Retorna uma data por extenso}
var
NoDia : Integer;
DiaDaSemana : array [1..7] of String;
Meses : array [1..12] of String;
Dia, Mes, Ano : Word;
begin
{ Dias da Semana }
DiaDasemana [1]:= ´Domingo´;
DiaDasemana [2]:= ´Segunda-feira´;
DiaDasemana [3]:= ´Terçafeira´;
DiaDasemana [4]:= ´Quarta-feira´;
DiaDasemana [5]:= ´Quinta-feira´;
DiaDasemana [6]:= ´Sexta-feira´;
DiaDasemana [7]:= ´Sábado´;
{ Meses do ano }
Meses [1] := ´Janeiro´;
Meses [2] := ´Fevereiro´;
Meses [3] := ´Março´;
Meses [4] := ´Abril´;
Meses [5] := ´Maio´;
Meses [6] := ´Junho´;
Meses [7] := ´Julho´;
Meses [8] := ´Agosto´;
Meses [9] := ´Setembro´;
Meses [10]:= ´Outubro´;
Meses [11]:= ´Novembro´;
Meses [12]:= ´Dezembro´;
DecodeDate (Data, Ano, Mes, Dia);
NoDia := DayOfWeek (Data);
Result := DiaDaSemana[NoDia] + ´, ´ +
IntToStr(Dia) + ´ de ´ + Meses[Mes]+ ´ de ´ + IntToStr(Ano);
end;


Responder