home *** CD-ROM | disk | FTP | other *** search
/ PC Expert 29 / Pce29cd.iso / RUNIMAGE / DELPHI40 / DEMOS / TEECHART / USCROLLB.PAS < prev    next >
Pascal/Delphi Source File  |  1998-06-16  |  3KB  |  128 lines

  1. {****************************************}
  2. { TeeChart                               }
  3. { Scroll Bars Example                    }
  4. { Copyright (c) 1995,96 by David Berneda }
  5. {    All Rights Reserved                 }
  6. {****************************************}
  7. unit Uscrollb;
  8.  
  9. interface
  10.  
  11. uses
  12.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  13.   Forms, Dialogs, StdCtrls, Teengine, Series, ExtCtrls, Chart, TeeProcs;
  14.  
  15. type
  16.   TScrollBarForm = class(TForm)
  17.     Chart1: TChart;
  18.     LineSeries1: TLineSeries;
  19.     ScrollBar2: TScrollBar;
  20.     ScrollBar1: TScrollBar;
  21.     procedure ScrollBar1Change(Sender: TObject);
  22.     procedure FormCreate(Sender: TObject);
  23.     procedure ScrollBar2Change(Sender: TObject);
  24.     procedure Chart1Scroll(Sender: TObject);
  25.     procedure Chart1Zoom(Sender: TObject);
  26.     procedure Chart1UndoZoom(Sender: TObject);
  27.     procedure Chart1Resize(Sender: TObject);
  28.   private
  29.     { Private declarations }
  30.   public
  31.     { Public declarations }
  32.     ChangingBars:Boolean;
  33.     Procedure CalcScrollBarPos;
  34.   end;
  35.  
  36. implementation
  37.  
  38. {$R *.DFM}
  39.  
  40. procedure TScrollBarForm.ScrollBar1Change(Sender: TObject);
  41. var Difer:Double;
  42. begin
  43.   if not ChangingBars then
  44.   With Chart1.BottomAxis do
  45.   Begin
  46.     Difer:=Maximum-Minimum;
  47.     Maximum:=Chart1.MaxXValue(Chart1.BottomAxis)-ScrollBar1.Position*Difer/100.0;
  48.     Minimum:=Maximum-Difer;
  49.   end;
  50. end;
  51.  
  52. procedure TScrollBarForm.FormCreate(Sender: TObject);
  53. begin
  54.   LineSeries1.FillSampleValues(1000);
  55.   Chart1.ZoomPercent(115);
  56.   CalcScrollBarPos;
  57. end;
  58.  
  59. procedure TScrollBarForm.ScrollBar2Change(Sender: TObject);
  60. Var Difer:Double;
  61. begin
  62.   if not ChangingBars then
  63.   With Chart1.LeftAxis do
  64.   Begin
  65.     Difer:=Maximum-Minimum;
  66.     Minimum:=Chart1.MinYValue(Chart1.LeftAxis)+ScrollBar2.Position*Difer/100.0;
  67.     Maximum:=Minimum+Difer;
  68.   end;
  69. end;
  70.  
  71. Procedure TScrollBarForm.CalcScrollBarPos;
  72. Var Difer:Double;
  73. Begin
  74.   ChangingBars:=True;
  75.   With Chart1 do
  76.   Begin
  77.    if BottomAxis.Automatic then
  78.       ScrollBar1.Enabled:=False
  79.    else
  80.    Begin
  81.      ScrollBar1.Enabled:=True;
  82.      Difer:=MaxXValue(BottomAxis)-MinXValue(BottomAxis);
  83.      if Difer>0 then
  84.      ScrollBar1.Position:=
  85.        Round(100.0*(BottomAxis.Minimum-MinXValue(BottomAxis))/Difer);
  86.    end;
  87.    if LeftAxis.Automatic then
  88.       ScrollBar2.Enabled:=False
  89.    else
  90.    Begin
  91.      ScrollBar2.Enabled:=True;
  92.      Difer:=MaxYValue(LeftAxis)-MinYValue(LeftAxis);
  93.      if Difer>0 then
  94.      ScrollBar2.Position:=
  95.        Round(100.0*(LeftAxis.Minimum-MinYValue(LeftAxis))/Difer);
  96.    end;
  97.   end;
  98.   ChangingBars:=False;
  99. End;
  100.  
  101. procedure TScrollBarForm.Chart1Scroll(Sender: TObject);
  102. begin
  103.   CalcScrollBarPos;
  104. end;
  105.  
  106. procedure TScrollBarForm.Chart1Zoom(Sender: TObject);
  107. begin
  108.   CalcScrollBarPos;
  109. end;
  110.  
  111. procedure TScrollBarForm.Chart1UndoZoom(Sender: TObject);
  112. begin
  113.   CalcScrollBarPos;
  114. end;
  115.  
  116. procedure TScrollBarForm.Chart1Resize(Sender: TObject);
  117. begin
  118.   ScrollBar1.Left:=0;
  119.   ScrollBar1.Top:=Chart1.Height-ScrollBar1.Height;
  120.   ScrollBar1.Width:=Chart1.Width;
  121.  
  122.   ScrollBar2.Left:=Chart1.Width-ScrollBar2.Width;
  123.   ScrollBar2.Top:=0;
  124.   ScrollBar2.Height:=Chart1.Height;
  125. end;
  126.  
  127. end.
  128.