ChartItem.pas
上传用户:daoqigc
上传日期:2021-04-20
资源大小:2795k
文件大小:2k
源码类别:

RichEdit

开发平台:

Delphi

  1. unit ChartItem;
  2. interface
  3. uses Windows, Classes, Graphics, RVFuncs, RVScroll, DLines, RVItem, Chart, RVStyle;
  4. const
  5.   rvsChart = -1001;
  6. type
  7.   TRVChartItemInfo = class (TRVControlItemInfo)
  8.     public
  9.       constructor Create(RVData: TPersistent); override;
  10.       constructor CreateEx(RVData: TPersistent; AChart: TChart; AVAlign: TRVVAlign);
  11.       function GetBoolValueEx(Prop: TRVItemBoolPropertyEx; RVStyle: TRVStyle): Boolean; override;
  12.       procedure Print(Canvas: TCanvas; x,y,x2: Integer; Preview, Correction: Boolean;
  13.         const sad: TRVScreenAndDevice; RichView: TRVScroller; dli: TRVDrawLineInfo;
  14.         Part: Integer; ColorMode: TRVColorMode; RVData: TPersistent); override;
  15.   end;
  16. implementation
  17. {============================ TRVChartItemInfo ================================}
  18. constructor TRVChartItemInfo.Create(RVData: TPersistent);
  19. begin
  20.   inherited Create(RVData);
  21.   StyleNo := rvsChart;
  22. end;
  23. constructor TRVChartItemInfo.CreateEx(RVData: TPersistent; AChart: TChart; AVAlign: TRVVAlign);
  24. begin
  25.   inherited CreateEx(RVData, AChart, AVAlign);
  26.   StyleNo := rvsChart;
  27. end;
  28. function TRVChartItemInfo.GetBoolValueEx(Prop: TRVItemBoolPropertyEx; RVStyle: TRVStyle): Boolean;
  29. begin
  30.   case Prop of
  31.     rvbpPrintToBMP:
  32.       Result := False;
  33.     else
  34.       Result := inherited GetBoolValueEx(Prop, RVStyle);
  35.   end;
  36. end;
  37. procedure TRVChartItemInfo.Print(Canvas: TCanvas; x, y, x2: Integer;
  38.   Preview, Correction: Boolean; const sad: TRVScreenAndDevice;
  39.   RichView: TRVScroller; dli: TRVDrawLineInfo; Part: Integer;
  40.   ColorMode: TRVColorMode; RVData: TPersistent);
  41. var sv: Integer;
  42.     bmp: TBitmap;
  43. begin
  44.    if Preview then begin
  45.      bmp := TBitmap.Create;
  46.      bmp.Width := Control.Width;
  47.      bmp.Height := Control.Height;
  48.      TChart(Control).Draw(bmp.Canvas, Rect(0,0, Control.Width,Control.Height));
  49.      Canvas.StretchDraw(Bounds(x,y,dli.Width,dli.Height),bmp);
  50.      bmp.Free;
  51.      end
  52.    else begin
  53.      sv := SaveDC(Canvas.Handle);
  54.      TChart(Control).PrintPartial(Bounds(x,y,dli.Width,dli.Height));
  55.      RestoreDC(Canvas.Handle, sv);
  56.    end;
  57. end;
  58. initialization
  59.    RegisterRichViewItemClass(rvsChart, TRVChartItemInfo);
  60. end.