Imprimir memo em matricial...

Delphi

28/09/2004

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.


Janete

Janete

Curtidas 0

Respostas

Janete

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?


GOSTEI 0
Mago M3rl1n

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

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?


GOSTEI 0
Mago M3rl1n

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;


GOSTEI 0
Rguilemond

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.


GOSTEI 0
POSTAR