Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

bastard2003

variavel de substituição no QR

Recommended Posts

Galera, novamente venho ate vocês para tentar resolver meu problema.... vou tentar ser o mais claro o possivel! tive que desenvolver um editor de texto que ira salvar modelos de cartas, tem todas as formatações possiveis, incluindo alinhamento justificado! ate agora tava tudo beleza, esse relatorio é imporesso via QR pra isso na hora que eu abertava no botão de imprimir eu fazia um SaveToFile e no create do relatorio eu dava um LoadFromFile chamando aquele arquivo ali... até ai funcionou beleza! agora to com o seguinte problema... esse programa ira gerar cartas padrões, como falei antes, mudando so algumas coisas que o usuario queira (nome da pessoa, endereço, etc..) pra isso eu criei algumas tags (ex.: <Nome>) e queria substituir elas pelo nome da pessoa que esta na base (Oracle ou Sql Server) alguem saberia me disser como poderia fazer isso??! so que eu NÃO posso perder a formatação do texto... vou deixar um exemplo de como eu gostaria que ficac.

 

Texto no editor:

Ao Sr. <NOME> desejamos tudo de bom!

Texto Impresso:

Ao Sr. Bastard desejamos tudo de bom!

Tem como fazer isso??? valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Rapaz, nao sei se é isso que você quer, mas lá vai.

Pelo que eu entendi a solução é muito simples, acho que você deve saber, so nao esta ligando as coisas.

O que eu entendi: que você quer trazer os dados do banco para imprimir no QR que você citou acima.

Se assim for, é só por um QrDBtext no lugar dos campos a ser trazido e na propriedade Field por o campo correspondente. Ex:

Ao Sr. [QrDBtext] desejamos tudo de bom!
Depois de associado o campo, se por exemplo, ele for o campo NOME da tabela, a visualização fica assim:

Ao Sr. [NOME] desejamos tudo de bom!

Ps: lembrando que tem que fazer o SQL :P para a consulta e ligar o DataSet do QR, tanto o quickRep quanto o QrDBText.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Fala CameloBr, beleza?? cara para mim poder utilizar o exemplo que você deu... eu já teria q ter o texto pronto no QR né?? so q o problema é q o cara vai ta no editor... e do editor ele vai chamar o QR e esse já tem q vir com os valores correspondentes para cada variavel... entendeu?!?! ñ sei se eu consegui ser bem claro noque coloquei no post... vou tentar estruturar melhor... assim.. eu tenho uma tabela chamada campo(nuCampo, nmCampo, nmValor) que fica mais ou menos assim:

1 Nome Usuario Cliente.nmCliente

qnd o cara clica pra colocar uma taq ele coloca assim <nome Usuario> ai eu teria que ler ela e no QR mostrar o nome do Cliente que esta na outra tabela (Cliente), como esse texto sera um padrão, o cara so vai fazer um select pra trazer os clientes que ele quer (por exemplo filtrando por uma cidade), ai ele iria escolher qual texto seria e seria impresso so mudando as tags pelos valores correspondentes, um dos problemas é q ñ é so na tabela de Clientes que ele vai buscar esse valor, pode variar de acordo com a Tag (tem pelo menos mais umas 6 tabelas que o cara pode pegar valores)

 

 

axo que agora fui um poco mais claro!!

 

vou aguardar uma resposta!!! abraços e vale! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia

 

por que você não coloca um qrmemo no qr e carrega o arquivo que deve ser impresso.

 

antes de imprirmir você pega e localiza o campo ([Nome]) e substitui pelo nome que esta no campo.

 

tipo assim:

 

var  i, p : Integer;  aux : string;begin  repeat    for i := 0 to qrMemo.Lines.Count -1 do begin      p := Pos('[Nome]', qrMemo.Lines[i]);      if p > 0 then begin         aux := qrMemo.Lines[i];         delete(aux, p, length('[Nome]'));         insert(CampoNome.AsString, aux, p);         qrMemo.Lines[i] := aux;         break;      end;    end;  until (p = 0);end;

