unit ChartItem; interface uses Windows, Classes, Graphics, RVFuncs, RVScroll, DLines, RVItem, Chart, RVStyle; const rvsChart = -1001; type TRVChartItemInfo = class (TRVControlItemInfo) public constructor Create(RVData: TPersistent); override; constructor CreateEx(RVData: TPersistent; AChart: TChart; AVAlign: TRVVAlign); function GetBoolValueEx(Prop: TRVItemBoolPropertyEx; RVStyle: TRVStyle): Boolean; override; procedure Print(Canvas: TCanvas; x,y,x2: Integer; Preview, Correction: Boolean; const sad: TRVScreenAndDevice; RichView: TRVScroller; dli: TRVDrawLineInfo; Part: Integer; ColorMode: TRVColorMode; RVData: TPersistent); override; end; implementation {============================ TRVChartItemInfo ================================} constructor TRVChartItemInfo.Create(RVData: TPersistent); begin inherited Create(RVData); StyleNo := rvsChart; end; constructor TRVChartItemInfo.CreateEx(RVData: TPersistent; AChart: TChart; AVAlign: TRVVAlign); begin inherited CreateEx(RVData, AChart, AVAlign); StyleNo := rvsChart; end; function TRVChartItemInfo.GetBoolValueEx(Prop: TRVItemBoolPropertyEx; RVStyle: TRVStyle): Boolean; begin case Prop of rvbpPrintToBMP: Result := False; else Result := inherited GetBoolValueEx(Prop, RVStyle); end; end; procedure TRVChartItemInfo.Print(Canvas: TCanvas; x, y, x2: Integer; Preview, Correction: Boolean; const sad: TRVScreenAndDevice; RichView: TRVScroller; dli: TRVDrawLineInfo; Part: Integer; ColorMode: TRVColorMode; RVData: TPersistent); var sv: Integer; bmp: TBitmap; begin if Preview then begin bmp := TBitmap.Create; bmp.Width := Control.Width; bmp.Height := Control.Height; TChart(Control).Draw(bmp.Canvas, Rect(0,0, Control.Width,Control.Height)); Canvas.StretchDraw(Bounds(x,y,dli.Width,dli.Height),bmp); bmp.Free; end else begin sv := SaveDC(Canvas.Handle); TChart(Control).PrintPartial(Bounds(x,y,dli.Width,dli.Height)); RestoreDC(Canvas.Handle, sv); end; end; initialization RegisterRichViewItemClass(rvsChart, TRVChartItemInfo); end.