+1 800 256 3608 (toll-free in North America) or +49 7531 90 60 10| service@combit.com

TLl13PreviewPage.draw


(Guest) #1

Hallo,

wie funktioniert die Funktion draw eigentlich.
ich bekomme immer nur die leeren Seiten.

Ich muss jede Seite der Vorschaudatei doppelt in einem Druckjob drucken

ich verwende LL13 und Delphi11

wenn ich statt aLLPage.Draw irgend was anderes auf den Printer.Canvas (z.B. mit Texout) ausgebe wird es ausgedruckt

mache ich etwas falsch?

mein Code:
var
aLLFile:TLl13PreviewFile;
aLLPage:TLl13PreviewPage;
aR:TRect;
i,j: integer;
begin

sFile := ‘c:\AA.LL’;
aLLFile := TLl13PreviewFile.Create(sFile,True);
try
if aLLFile.PageCount > 0 then
begin
Printer.PrinterIndex := Printer.Printers.IndexOf(FLLPrinter.GetPrinterName);
aR.Left := 0;
aR.Top := 0;
aR.right := Printer.PageWidth;
aR.bottom := Printer.PageHeight;
Printer.Title := ‘testdruck’;
Printer.BeginDoc;
for i := 0 to aLLFile.PageCount - 1 do
begin
aLLPage := aLLFile.Page[i];
for j := 0 to 0 do
begin
if (i > 0) or (j > 0) then
Printer.NewPage;
aLLPage.Draw(Printer.Canvas,aR,false);
end;
end;
Printer.EndDoc;
end;
finally
aLLFile.free;
end;


(Guest) #2

Hallo,

da sucht man sich ja zum Tode. :slight_smile:

in der L13.pas ist Bug drin.
wahrscheinlich bei den anderen Funktionen wie GetMetafile auch aber das habe ich nicht getestet.

Original:
procedure TLl13PreviewPage.Draw(Canvas: TCanvas; Rect: TRect; ResolutionCorrection: boolean);
var
prnDC: HDC;
begin
if GetDeviceCaps(Canvas.Handle, TECHNOLOGY) = DT_RASDISPLAY then
prnDC := 0
else
prnDC := Canvas.Handle;
LlStgsysDrawPage(FHandle, Canvas.Handle, 0, False, nil, FPageIndex,
ResolutionCorrection, nil);
end;

und so funktioniert es wieder
… FPageIndex+1, ist entscheidend.

procedure TLl13PreviewPage.Draw(Canvas: TCanvas; Rect: TRect; ResolutionCorrection: boolean);
var
prnDC: HDC;
begin
if GetDeviceCaps(Canvas.Handle, TECHNOLOGY) = DT_RASDISPLAY then
prnDC := 0
else
prnDC := Canvas.Handle;
LlStgsysDrawPage(FHandle, Canvas.Handle, 0, False, nil, FPageIndex+1,
ResolutionCorrection, nil);
end;

Gruß

Hallo,

wie funktioniert die Funktion draw eigentlich.
ich bekomme immer nur die leeren Seiten.

Ich muss jede Seite der Vorschaudatei doppelt in einem Druckjob drucken

ich verwende LL13 und Delphi11

wenn ich statt aLLPage.Draw irgend was anderes auf den Printer.Canvas (z.B. mit Texout) ausgebe wird es ausgedruckt

mache ich etwas falsch?

mein Code:
var
aLLFile:TLl13PreviewFile;
aLLPage:TLl13PreviewPage;
aR:TRect;
i,j: integer;
begin

sFile := ‘c:\AA.LL’;
aLLFile := TLl13PreviewFile.Create(sFile,True);
try
if aLLFile.PageCount > 0 then
begin
Printer.PrinterIndex := Printer.Printers.IndexOf(FLLPrinter.GetPrinterName);
aR.Left := 0;
aR.Top := 0;
aR.right := Printer.PageWidth;
aR.bottom := Printer.PageHeight;
Printer.Title := ‘testdruck’;
Printer.BeginDoc;
for i := 0 to aLLFile.PageCount - 1 do
begin
aLLPage := aLLFile.Page[i];
for j := 0 to 0 do
begin
if (i > 0) or (j > 0) then
Printer.NewPage;
aLLPage.Draw(Printer.Canvas,aR,false);
end;
end;
Printer.EndDoc;
end;
finally
aLLFile.free;
end;