Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Druck zu klein mit PaintTo (https://www.delphipraxis.net/91416-druck-zu-klein-mit-paintto.html)

Günter Dahlke 4. Mai 2007 15:46


Druck zu klein mit PaintTo
 
D7PE PaintTo und F1. Dort erscheint ein Beispiel wie man PageControl
ausdrucken kann. Druckt leider nicht, ich mußte 5 Zeilen verschieben.
Jetzt erfolgt ein Ausdruck,aber sehr klein. Mit den vielen Beispielen
hier im Forum habe ich es nicht hinbekommen. Wer kann mir Tipps geben,
wie ich den Ausdruck größer bekomme. Es geht zwar bei mir um ein
StringGrid. Ich bekomme dort den Ausdruck komplett über mehere Seiten,
aber eben auch klein.

Viele Dank im Voraus

Günter

procedure TForm1.Button1Click(Sender: TObject);
var
I, Start, Stop: Integer;
begin
// Folgende 5 Zeilen in den Printdialog verschoben, da hier keine Funktion
{PrintDialog1.Options := [poPageNums, poSelection];
PrintDialog1.FromPage := 1;
PrintDialog1.MinPage := 1;
PrintDialog1.ToPage := PageControl1.PageCount;
PrintDialog1.MaxPage := PageControl1.PageCount; }

if PrintDialog1.Execute then
begin
PrintDialog1.Options := [poPageNums, poSelection];
PrintDialog1.FromPage := 1;
PrintDialog1.MinPage := 1;
PrintDialog1.ToPage := PageControl1.PageCount;
PrintDialog1.MaxPage := PageControl1.PageCount;

{ Ausgewählten Druckbereich ermitteln }
with PrintDialog1 do
begin
if PrintRange = prAllPages then
begin
Start := MinPage - 1;
Stop := MaxPage - 1;
end
else if PrintRange = prSelection then
begin
Start := PageControl1.ActivePage.PageIndex;
Stop := Start;
end
else { PrintRange = prPageNums }
begin
Start := FromPage - 1;
Stop := ToPage - 1;
end;
end;
{ Jetzt die Seiten drucken }
with Printer do
begin
BeginDoc;
for I := Start to Stop do
begin
PageControl1.Pages[I].PaintTo(Handle, 10, 10);
if I <> Stop then
NewPage;
end;
EndDoc;
end;
end;
end;

end.

bitsetter 4. Mai 2007 18:42

Re: Druck zu klein mit PaintTo
 
Moin Moin,

vor kurzem ging es um ein ähnliches Thema, allerdings um ein TGraphic.
Kann ja sein, dass dir dieser Beitrag etwas weiter hilft.
Problematisch kann es allerdings werden, wenn der Ausdruck über mehrere Seiten erfolgt.
Anstatt
Delphi-Quellcode:
Printer.Canvas.Draw(iLeft, iTop, Graphic);
müsste man dann wohl
Delphi-Quellcode:
 PageControl1.Pages[I].PaintTo(Handle, 10, 10);
schreiben.

Günter Dahlke 8. Mai 2007 11:10

Re: Druck zu klein mit PaintTo
 
Vielen Dank bitsetter für Deine Antwort.

Mit dem Austausch zu dieser Druckroutine
kommt der Ausdruck in Originalgröße.

[delphi]
{ Jetzt die Seiten drucken }
Printer.BeginDoc;
begin
for I := Start to Stop do
begin
SetMapMode( printer.canvas.handle, MM_ANISOTROPIC );
SetWindowExtEx(printer.canvas.handle,
GetDeviceCaps(canvas.handle, LOGPIXELSX),
GetDeviceCaps(canvas.handle, LOGPIXELSY),
Nil);
SetViewportExtEx(printer.canvas.handle,
GetDeviceCaps(printer.canvas.handle, LOGPIXELSX),
GetDeviceCaps(printer.canvas.handle, LOGPIXELSY),
Nil);
PageControl1.Pages[I].PaintTo( printer.canvas.handle, 10, 10 ); // Rand,oben,links
if I <> Stop then Printer.NewPage;
end;
Printer.EndDoc;
end;
end;
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:30 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz