Fórum Inserir uma String #221789
23/03/2004
0
Ex:Esta gravado na tabela da seguinte forma:
´PROCESSO DE COMPENSAÇÃO Nº DO ANO DE:´
ai quando fosse imprimir, gerar o relatorio o usuario iria informar o Nº do processo e o ano.
AI IRIA IMPRIMIR ASSIM
´PROCESSO DE COMPENSAÇÃO Nº 351 DO ANO DE 2004´
Como fazer isso
Luis Rabelo
Ldrabelo
Curtir tópico
+ 0Posts
23/03/2004
Aroldo Zanela
Você pode colocar uma variável tipo @001 e @002, utilizar Pos para localizar e delete e insert para ajustar o texto.
Gostei + 0
23/03/2004
Geno
Você pode colocar uma variável tipo @001 e @002, utilizar Pos para localizar e delete e insert para ajustar o texto.[/quote:19af29b2ce]
Afe..para que isso?
Tipo..se ele usa o quick report, antes de mostrar o preview era so por um form pedindo o numero do processo e o ano, e acrescentar os labels com essa informacao no relatorio.
No evento oncreate os labels recebiam os valores das variaveis informadas pelo usuario no formulario antarior, e pow.
Gostei + 0
24/03/2004
Aroldo Zanela
Complementando com um exemplo para facilitar o entendimento, eis que, de acordo com minha interpretação de dua mensagem, o número do processo e o ano pode estar em qualquer posição do texto:
function TForm1.ReformataTexto(TextoOriginal, SubstPrimeiro, SubstSegundo: String): String; var nPos: Integer; begin nPos := Pos(´@001´, TextoOriginal); if (nPos>0) then begin Delete(TextoOriginal, nPos, 4); Insert(SubstPrimeiro, TextoOriginal, nPos); end; nPos := Pos(´@002´, TextoOriginal); if (nPos>0) then begin Delete(TextoOriginal, nPos, 4); Insert(SubstSegundo, TextoOriginal, nPos); end; Result := TextoOriginal; end; procedure TForm1.Button1Click(Sender: TObject); var cTeste: String; begin cTeste := ´PROCESSO DE COMPENSAÇÃO Nº @001 DO ANO DE @002´; ShowMessage(ReformataTexto(cTeste, ´1254554545-8´, ´2004´)); cTeste := ´FICOU REGISTRADO NO PROCESSO DE COMPENSAÇÃO Nº @001 NAQUELE ANO DE @002´; ShowMessage(ReformataTexto(cTeste, ´1254554545-8´, ´2004´)); end;
Gostei + 0
24/03/2004
Aroldo Zanela
Com classe:
TReformataTexto = Class Texto: String; SubstPrimeiro: String; SubstSegundo: String; procedure Execute; end;
Implementação do método execute:
procedure TReformataTexto.Execute; var nPos: Integer; begin nPos := Pos(´@001´, Texto); if (nPos>0) then begin Delete(Texto, nPos, 4); Insert(SubstPrimeiro, Texto, nPos); end; nPos := Pos(´@002´, Texto); if (nPos>0) then begin Delete(Texto, nPos, 4); Insert(SubstSegundo, Texto, nPos); end; end;
Instanciando e utilizando o objeto da classe:
procedure TForm1.Button1Click(Sender: TObject); var ReformataTexto: TReformataTexto; begin ReformataTexto := TReformataTexto.Create; ReformataTexto.Texto := ´PROCESSO DE COMPENSAÇÃO Nº @001 DO ANO DE @002´; ReformataTexto.SubstPrimeiro := ´125454545-85´; ReformataTexto.SubstSegundo := ´2004´; ReformataTexto.Execute; ShowMessage(ReformataTexto.Texto); ReformataTexto.Texto := ´FICOU REGISTRADO NO PROCESSO DE COMPENSAÇÃO Nº @001 NAQUELE ANO DE @002´; ReformataTexto.Execute; ShowMessage(ReformataTexto.Texto); ReformataTexto.Free; end;
Gostei + 0
24/03/2004
Ldrabelo
Você pode colocar uma variável tipo @001 e @002, utilizar Pos para localizar e delete e insert para ajustar o texto.[/quote:da3153486c]
Valeu realmete e isso que estou procurando.
Muito obrigado, funcionou legal
Gostei + 0
24/03/2004
Nildo
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)