Automátismo no preenchimento de hitórico. (EditMask)

Delphi

03/11/2008

Estou precisando gravar históricos predefinidos para agilizar a confecção de lançamentos no livro caixa.

A minha idéia é de utilizar a propriedade EditMask do DbEdit para tal.
Por exemplo existe uma tabela chamada FIN_HIST que serve para gravar prédefinições de lançamentos, onde eu quero colocar certas termos como a data do lançamento, de uma forma que o usuário não tenha de preencher todo o lançamento e sim somente a data.

Olha o trecho do meu código que estou fazendo.

   Mascara := Livro.Dm.CdsLocHistFHIS_NOME.AsString;

  if Pos(´[DATA]´,UpperCase(Mascara)) > 0 then
  begin
    Mascara := StringReplace(Mascara , ´[DATA]´, ´//´ ,[rfReplaceAll]);
  end;

  Livro.Dm.TmpLanc1HistoricoRed.EditMask :=  Mascara;


Ou seja na tabela de histórico eu tenho um campo com o preenchimento : ´Pagamento de energia com vencimento na data de [DATA]´

Eu gostaria de fazer com que o usuário não tivesse de preencher o histórico do lançamento todo e sim apenas a data.
Está quase dando certo o problema que estou encontrando é que está aparecendo da seguinte forma :
[b:6e22ab2acf]P_g_mento de energi_ _om ven_imento n_ d_t_ de __/__/____[/b:6e22ab2acf]
quando gostaria que aparecesse assim
[b:6e22ab2acf]Pagamento de energia com vencimento na data de __/__/____[/b:6e22ab2acf]
Alguém sabe um modo correto de fazer isso?

Agradeço desde já atenciosamente Vitor Araújo Alcântara


Vitor Alcantara

Vitor Alcantara

Curtidas 0

Respostas

Vitor Alcantara

Vitor Alcantara

03/11/2008

Para que tiver passando pelo mesmo problema que eu ai vai a solução que encontrei.

Trecho do código:
Mascara := Livro.Dm.CdsLocHistFHIS_NOME.AsString;

  if Pos(´[DATA]´,UpperCase(Livro.Dm.CdsLocHistFHIS_NOME.AsString)) > 0 then
  begin
    Mascara := StringReplace(Mascara , ´[DATA]´, ´ ´+´//´ ,[rfReplaceAll]);
  end;


  Mascara := StringReplace(Mascara,´a´,´\a\´,[rfReplaceAll]);
  Mascara := StringReplace(Mascara,´A´,´\A\´,[rfReplaceAll]);
  Mascara := StringReplace(Mascara,´c´,´\c\´,[rfReplaceAll]);
  Mascara := StringReplace(Mascara,´C´,´\C\´,[rfReplaceAll]);

  Livro.Dm.TmpLanc1HistoricoRed.EditMask :=  Mascara;



GOSTEI 0
Vitor Alcantara

Vitor Alcantara

03/11/2008

O código melhorado

function TfLivroCaixa.Mascara(Historico: String): String;
var
  Mascara,s,s1:String;
  I: Integer;
begin
  Mascara := Historico;
  //Formatando a data
  if Pos(´[DATA]´,UpperCase(Mascara )) > 0 then
  begin
    Mascara := StringReplace(Mascara , ´[DATA]´, ´ ´+´//´ ,[rfReplaceAll]);
  end;

  //Formatando a hora
  if Pos(´[HORA]´,UpperCase(Mascara )) > 0 then
  begin
    Mascara := StringReplace(Mascara , ´[HORA]´, ´ ´+´:´ ,[rfReplaceAll]);
  end;

  //Formatando o texto de 30 caracteres
  if pos(´[TEXTO30]´ , UpperCase(Mascara)) > 0 then
  begin
    s := ´´;
    for i := 1 to 30 do
    begin
      s := s + ´C´;
    end;

    Mascara := Copy(Mascara , 1 , pos(´[TEXTO30]´ , UpperCase(Mascara) )-1) + ´|´+s + ´|´  + Copy(Mascara ,  pos(´[TEXTO30]´ , UpperCase(Mascara))+11,Length(Mascara));
  end;

  //Formatando o texto de 20 caracteres
  if pos(´[TEXTO20]´ , UpperCase(Mascara)) > 0 then
  begin
    s := ´´;
    for i := 1 to 20 do
    begin
      s := s + ´C´;
    end;

    Mascara := Copy(Mascara , 1 , pos(´[TEXTO20]´ , UpperCase(Mascara) )-1) + ´|´+s + ´|´  + Copy(Mascara ,  pos(´[TEXTO20]´ , UpperCase(Mascara))+11,Length(Mascara));
  end;

  //Formatando o texto de 20 caracteres
  if pos(´[TEXTO10]´ , UpperCase(Mascara)) > 0 then
  begin
    s := ´´;
    for i := 1 to 10 do
    begin
      s := s + ´C´;
    end;

    Mascara := Copy(Mascara , 1 , pos(´[TEXTO10]´ , UpperCase(Mascara) )-1) + ´|´+s + ´|´  + Copy(Mascara ,  pos(´[TEXTO10]´ , UpperCase(Mascara))+11,Length(Mascara));
  end;

  
  //Mascara := StringReplace(Mascara,´\\´,´´,[rfReplaceAll]);

  s:= ´´;
  for I := 1 to Length(Mascara) do
  begin
    if Not (Mascara[I] in [´:´,´ ´,´´,´\´,´/´]) then
    begin
      s := s + ´\´+Mascara[I];
    end
    else
    begin
      s := s + Mascara[I];
    end;
  end;

  s1 := ´´;
  for I := 1 to 30 do
  begin
    s1 := s1 + ´\C´
  end;
  s := StringReplace(s,s1,´cccccccccccccccccccccccccccccc´,[rfReplaceAll]);

  s1 := ´´;
  for I := 1 to 20 do
  begin
    s1 := s1 + ´\C´
  end;
  s := StringReplace(s,s1,´cccccccccccccccccccc´,[rfReplaceAll]);

  s1 := ´´;
  for I := 1 to 10 do
  begin
    s1 := s1 + ´\C´
  end;
  s := StringReplace(s,s1,´cccccccccc´,[rfReplaceAll]);

  Mascara := s;

  Result := Mascara;
end;



GOSTEI 0
POSTAR