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

  1. {*********************************************}
  2. { TeeChart Delphi Component Library           }
  3. { Keyboard Scrolling Demo                     }
  4. { Copyright (c) 1996 by David Berneda         }
  5. { All rights reserved                         }
  6. {*********************************************}
  7. unit Ukeyboa;
  8.  
  9. interface
  10.  
  11. uses
  12.   SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  13.   Forms, Dialogs, Teengine, Series, ExtCtrls, Chart, StdCtrls, Buttons,
  14.   TeeProcs;
  15.  
  16. type
  17.   TKeyboardForm = class(TForm)
  18.     Chart1: TChart;
  19.     LineSeries1: TLineSeries;
  20.     Panel1: TPanel;
  21.     BitBtn1: TBitBtn;
  22.     InvertScroll: TCheckBox;
  23.     CheckLimits: TCheckBox;
  24.     Memo1: TMemo;
  25.     procedure FormCreate(Sender: TObject);
  26.     procedure FormKeyDown(Sender: TObject; var Key: Word;
  27.       Shift: TShiftState);
  28.     procedure CheckLimitsClick(Sender: TObject);
  29.     procedure InvertScrollClick(Sender: TObject);
  30.   private
  31.     { Private declarations }
  32.   public
  33.     { Public declarations }
  34.   end;
  35.  
  36. implementation
  37.  
  38. {$R *.DFM}
  39.  
  40. procedure TKeyboardForm.FormCreate(Sender: TObject);
  41. begin
  42.   LineSeries1.FillSampleValues(500);
  43.   AnimatedZoomFactor:=4;
  44. end;
  45.  
  46. procedure TKeyboardForm.FormKeyDown(Sender: TObject; var Key: Word;
  47.   Shift: TShiftState);
  48. Var XDelta,YDelta,
  49.     XRange,YRange:Double;
  50. begin
  51.   { initialize some temporary variables... }
  52.   XDelta:=0;
  53.   YDelta:=0;
  54.   With LineSeries1.GetHorizAxis do XRange:=Maximum-Minimum;
  55.   With LineSeries1.GetVertAxis  do YRange:=Maximum-Minimum;
  56.   { handle keyboard !!! }
  57.   if ssShift in Shift then
  58.   begin
  59.     Case key of
  60.       VK_LEFT,VK_UP    : Chart1.ZoomPercent( 110 );
  61.       VK_RIGHT,VK_DOWN : Chart1.ZoomPercent( 90 );
  62.     end;
  63.     exit;
  64.   end
  65.   else
  66.   Case key of
  67.     VK_LEFT  : XDelta:=-XRange/100;
  68.     VK_RIGHT : XDelta:= XRange/100;
  69.     VK_UP    : YDelta:= YRange/100;
  70.     VK_DOWN  : YDelta:=-YRange/100;
  71.     vk_Next  : YDelta:=-YRange/10;
  72.     vk_Prior : YDelta:= YRange/10;
  73.     VK_SPACE : Begin Chart1.UndoZoom; Exit; End;  { <-- reset scrolling }
  74.   end;
  75.   { just to make this example a little better... }
  76.   if not InvertScroll.Checked then
  77.   begin
  78.     XDelta:=-XDelta;
  79.     YDelta:=-YDelta;
  80.   end;
  81.   { apply scrolling !!! }
  82.   With Chart1 do
  83.   Begin
  84.     LeftAxis.Scroll(YDelta,CheckLimits.Checked);
  85.     RightAxis.Scroll(YDelta,CheckLimits.Checked);
  86.     BottomAxis.Scroll(XDelta,CheckLimits.Checked);
  87.     TopAxis.Scroll(XDelta,CheckLimits.Checked);
  88.     SetFocus;
  89.   End;
  90. end;
  91.  
  92. procedure TKeyboardForm.CheckLimitsClick(Sender: TObject);
  93. begin
  94.   ShowMessage('Please zoom before scrolling.');
  95.   Chart1.SetFocus;
  96. end;
  97.  
  98. procedure TKeyboardForm.InvertScrollClick(Sender: TObject);
  99. begin
  100.   Chart1.SetFocus;
  101. end;
  102.  
  103. end.
  104.