From: Peter T. <pe...@us...> - 2003-01-28 15:13:17
|
Update of /cvsroot/jvcl/dev/p3/examples/JvPreviewDocument In directory sc8-pr-cvs1:/tmp/cvs-serv13632/p3/examples/JvPreviewDocument Modified Files: MainFrm.dfm MainFrm.pas Log Message: Index: MainFrm.dfm =================================================================== RCS file: /cvsroot/jvcl/dev/p3/examples/JvPreviewDocument/MainFrm.dfm,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** MainFrm.dfm 28 Jan 2003 01:19:27 -0000 1.4 --- MainFrm.dfm 28 Jan 2003 15:13:12 -0000 1.5 *************** *** 205,211 **** Caption = '-' end ! object Printer1: TMenuItem ! Caption = 'Printer...' ShortCut = 16464 OnClick = Printer1Click end --- 205,216 ---- Caption = '-' end ! object Print1: TMenuItem ! Caption = 'Print...' ShortCut = 16464 + OnClick = Print1Click + end + object Printer1: TMenuItem + Caption = 'Printer Settings...' + ShortCut = 24656 OnClick = Printer1Click end *************** *** 263,266 **** --- 268,280 ---- Left = 92 Top = 112 + end + object PrintDialog1: TPrintDialog + Copies = 1 + MaxPage = 33 + Options = [poPageNums] + PrintRange = prPageNums + ToPage = 33 + Left = 88 + Top = 160 end end Index: MainFrm.pas =================================================================== RCS file: /cvsroot/jvcl/dev/p3/examples/JvPreviewDocument/MainFrm.pas,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** MainFrm.pas 28 Jan 2003 01:19:27 -0000 1.4 --- MainFrm.pas 28 Jan 2003 15:13:12 -0000 1.5 *************** *** 46,49 **** --- 46,51 ---- OpenDialog1: TOpenDialog; reOriginal: TJvRichEdit; + PrintDialog1: TPrintDialog; + Print1: TMenuItem; procedure FormCreate(Sender: TObject); procedure udColumnsClick(Sender: TObject; Button: TUDBtnType); *************** *** 61,64 **** --- 63,67 ---- procedure Last1Click(Sender: TObject); procedure About1Click(Sender: TObject); + procedure Print1Click(Sender: TObject); private procedure OpenFile(const Filename: string); *************** *** 89,96 **** FFinished: boolean; FLastChar: integer; - FSaveRect: TREct; FRE: TRichEdit; FPreview: TJvPreviewDoc; - protected procedure DoAddPage(Sender: TObject; PageIndex: integer; Canvas: TCanvas; PageRect, PrintRect: TRect); --- 92,97 ---- *************** *** 101,104 **** --- 102,106 ---- end; + var frmMain: TfrmMain; *************** *** 109,112 **** --- 111,133 ---- {$R *.dfm} + type + TJvPrinter = class(TInterfacedObject, IUnknown, IJvPrinter) + private + FPrinter:TPrinter; + public + constructor Create(APrinter:TPrinter); + procedure BeginDoc; + procedure EndDoc; + function GetAborted: Boolean; + function GetCanvas: TCanvas; + function GetPageHeight: Integer; + function GetPageWidth: Integer; + function GetPrinting: Boolean; + procedure NewPage; + function GetTitle: String; + procedure SetTitle(const Value: String); + + end; + { TJvStringsPreviewRenderer } *************** *** 227,236 **** begin reOriginal.Lines.LoadFromFile(OpenDialog1.Filename); with TJvRTFRenderer.Create(pd, reOriginal) do try ! while not Finished do Application.ProcessMessages; finally Free; end; Caption := Format('%s: - (%d pages)', --- 248,259 ---- begin reOriginal.Lines.LoadFromFile(OpenDialog1.Filename); + Screen.Cursor := crHourGlass; with TJvRTFRenderer.Create(pd, reOriginal) do try ! while not Finished do // hangs here sometimes, why? Application.ProcessMessages; finally Free; + Screen.Cursor := crDefault; end; Caption := Format('%s: - (%d pages)', *************** *** 310,314 **** end; ! // this code was almost entirely stolen from TRichEidt.Print procedure TJvRTFRenderer.DoAddPage(Sender: TObject; PageIndex: integer; Canvas: TCanvas; PageRect, PrintRect: TRect); --- 333,337 ---- end; ! // this code was almost entirely stolen from TRichEdit.Print procedure TJvRTFRenderer.DoAddPage(Sender: TObject; PageIndex: integer; Canvas: TCanvas; PageRect, PrintRect: TRect); *************** *** 338,342 **** Range.rc.bottom := FRE.PageRect.Bottom * 1440 div LogY; end; - FSaveRect := Range.rc; Range.rcPage := Range.rc; MaxLen := FRE.GetTextLen; --- 361,364 ---- *************** *** 359,362 **** --- 381,457 ---- end; // FFinished := true; + end; + + { TJvPrinter } + + procedure TJvPrinter.BeginDoc; + begin + FPrinter.BeginDoc; + end; + + constructor TJvPrinter.Create(APrinter: TPrinter); + begin + Assert(APrinter <> nil,''); + inherited Create; + FPrinter := APrinter; + end; + + procedure TJvPrinter.EndDoc; + begin + FPrinter.EndDoc; + end; + + function TJvPrinter.GetAborted: Boolean; + begin + Result := FPrinter.Aborted; + end; + + function TJvPrinter.GetCanvas: TCanvas; + begin + Result := FPrinter.Canvas; + end; + + function TJvPrinter.GetPageHeight: Integer; + begin + Result := FPrinter.PageHeight; + end; + + function TJvPrinter.GetPageWidth: Integer; + begin + Result := FPrinter.PageWidth; + end; + + function TJvPrinter.GetPrinting: Boolean; + begin + Result := FPrinter.Printing; + end; + + function TJvPrinter.GetTitle: String; + begin + Result := FPrinter.Title; + end; + + procedure TJvPrinter.NewPage; + begin + FPrinter.NewPage; + end; + + procedure TJvPrinter.SetTitle(const Value: String); + begin + FPrinter.Title := Value; + end; + + procedure TfrmMain.Print1Click(Sender: TObject); + var jp:TJvPrinter; + begin + if PrintDialog1.Execute then + begin + jp := TJvPrinter.Create(Printer); + try + pd.PrintRange(jp,0,-1,1,false); + finally + jp.Free; + end; + end; end; |