home *** CD-ROM | disk | FTP | other *** search
/ Chip 1999 January / Chip_1999-01_cd.bin / zkuste / delphi / D1 / PRINTP43.ZIP / PRINTCHA.PAS < prev    next >
Pascal/Delphi Source File  |  1995-11-03  |  2KB  |  67 lines

  1. unit Printcha; {AddPrintChart Version 4.2 Copyright ⌐ W. Murto 1995}
  2.                {Use with PrintPage Version 4.2 or higher}
  3. interface
  4.  
  5. uses
  6.   SysUtils, WinTypes, WinProcs, Classes,
  7.   Printpag, Chart2FX, ChartFx;
  8.  
  9. type
  10.   TAddPrintChart = class(TComponent)
  11.   private
  12.     { Private declarations }
  13.     fPPC : TPrintPage;
  14.     fPrintOther : TNotifyEvent;
  15.     procedure PrintChart(Sender: TObject);
  16.   protected
  17.     { Protected declarations }
  18.     procedure Loaded; override;
  19.   public
  20.     { Public declarations }
  21.   published
  22.     { Published declarations }
  23.     property PrintPageComponent: TPrintPage read fPPC write fPPC;
  24.   end;
  25.  
  26. procedure Register;
  27.  
  28. implementation
  29.  
  30. procedure Register;
  31. begin
  32.   RegisterComponents('Samples', [TAddPrintChart]);
  33. end;
  34.  
  35. procedure TAddPrintChart.Loaded;
  36. begin
  37.   inherited Loaded;
  38.   if Assigned(fPPC) then
  39.   begin
  40.     fPrintOther := fPPC.OnExternalPrint;
  41.     fPPC.OnExternalPrint := PrintChart;
  42.   end;
  43. end;
  44.  
  45. procedure TAddPrintChart.PrintChart(Sender: TObject);
  46. var R : TRect;
  47.     AChart : TChartFX;
  48. begin
  49.   if Sender is TChartFX then
  50.   begin
  51.     AChart := TChartFX(Sender);
  52.     R := fPPC.ScaleToPrinter(AChart.BoundsRect);
  53.     if fPPC.Previewing or (AChart.BorderStyle > 0) then
  54.       fPPC.Dest.Rectangle(R.Left,R.Top,R.Right,R.Bottom);
  55.     if fPPC.Previewing then
  56.     begin
  57.       fPPC.Dest.Font.Size := 7;
  58.       fPPC.Dest.TextRect(R, R.Left, R.Top, ' Chart');
  59.     end
  60.     else ChartFX.chart_Paint
  61.       (AChart.Handle, fPPC.Dest.Handle, R.Left, R.Top, R.Right, R.Bottom, 1, 0);
  62.   end;
  63.   if Assigned(fPrintOther) then fPrintOther(Sender);
  64. end; {PrintChart}
  65.  
  66. end.
  67.