Desta maneira vai substituir todos os '[Nome]' até o final pelo testo do campo

 

 

espero ter ajudado

 

falow

 

http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

fala thalesoli, beleza?? cara teu codigo meu ajuda bastante.. so q tem um problema... ele tira a formatação do texto... e isso é o mais importante pra mim... ate dei uma aprefeiçoada no codigo q você passo... já q tu tenho varias tags!! sera q teria como manter essa formatação do texto??? se tiver mato a pau!!! valeu galera!

Compartilhar este post


Link para o post
Compartilhar em outros sites

por que ao invés de um qrmemo você não usa um QRRichText... pois ele aceita uma formatação e o meu código ira mudar somente os textos e nao a formatação.

 

falow

 

http://forum.imasters.com.br/public/style_emoticons/default/joia.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

caro amigo thalesoli, desculpe minha ignorancia... mas tipo... eu to utilizando o RichEdit... so que ta perdendo a formatação do texto... vou colocar aqui os dois codigos que eu uso pra fazer esse esquema:

no botão de imprimir:

//Arquivo := 'C:\temporario.rtf';//Editor.Lines.SaveToFile(arquivo);relPrincipal := TrelPrincipal.Create(Application);relPrincipal.QRRichText1.Lines := editor.Lines;relPrincipal.QuickRep1.Preview;relPrincipal.Free;//DeleteFile(PChar(arquivo));

e no onCreate do relatorio to com esse codigo aqui (o seu):

 

repeat   for i := 0 to MainForm.Editor.Lines.Count -1 do begin     p := Pos('<Nome>', MainForm.Editor.Lines[i]);     if p > 0 then begin        aux := MainForm.Editor.Lines[i];        delete(aux, p, length('<Nome>'));        insert('Cristian Zacca', aux, p);        MainForm.Editor.Lines[i] := aux;        break;     end;   end; until (p = 0);

você poderia me ajudar ai?? valeu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal tbm estou com o mesmo problema se alguém puder nos ajudar vou ser eternamente grato. Muito obrigado!!

 

bastard2003 você pode colocar o código pra carregar o RichEdit no TQRRichText assim

 

try

Application.CreateForm(TFormRelMalaDireta, FormRelMalaDireta);

FormRelMalaDireta.qrTextoMalaDireta.ParentRichEdit := Text1;

FormRelMalaDireta.qrMalaDireta.Preview;

finally

FormRelMalaDireta.Release;

FormRelMalaDireta := Nil;

end;

 

onde:

qrTextoMalaDireta = TQRRichText

Text1 = RichEdit

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal tbm estou com o mesmo problema se alguém puder nos ajudar vou ser eternamente grato. Muito obrigado!!

 

bastard2003 você pode colocar o código pra carregar o RichEdit no TQRRichText assim

 

try

Application.CreateForm(TFormRelMalaDireta, FormRelMalaDireta);

FormRelMalaDireta.qrTextoMalaDireta.ParentRichEdit := Text1;

FormRelMalaDireta.qrMalaDireta.Preview;

finally

FormRelMalaDireta.Release;

FormRelMalaDireta := Nil;

end;

 

onde:

qrTextoMalaDireta = TQRRichText

Text1 = RichEdit

 

O que se pode fazer é usar o FindText do RichEdit, fazendo um repeat até que não se encontre mais a tag desejada, e então usar o SelStart, SelLength e SelText para selecionar o texto dentro do RichEdit, algo simples seria como:

 

procedure SubstituirTexto(tag, texto: string);
var
   x: integer;
begin
repeat
	x:=RichEdit.FindText(tag,0,length(RichEdit.Text),[]);
	if x >= 0 then
		begin
		RichEdit.SelStart:=x;
		RichEdit.SelLength:=length(tag);
		RichEdit.SelText:=texto;
		end;
until x = -1;
end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.