home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 25: Programming / pc_actual_25.iso / Delphi / TeeChartPro / TeeChart5Delphi5Eval.exe / %MAINDIR% / Examples / Features / Axis_OpaqueZone.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  2001-09-10  |  3.0 KB  |  119 lines

  1. unit Axis_OpaqueZone;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  7.   Base, StdCtrls, TeEngine, TeeTools, Series, ExtCtrls, TeeProcs, Chart;
  8.  
  9. type
  10.   TAxisOpaqueZone = class(TBaseForm)
  11.     Series1: TLineSeries;
  12.     Series2: TLineSeries;
  13.     Series4: TLineSeries;
  14.     Series3: TLineSeries;
  15.     ChartTool1: TColorLineTool;
  16.     ChartTool2: TColorLineTool;
  17.     ChartTool3: TColorLineTool;
  18.     CheckBox1: TCheckBox;
  19.     ScrollBar1: TScrollBar;
  20.     Label1: TLabel;
  21.     procedure FormCreate(Sender: TObject);
  22.     procedure Chart1Scroll(Sender: TObject);
  23.     procedure CheckBox1Click(Sender: TObject);
  24.     procedure ScrollBar1Change(Sender: TObject);
  25.   private
  26.     { Private declarations }
  27.     procedure SeriesAfterDraw(Sender: TObject);
  28.     procedure SeriesBeforeDraw(Sender: TObject);
  29.   public
  30.     { Public declarations }
  31.   end;
  32.  
  33. implementation
  34.  
  35. {$R *.DFM}
  36.  
  37. procedure TAxisOpaqueZone.FormCreate(Sender: TObject);
  38. begin
  39.   inherited;
  40.   Series1.FillSampleValues(100);
  41.   Series2.FillSampleValues(100);
  42.   Series3.FillSampleValues(100);
  43.   Series4.FillSampleValues(100);
  44.  
  45.   { set series events (can also be done with the Object Inspector) }
  46.   Series1.BeforeDrawValues:=SeriesBeforeDraw;
  47.   Series2.BeforeDrawValues:=SeriesBeforeDraw;
  48.   Series3.BeforeDrawValues:=SeriesBeforeDraw;
  49.   Series4.BeforeDrawValues:=SeriesBeforeDraw;
  50.  
  51.   Series1.AfterDrawValues:=SeriesAfterDraw;
  52.   Series2.AfterDrawValues:=SeriesAfterDraw;
  53.   Series3.AfterDrawValues:=SeriesAfterDraw;
  54.   Series4.AfterDrawValues:=SeriesAfterDraw;
  55. end;
  56.  
  57. procedure TAxisOpaqueZone.SeriesBeforeDraw(Sender: TObject);
  58.  
  59.   Function SeriesRect(Series:TChartSeries):TRect;
  60.   begin
  61.     With result do
  62.     begin
  63.       Left:=Series.GetHorizAxis.IStartPos;
  64.       Right:=Series.GetHorizAxis.IEndPos;
  65.       Top:=Series.GetVertAxis.IStartPos;
  66.       Bottom:=Series.GetVertAxis.IEndPos;
  67.     end;
  68.   end;
  69.  
  70. begin
  71.   { make opaque }
  72.   if CheckBox1.Checked then
  73.   With Chart1 do
  74.        if CanClip then
  75.           Canvas.ClipRectangle(SeriesRect( Sender as TChartSeries ));
  76. end;
  77.  
  78. procedure TAxisOpaqueZone.SeriesAfterDraw(Sender: TObject);
  79. begin
  80.   if CheckBox1.Checked then Chart1.Canvas.UnClipRectangle;
  81. end;
  82.  
  83. procedure TAxisOpaqueZone.Chart1Scroll(Sender: TObject);
  84. begin
  85.   With ChartTool1 do Value:=Axis.Minimum;
  86.   With ChartTool2 do Value:=Axis.Minimum;
  87.   With ChartTool3 do Value:=Axis.Minimum;
  88. end;
  89.  
  90. procedure TAxisOpaqueZone.CheckBox1Click(Sender: TObject);
  91. begin
  92.   Chart1.Repaint;
  93. end;
  94.  
  95. procedure TAxisOpaqueZone.ScrollBar1Change(Sender: TObject);
  96.  
  97.   Procedure DoScroll(Series:TChartSeries);
  98.   var tmp : Double;
  99.   begin
  100.     With Series,YValues do
  101.     begin
  102.       tmp:=(ScrollBar1.Position-50)*(MaxValue-MinValue)/100;
  103.       GetVertAxis.SetMinMax(MaxValue+tmp,MinValue+tmp);
  104.     end;
  105.   end;
  106.  
  107. begin
  108.   DoScroll(Series1);
  109.   DoScroll(Series2);
  110.   DoScroll(Series3);
  111.   DoScroll(Series4);
  112.   
  113.   Chart1Scroll(Self);
  114. end;
  115.  
  116. initialization
  117.   RegisterClass(TAxisOpaqueZone);
  118. end.
  119.