Automátismo no preenchimento de hitórico. (EditMask)
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.
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
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
Curtidas 0
Respostas
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;
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
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