Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Rave Druckvorschau anpassen! (https://www.delphipraxis.net/36227-rave-druckvorschau-anpassen.html)

Christof 17. Dez 2004 12:32


Rave Druckvorschau anpassen!
 
Hallo,

ich habe ein Problem mit der Ravevorschau (Rave BE) "nicht Rave BEX".

Ich habe die Tipps von Nevrona beherzigt und einen eigenen Preview Dialog geschrieben.

Klappt auch hervorragend, ich kann navigieren usw.. Doch kann ich die Seite aus dem Preview über einen Button direkt drucken?

Bei der Standard Rave Vorschau geht das ja auch. Aber wie durch einen Button. Habe etwas in der Art RvRenderPreview.PrintRender... aber ich weiß die Parameter nicht. Ist diese Procedure überhaupt zum direkten drucken?


Gruß
Christof

HaZe 17. Dez 2004 13:19

Re: Rave Druckvorschau anpassen!
 
hi


also eigendlich sollte zum direkt drucken rvreport1.print; gehn bei quickreport ist es auch so aber ich möchte mich nicht drauf festlegen, probiers mal aus


cya

HaZe

Christof 17. Dez 2004 14:14

Re: Rave Druckvorschau anpassen!
 
Zitat:

Zitat von HaZe
hi


also eigendlich sollte zum direkt drucken rvreport1.print; gehn bei quickreport ist es auch so aber ich möchte mich nicht drauf festlegen, probiers mal aus


cya

HaZe

Die Procedur gibt es bei einem rave report nicht!

Trotzdem danke!

Treffnix 17. Dez 2004 14:19

Re: Rave Druckvorschau anpassen!
 
Bei Rave heisst das afaik Execute und nicht print. Dazu brauchst du aber keine Vorschau.

Christof 17. Dez 2004 14:23

Re: Rave Druckvorschau anpassen!
 
Zitat:

Zitat von Treffnix
Bei Rave heisst das afaik Execute und nicht print. Dazu brauchst du aber keine Vorschau.

Ja, aber bei Execute wird doch immer der Setup Dialog angezeigt.

Ich will ja in meinem eigen Preview Form durch eine Button dieses Preview drucken können. Wie bei der RAVE Standardvorschau!
Nur halt selbst programmiert!!!!


Gruß
Christof

Treffnix 17. Dez 2004 14:25

Re: Rave Druckvorschau anpassen!
 
Ich hab die Strukturen gerade nicht so genau im Kopf, aber die Preview ist doch irgendwie mit einem TRvProject ( oder so ähnlich ) verknüpft, oder? Und von diesem Project musst du die Procedure Execute nehmen. Die Preview erzeugt eine Vorschau. Darum heisst sie Preview. Ist also eigentlich nur ein Zusatzteil. Die eigentliche Rave-Hauptfunktion ist das Drucken.

Christof 17. Dez 2004 14:29

Re: Rave Druckvorschau anpassen!
 
Zitat:

Zitat von Treffnix
Ich hab die Strukturen gerade nicht so genau im Kopf, aber die Preview ist doch irgendwie mit einem TRvProject ( oder so ähnlich ) verknüpft, oder? Und von diesem Project musst du die Procedure Execute nehmen. Die Preview erzeugt eine Vorschau. Darum heisst sie Preview. Ist also eigentlich nur ein Zusatzteil. Die eigentliche Rave-Hauptfunktion ist das Drucken.

Ja, aber wenn du dir den RAVE Preview Dialog ansiehst ist da ein Button drucken mit dem ich aus dem Preview den Preview drucken kann und Execute startet den Dialog um auszuwählen, oder man Druckvorschau oder direkt drucken will.
Aber vom Preview komme ich dort nicht dran!

merlin17 17. Dez 2004 14:48

Re: Rave Druckvorschau anpassen!
 
Christof,
Code:
procedure TRvPreview.DruckenBtn(Sender: TObject);
var
  DoPrint: boolean;
  I1: integer;
  ForceCopies: integer;
begin
  if soAllowPrintFromPreview in ReportSystem.SystemOptions then begin
    RvRenderPrinter.NDRStream := RvRenderPreview.NDRStream;
    RvRenderPrinter.Pages := RvRenderPreview.Pages;
    if ssAllowPreviewSetup in ReportSystem.SystemSetups then begin
      with TRpSetupForm.Create(self) do try
        PreviewSetup := true;
        ReportSystem := Self.ReportSystem;
        FilePrinter := RvRenderPrinter;
        DoPrint := (ShowModal = mrOK);
        RvRenderPrinter.IgnoreFileSettings := true;
      finally
        Free;
      end; { with }
    end else begin
      DoPrint := true;
    end; { else }

    if DoPrint then begin
      if (RvRenderPrinter.MaxCopies <= 1) and (RvRenderPrinter.Copies > 1) then begin
        ForceCopies := RvRenderPrinter.Copies;
        RvRenderPrinter.Copies := 1;
      end else begin
        ForceCopies := 1;
      end; { else }
      for I1 := 1 to ForceCopies do begin
        if Assigned(RvRenderPrinter.NDRStream) then begin
          RvRenderPrinter.Render(RvRenderPrinter.NDRStream);
        end else begin
          RvRenderPrinter.Render(InputStream);
        end; { else }
      end; { for }
      AfterPreviewPrintEvent;
      RvRenderPrinter.NDRStream := nil
    end; { if }
  end; { if }
  SetButtonState;
end;
man sollte aber das NDR.System mit den anderen Engines verstanden haben, um den internen Ablauf von Rave zu verstehen...
dann gehen dinge, die sind absolut toll, z.B. streaming der reports über Http/soap etc.etc.;
ist am Anfang aber heavy, gebe ich zu (vor allem in der be-Version on Source...) :wink:

:-) thomas, TeamNevrona

