home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC Expert 29
/
Pce29cd.iso
/
RUNIMAGE
/
DELPHI40
/
DEMOS
/
TEECHART
/
UCROSSH.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1998-06-16
|
3KB
|
119 lines
{*********************************************}
{ TeeChart Delphi Component Library }
{ Cross-Hair demo }
{ Copyright (c) 1995-1996 by David Berneda }
{ All rights reserved }
{*********************************************}
unit Ucrossh;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, Teengine, Series, ExtCtrls, Chart, Buttons,
TeeProcs;
type
TCrossHairForm = class(TForm)
Chart1: TChart;
LineSeries1: TLineSeries;
Panel1: TPanel;
Label1: TLabel;
BitBtn1: TBitBtn;
Label2: TLabel;
CheckBox1: TCheckBox;
BitBtn2: TBitBtn;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure LineSeries1AfterDrawValues(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
OldX,OldY:Longint;
CrossHairColor:TColor;
CrossHairStyle:TPenStyle;
end;
implementation
{$R *.DFM}
Uses udemutil;
procedure TCrossHairForm.FormCreate(Sender: TObject);
begin
LineSeries1.FillSampleValues(30); { <-- some random values }
OldX:=-1; { initialize variables }
CrossHairColor:=clYellow;
CrossHairStyle:=psSolid;
end;
procedure TCrossHairForm.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
{ This procedure draws the crosshair lines }
Procedure DrawCross(AX,AY:Integer);
begin
With Chart1,Canvas do
begin
Pen.Color:=CrossHairColor;
Pen.Style:=CrossHairStyle;
Pen.Mode:=pmXor;
Pen.Width:=1;
MoveTo(ax,ChartRect.Top-Height3D);
LineTo(ax,ChartRect.Bottom-Height3D);
MoveTo(ChartRect.Left+Width3D,ay);
LineTo(ChartRect.Right+Width3D,ay);
end;
end;
Var tmpX,tmpY:Double;
begin
if (OldX<>-1) then
begin
DrawCross(OldX,OldY); { draw old crosshair }
OldX:=-1;
end;
{ check if mouse is inside Chart rectangle }
if PtInRect( Chart1.ChartRect, Point(X-Chart1.Width3D,Y+Chart1.Height3D) ) then
begin
DrawCross(x,y); { draw crosshair at current position }
{ store old position }
OldX:=x;
OldY:=y;
{ set label text }
With LineSeries1 do
begin
GetCursorValues(tmpX,tmpY); { <-- get values under mouse cursor }
Label1.Caption:=GetVertAxis.LabelValue(tmpY)+
' '+
GetHorizAxis.LabelValue(tmpX);
end;
end;
end;
procedure TCrossHairForm.LineSeries1AfterDrawValues(Sender: TObject);
begin
OldX:=-1; { Reset old mouse position }
end;
procedure TCrossHairForm.CheckBox1Click(Sender: TObject);
begin
if CheckBox1.Checked then Chart1.Cursor:=crCross
else Chart1.Cursor:=crDefault;
Chart1.OriginalCursor:=Chart1.Cursor;
end;
procedure TCrossHairForm.BitBtn2Click(Sender: TObject);
begin
CrossHairColor:=EditColor(Self,CrossHairColor);
end;
end.