Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Impresión (https://www.clubdelphi.com/foros/forumdisplay.php?f=4)
-   -   zReport, salta al comenzar (https://www.clubdelphi.com/foros/showthread.php?t=12396)

teletranx 15-07-2004 02:25:06

zReport, salta al comenzar
 
saludos,

Tengo un problema con zReport, ya que cuando empieza a imprimir salta 2 lineas. lo cual no quiero que pase.
Esas lineas tienes caracteres de control, los cuales son Nro 15 y 13 en ascii

Que hago?
Gracias...
Juan Carlos:confused:

teletranx 20-07-2004 13:43:33

Gracias,

encontre la solución, la cual es modificar, dos archivos fuentes, del zreport

que esa pequeña modificación ya no hay saltos al comenzar.

juan Carlos

p.d.

si alguien se interesa en las modificaciones. :D

Ignacio 29-07-2004 16:15:23

mismo problema y otros
 
Hola

Tengo el mismo problema que voz. Me podrias desir cual es el archivo a modificar y en que lugar?

Te cuento mas en detalle. El control ZReport tiene una propiedad en la cual le especifico el alto del formulario. Dentro declaro una banda que necesariamente deberá tener 2 lineas de alto menos que el control ZReport quedando una de ellas en la parte superior y sin usar. Podrá ser este el problema?

Otro problema que tengo es el lugar donde comienza la impresión de los formularios siguientes. El programa debe imprimir mas de 100 recibos en forma secuencial. A cada recibo le queda un espacio en la parte inferior que no se debe imprimir. Necesito saltar esta parte para comensar la impreción del proximo formulario.

Me das una mano?

sur-se 24-08-2004 16:42:44

Modificación
 
Hola. Teletranx, podrías poner el código con los cambios que has realizado para evitar ese problema. Gracias.

teletranx 02-09-2004 13:59:35

Saludos

Cambie los fuentes, y también en donde va el código escape de salto de página coloque "#21" para controlar cuando cambia de hoja.

Donde lo coloco los fuentes con las modificaciones y un ejemplo del zreport


Saludos


Juan Carlos:D

sur-se 16-09-2004 17:01:58

Creo que aquí mismo, si no es muy largo.

teletranx 16-09-2004 21:45:49

En zrEspace.pas

const
EscapeChar: Char = '\';
EscapeSpecifiers: TZREscapeSpecifiers =
('@', '=', 'P', 'E', 'C', 'c', 'B', 'b', 'I', 'i', 'U', 'u', 'H', 'h', 'L', 'l', '<', '>', '{', '}');
// Nuevo
Var
Contador : Integer;
Cadena : String;
Sw : Boolean;
LargoPagina : Integer;

// Cambios
procedure TZREscapeStream.WriteString(const Value: String);
var
e: TZREscapeCode;
S: String;
begin
S:= Value;
for e:= Low(TZREscapeCode) to High(TZREscapeCode) do
S:= StringReplace(S, EscapeChar + EscapeSpecifiers[e], Escapes[e], [rfReplaceAll]);
if (S = #$15) and Sw and (LargoPagina <= Contador)then
Begin
Contador := 0;
Cadena := '';
Sw := False;
End;
Contador := Contador + 1;
if Contador < 4 then
Begin
if S = #$15 then
S := #$C;
Cadena := Cadena + S;
End;
if (Contador > 2) And (not Sw) then
Begin
Sw := True;
S := Cadena;
end;
if S = #$15 then
S := '';
if Sw then
inherited WriteString(S);
end;


En zrPrntr.pas

procedure TZRPrinter.Cleanup;
var
p : TZRPage;
begin
Cancel;
while PageCountY > 0 do begin
p := TZRPage(fPages.Last);
fPages.Remove(p);
p.Free;
end;
ZREscape.Contador := 0;
ZREscape.Cadena := '';
ZREscape.Sw := False;
fPageCount := 0;
fCurrentY := -1;
fCurrentX := -1;
fStatus := zpsReady;
end;


function TZRPrinter.Setup: Boolean;
begin
with TfmPrinterSetup.Create(Application) do
try
ZREscape.Contador := 0;
ZREscape.Cadena := '';
ZREscape.Sw := False;
ZREscape.LargoPagina := Report.PageHeight;
with FormPrintCommonDialog do begin
Options := [poPrintToFile,poPageNums,poWarning];
MinPage := 1;
MaxPage := PageCount;
Copies := Self.Options.Copies;
Collate := True;
FromPage := Self.Options.PageFrom;
ToPage := Self.Options.PageTo;
if (FromPage > MinPage) or
(ToPage < MaxPage) then
PrintRange := prPageNums
else
PrintRange := prAllPages;
PrintToFile := Self.Options.Destination = zrdFile;
end;
cbConvertToOEM.Checked := Self.Options.OEMConvert;
cbIgnoreFontStyles.Checked := Self.Options.IgnoreStyles;
cbEscapeModel.ItemIndex := Integer(Self.Options.Escapes.Model);
Result := FormPrintCommonDialog.Execute;
if Result then begin
with FormPrintCommonDialog do begin
Self.Options.PageFrom := FromPage;
Self.Options.PageTo := ToPage;
Self.Options.Copies := Copies;
end;
Self.Options.OEMConvert := cbConvertToOEM.Checked;
Self.Options.IgnoreStyles := cbIgnoreFontStyles.Checked;
Self.Options.Escapes.Model := TZREscapeModel(cbEscapeModel.ItemIndex);
if FormPrintCommonDialog.PrintToFile then begin
Self.Options.Destination := zrdFile;
with TSaveDialog.Create(Application) do
try
Filter := LoadStr(szrFileFilter);
Options := Options + [ofOverwritePrompt,ofPathMustExist];
//FileName := Self.Options.FileName;
FileName := Self.Report.FileName;
Result := Execute;
if Result then Self.Options.FileName := FileName;
finally
Free;
end;
end else
Self.Options.Destination := zrdPrinter;
end;
finally
Free;
end;
...
...
end;

En la Aplicación en los códigos escape del del zReport

en

+ Optiones
+ Escapes
PageFinish #21 con el cual controlo el salto de página entre hojas



Saludos Juan Carlos:D


La franja horaria es GMT +2. Ahora son las 16:49:09.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi