Imprimir memo em matricial...
Dá pra imprimir um campo memo na matricial, mais um pouco em cada linha, tipo na 1 linha imprimir até uma quantidade de caracteres e na linha de baixo a partir daquela quantidade em diante.
agora estou fazendo assim:
Writeln(Arq,Obs);
e assim não consigo controlar, pois as vezes preciso imprimir um outro campo na frente.
agora estou fazendo assim:
Writeln(Arq,Obs);
e assim não consigo controlar, pois as vezes preciso imprimir um outro campo na frente.
Janete
Curtidas 0
Respostas
Janete
28/09/2004
Estou tentando fazer de uma forma q quase dá certo, se alguém puder dar uma opnão agradeço.
Eu criei as variaveis para receber o campo memo da tabela e estou tentando separar a qtde de caracteres desejado para imprimir em linha diferentes:
var Obs, Obs1, Obs2, Obs3, Obs4 : string
begin
Obs:=TbPedidosObservacao.Value;
Obs1:=Copy(Obs,1,36);
Obs2:=Copy(Obs,37,73); //* essa linha q não quer dar certo
Obs3:=Copy(Obs,74,110);
Obs4:=Copy(Obs,111,147);
* A primeira linha dá certo ele pega do 1º caracter digitado e vai só até o 36º, pois 36 é a qtde q quero imprimir em cada linha, e a segunda não imprime somente 36 está imprimindo 62 não sei porq, ele pega do 37º caracter e vai até 99, a terceira linha dá certo tb ele pega do 74º caracter e imprimi até o 110º. Somento a 2ª linha q não estou conseguindo, não sei o q pode estar errado. Alguém tem alguma ideía de como fazer isso?
Eu criei as variaveis para receber o campo memo da tabela e estou tentando separar a qtde de caracteres desejado para imprimir em linha diferentes:
var Obs, Obs1, Obs2, Obs3, Obs4 : string
begin
Obs:=TbPedidosObservacao.Value;
Obs1:=Copy(Obs,1,36);
Obs2:=Copy(Obs,37,73); //* essa linha q não quer dar certo
Obs3:=Copy(Obs,74,110);
Obs4:=Copy(Obs,111,147);
* A primeira linha dá certo ele pega do 1º caracter digitado e vai só até o 36º, pois 36 é a qtde q quero imprimir em cada linha, e a segunda não imprime somente 36 está imprimindo 62 não sei porq, ele pega do 37º caracter e vai até 99, a terceira linha dá certo tb ele pega do 74º caracter e imprimi até o 110º. Somento a 2ª linha q não estou conseguindo, não sei o q pode estar errado. Alguém tem alguma ideía de como fazer isso?
GOSTEI 0
Mago M3rl1n
28/09/2004
Voce pode jogar cada linha do memo para uma variavel PCHAR e imprimi-lá em um loop FOR até a posição que voce deseja.
GOSTEI 0
Janete
28/09/2004
[quote:f1558c2774=´Mago M3rl1n´]Voce pode jogar cada linha do memo para uma variavel PCHAR e imprimi-lá em um loop FOR até a posição que voce deseja.[/quote:f1558c2774]
vc poderia me dar um exemplo de como fazer?
vc poderia me dar um exemplo de como fazer?
GOSTEI 0
Mago M3rl1n
28/09/2004
Eu tenho um componente para impressão que faz da seguinte maneira :
crie uma variavel de buffer e outra variavel para controlar seu tamanho.
var
buffer: pchar;
sizebuffer: integer;
Aloque um espaço de memoria para o buffer:
buffer := StrAlloc(60000);
Crie uma procedura que copie uma string para o buffer:
procedure EnviaString(Aux: String);
begin
StrPCopy(Buffer + SizeBuffer, Aux);
SizeBuffer := SizeBuffer + Length(Aux);
end;
Para imprimir o conteudo do buffer, faz assim :
procedure Impressao;
var
Prn: TextFile;
I: Integer;
begin
AssignFile(Prn, ´LPT1´);
Rewrite(Prn);
try
for I := 0 to SizeBuffer do
write(Prn, Buffer[I]);
writeLn(Prn, ´´);
finally
Close(Prn);
end;
end;
crie uma variavel de buffer e outra variavel para controlar seu tamanho.
var
buffer: pchar;
sizebuffer: integer;
Aloque um espaço de memoria para o buffer:
buffer := StrAlloc(60000);
Crie uma procedura que copie uma string para o buffer:
procedure EnviaString(Aux: String);
begin
StrPCopy(Buffer + SizeBuffer, Aux);
SizeBuffer := SizeBuffer + Length(Aux);
end;
Para imprimir o conteudo do buffer, faz assim :
procedure Impressao;
var
Prn: TextFile;
I: Integer;
begin
AssignFile(Prn, ´LPT1´);
Rewrite(Prn);
try
for I := 0 to SizeBuffer do
write(Prn, Buffer[I]);
writeLn(Prn, ´´);
finally
Close(Prn);
end;
end;
GOSTEI 0
Rguilemond
28/09/2004
Eu vi que este tópico é de 2004! Tudo bem, mas como não vi aqui a conclusão da dúvida da Janete, então resolvi postar a solução da dúvida, pois o tópico está aparecendo até hoje.
ERRADO:
------------------------------------------------
var Obs, Obs1, Obs2, Obs3, Obs4 : string
begin
Obs:=TbPedidosObservacao.Value;
Obs1:=Copy(Obs,1,36);
Obs2:=Copy(Obs,37,73); //* essa linha q não quer dar certo
Obs3:=Copy(Obs,74,110);
Obs4:=Copy(Obs,111,147);
CORRETO:
------------------------------------------------
var Obs, Obs1, Obs2, Obs3, Obs4 : string
begin
Obs:=TbPedidosObservacao.Value;
Obs1:=Copy(Obs,1,36);
Obs2:=Copy(Obs,37,36);
Obs3:=Copy(Obs,74,36);
Obs4:=Copy(Obs,111,36);
Explicando: O comando Copy tem o seguinte formato:
Copy( inicio, quantos );
Onde: ´inicio´ é a posição inicial do texto que se deseja extrair.
´quantos´ são quantos caracteres se deseja extrair a partir da posição inicial.
Somente isto.
ERRADO:
------------------------------------------------
var Obs, Obs1, Obs2, Obs3, Obs4 : string
begin
Obs:=TbPedidosObservacao.Value;
Obs1:=Copy(Obs,1,36);
Obs2:=Copy(Obs,37,73); //* essa linha q não quer dar certo
Obs3:=Copy(Obs,74,110);
Obs4:=Copy(Obs,111,147);
CORRETO:
------------------------------------------------
var Obs, Obs1, Obs2, Obs3, Obs4 : string
begin
Obs:=TbPedidosObservacao.Value;
Obs1:=Copy(Obs,1,36);
Obs2:=Copy(Obs,37,36);
Obs3:=Copy(Obs,74,36);
Obs4:=Copy(Obs,111,36);
Explicando: O comando Copy tem o seguinte formato:
Copy( inicio, quantos );
Onde: ´inicio´ é a posição inicial do texto que se deseja extrair.
´quantos´ são quantos caracteres se deseja extrair a partir da posição inicial.
Somente isto.
GOSTEI 0