Christof 17. Dez 2004 15:04

Re: Rave Druckvorschau anpassen!
 
Zitat:

Zitat von merlin17
Christof,
Code:
procedure TRvPreview.DruckenBtn(Sender: TObject);
var
  DoPrint: boolean;
  I1: integer;
  ForceCopies: integer;
begin
  if soAllowPrintFromPreview in ReportSystem.SystemOptions then begin
    RvRenderPrinter.NDRStream := RvRenderPreview.NDRStream;
    RvRenderPrinter.Pages := RvRenderPreview.Pages;
    if ssAllowPreviewSetup in ReportSystem.SystemSetups then begin
      with TRpSetupForm.Create(self) do try
        PreviewSetup := true;
        ReportSystem := Self.ReportSystem;
        FilePrinter := RvRenderPrinter;
        DoPrint := (ShowModal = mrOK);
        RvRenderPrinter.IgnoreFileSettings := true;
      finally
        Free;
      end; { with }
    end else begin
      DoPrint := true;
    end; { else }

    if DoPrint then begin
      if (RvRenderPrinter.MaxCopies <= 1) and (RvRenderPrinter.Copies > 1) then begin
        ForceCopies := RvRenderPrinter.Copies;
        RvRenderPrinter.Copies := 1;
      end else begin
        ForceCopies := 1;
      end; { else }
      for I1 := 1 to ForceCopies do begin
        if Assigned(RvRenderPrinter.NDRStream) then begin
          RvRenderPrinter.Render(RvRenderPrinter.NDRStream);
        end else begin
          RvRenderPrinter.Render(InputStream);
        end; { else }
      end; { for }
      AfterPreviewPrintEvent;
      RvRenderPrinter.NDRStream := nil
    end; { if }
  end; { if }
  SetButtonState;
end;
man sollte aber das NDR.System mit den anderen Engines verstanden haben, um den internen Ablauf von Rave zu verstehen...
dann gehen dinge, die sind absolut toll, z.B. streaming der reports über Http/soap etc.etc.;
ist am Anfang aber heavy, gebe ich zu (vor allem in der be-Version on Source...) :wink:

:-) thomas, TeamNevrona


Vielen Dank für die ausführliche Antwort.
Wo kommt den der Code rein auf meinem Druck-Button auf meinem Preview Form?

Wenn ich das tue bekomme ich zwei Fehlermedlungen AferPreviewPrintEvent und SetButtonState kennt er nicht!

Gruß
Christof

Glühwürmchen 27. Jun 2005 15:18

Re: Rave Druckvorschau anpassen!
 
Wie wär's damit:

Delphi-Quellcode:
procedure TfrmBereich.btnDruckenClick(Sender: TObject);
begin
  RvSystem1.DefaultDest := rdPrinter;
  rvBericht.Open;
  rvBericht.ExecuteReport('Report1');
  rvBericht.Close;
end;
Dazu mußt Du die Komponente "TRvSystem" plaziert und bei der Komponente TRvProjekt unter Engine eingetragen haben.
Das hier habe ich auch noch eingestellt, bin aber nicht sicher, ob man das braucht:
Bei "RvSystem" unter "System Setup" die Eigenschaft "ssAllowSetup" auf FALSE.


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:17 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