Inserir uma String
Olá, tenho gravado no Banco de Dados um Texto, gostaria que quando fosse feito a imprimissao do texto no Quick Report, me fosse acrescentado uma variavel definida pelo usuario no meio desse texto.
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
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
Curtidas 0
Respostas
Aroldo Zanela
23/03/2004
Colega,
Você pode colocar uma variável tipo @001 e @002, utilizar Pos para localizar e delete e insert para ajustar o texto.
Você pode colocar uma variável tipo @001 e @002, utilizar Pos para localizar e delete e insert para ajustar o texto.
GOSTEI 0
Geno
23/03/2004
[quote:19af29b2ce=´Aroldo Zanela´]Colega,
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.
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
Aroldo Zanela
23/03/2004
Colega,
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:
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
Aroldo Zanela
23/03/2004
Colega,
Com classe:
Implementação do método execute:
Instanciando e utilizando o objeto da classe:
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
Ldrabelo
23/03/2004
[quote:da3153486c=´Aroldo Zanela´]Colega,
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
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
Nildo
23/03/2004
É por este e por muitos outros motivos que eu uso o FreeReport. Voce define variaveis dentro dele, e ele tem um evento OnGetValue que voce troca o valor das variaveis no momento da impressão/visualizacao. Muito legal esse FreeReport, além de, na minha opinião, ganhar de 10x1 do QuickReport
GOSTEI 0