PDA

Ver la Versión Completa : asunto solucionado...


superhopi
14-05-2003, 10:56:15
tenia un problema con el quick report, asi que he decidido imprimir utilizando la libreria printers. Solo una preguntilla mas:
¿como puedo hacer que pase de linea cuando el texto es mas largo que el folio?

lo que intento que pase de linea es esto:

texto:=memo.text
inc(y, 100);
TextOut(100, y, texto);

Gracias.

cadetill
14-05-2003, 11:08:42
A ver si te sirve esto


// Suponiendo que caben 50 letras por linea
var str : string;
begin
str := Memo.Text;
y := 100; // o el que necesites para inicializar
while length(str) > 50 do
begin
TextOut(100, y, copy(str, 1, 50));
Delete(str, 1, 50);
inc(y, 100);
end;
end;


Este ejemplo supone que caben 50 caracteres por linea. Claro esta que esto funciona bien para tipo de letra de igual tamaño estilo courrier. Para las demas tendrias que hacerlo de forma aproximada.

Tambien deverias de controlar que no rompiera una palabra por la mitad.

Espero te sirva

superhopi
14-05-2003, 11:19:25
tio gracias, con unos pequeños cambios me ha salido lo que queria.

:o :p :cool: :eek: :D :) ;)

superhopi
16-05-2003, 10:21:14
y que puedo hacer para que si la impresion que voy a llevar a cabo tiene mas de una pagina me imprima las dos paginas?

cadetill
16-05-2003, 11:00:58
Tienes que saber la cantidad de lineas que le caben a la pagina, Entonces, cada vez que imprimes una linea, incrementas una variable contador. Si esta variable contador llega a las lineas maximas de la pagina, haces una llamada a Printer.NewPage

Espero te sirva