Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi viele Seiten drucken (https://www.delphipraxis.net/109794-viele-seiten-drucken.html)

SimStar001 7. Mär 2008 16:42


viele Seiten drucken
 
Hallo, ich muss in meinem programm ein paar bilder ausdrucken.

hier mal nen Quellcode dazu:

Delphi-Quellcode:
procedure drucken;
var pic : TJPEGImage;
    breite, hoehe : integer;
    i : integer;
begin
  if printdialog1.Execute then
    begin
    pic := TJPEGImage.create;
    Orientation := poPortrait;
    with printer do
      begin
        for i := 1 to Seitenanzahl do
        begin
        BeginDoc;
        rechnung.Picture.LoadFromFile(extractfilepath(paramstr(0)) + '\Daten\Rechnungen\Seite' + inttostr(Aktuelle_Seite) + '.bmp');
        pic.assign(Rechnung.Picture.Graphic);
        breite := GetDeviceCaps(Printer.Handle,Horzres);
        hoehe := GetDeviceCaps(Printer.Handle,Vertres);
        Canvas.StretchDraw(Rect(0,0,Breite,Hoehe), pic);
        EndDoc;
        end;
      end;

    pic.Free;
    end;
end;

nun meine frage bzw das problem:

Wenn ich im Printdialog den dateinamen eingebe unter dem ich speichern möchte, bzw drucken möchte, dann druckt er mir nur die erste seite aus, und fragt dann immer wieder neu bei jeder seite!

wie kann ich diese frage umgehen, so dass er alles hintereinander ausdruckt?


Vielen dank für die Hilfe

marabu 7. Mär 2008 18:25

Re: viele Seiten drucken
 
Hallo,

du musst einfach nur BeginDoc und EndDoc aus der Schleife herausziehen.

Freundliche Grüße

SimStar001 7. Mär 2008 18:33

Re: viele Seiten drucken
 
Vielen Dank für den tip, nur wenn ich es so mache wie du sagst klappt es auch net!

jetzt druckt er nur eine seite und den rest nicht!?


wieso das?


Delphi-Quellcode:
with printer do
      begin
      Orientation := poPortrait;
      BeginDoc;
      for i := 1 to Seitenanzahl do
        begin
        rechnung.Picture.LoadFromFile(extractfilepath(paramstr(0)) + '\Daten\Rechnungen\Seite' + inttostr(Aktuelle_Seite) + '.bmp');
        pic.assign(Rechnung.Picture.Graphic);
        breite := GetDeviceCaps(Printer.Handle,Horzres);
        hoehe := GetDeviceCaps(Printer.Handle,Vertres);
        Canvas.StretchDraw(Rect(0,0,Breite,Hoehe), pic);
        end;
      EndDoc;
      end;

marabu 7. Mär 2008 18:57

Re: viele Seiten drucken
 
Vielleicht, weil du alle Bilder übereinander malst?

Füge mal NewPage ein:

Delphi-Quellcode:
begin
  // ...
    with printer do
    begin
      Orientation := poPortrait;
      BeginDoc;
      for i := 1 to Seitenanzahl do
      begin
        rechnung.Picture.LoadFromFile(extractfilepath(paramstr(0)) + '\Daten\Rechnungen\Seite' + inttostr(Aktuelle_Seite) + '.bmp');
        pic.assign(Rechnung.Picture.Graphic);
        breite := GetDeviceCaps(Printer.Handle,Horzres);
        hoehe := GetDeviceCaps(Printer.Handle,Vertres);
        Canvas.StretchDraw(Rect(0,0,Breite,Hoehe), pic);
        NewPage;
      end;
      EndDoc;
    end;

s-off 7. Mär 2008 19:31

Re: viele Seiten drucken
 
Hallo,

musst Du nicht 'Aktuelle_Seite' irgendwo in der Schleife aktualisieren?

SimStar001 8. Mär 2008 16:39

Re: viele Seiten drucken
 
Danke ersteinmal für den tip mit der neuen Seite! *fg* zu einfach um selbst drauf zu kommen! *fg*

Ja und nu stimmt es dass ich die "Aktuelle Seite" net ändere! *g* ist mir gerade auch beim ausprobieren aufgefallen!


Danke auch für diesen Tip!



lg Marco

SimStar001 8. Mär 2008 16:48

Re: viele Seiten drucken
 
So vielen Dank, jetzt funktioniert es auch genauso wie ich es will!


hier nochmal der korrekte Quellcode:

Delphi-Quellcode:
with printer do
      begin
      Orientation := poPortrait;
      BeginDoc;
      for i := 1 to Seitenanzahl do
        begin
        rechnung.Picture.LoadFromFile(extractfilepath(paramstr(0)) + '\Daten\Rechnungen\Seite' + inttostr(i) + '.bmp');
        pic.assign(Rechnung.Picture.Graphic);
        breite := GetDeviceCaps(Printer.Handle,Horzres);
        hoehe := GetDeviceCaps(Printer.Handle,Vertres);
        Canvas.StretchDraw(Rect(0,0,Breite,Hoehe), pic);
        if i < Seitenanzahl then
          NewPage;
        end;
      EndDoc;
      end;

Danköö!


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:52 Uhr.

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