home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PC Expert 29
/
Pce29cd.iso
/
RUNIMAGE
/
DELPHI40
/
DEMOS
/
TEECHART
/
BUBBLE.PAS
< prev
next >
Wrap
Pascal/Delphi Source File
|
1998-06-16
|
5KB
|
146 lines
{*********************************************}
{ TeeChart Delphi Component Library }
{ Bubble Series Type Demo }
{ Copyright (c) 1995-1996 by David Berneda }
{ All rights reserved }
{*********************************************}
unit Bubble;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, Chart, Series, ExtCtrls, StdCtrls, BubbleCh,
Teengine, Buttons, TeeProcs;
type
TBubbleForm = class(TForm)
Chart1: TChart;
Panel1: TPanel;
CheckBox1: TCheckBox;
Timer1: TTimer;
CheckBox2: TCheckBox;
ComboBox1: TComboBox;
Label1: TLabel;
BitBtn3: TBitBtn;
CheckBox3: TCheckBox;
BubbleSeries1: TBubbleSeries;
ZoomInButton: TSpeedButton;
ZoomOutButton: TSpeedButton;
Memo1: TMemo;
procedure FormCreate(Sender: TObject);
procedure CheckBox1Click(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
procedure CheckBox2Click(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure CheckBox3Click(Sender: TObject);
function BubbleSeries1GetPointerStyle(Sender: TChartSeries;
ValueIndex: Longint): TSeriesPointerStyle;
procedure ZoomInButtonClick(Sender: TObject);
procedure ZoomOutButtonClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
implementation
{$R *.DFM}
procedure TBubbleForm.FormCreate(Sender: TObject);
var t:Longint;
begin
ComboBox1.ItemIndex:=Ord(psCircle); { <-- Circled Bubbles by default }
BubbleSeries1.Clear;
for t:=1 to 100 do
BubbleSeries1.AddBubble( Date+t,
Random(ChartSamplesMax), { <-- y value }
ChartSamplesMax/(20+Random(25)), { <-- radius value }
'', { <-- label string }
GetDefaultColor(t)); { <-- color }
end;
procedure TBubbleForm.CheckBox1Click(Sender: TObject);
begin
Timer1.Enabled:=CheckBox1.Checked; { <-- on / off animation }
end;
procedure TBubbleForm.Timer1Timer(Sender: TObject);
Var tmpColor:TColor;
Begin
Timer1.Enabled:=False; { <-- stop the timer (this is optional) }
With BubbleSeries1 do
Begin
tmpColor:=ValueColor[0];
Delete(0); { <-- remove the first point }
{ Add a new random bubble }
AddBubble( XValues.Last+1, { <-- x value }
Random(ChartSamplesMax), { <-- y value }
ChartSamplesMax/(20+Random(25)), { <-- radius value }
'', { <-- label string }
tmpColor); { <-- color }
end;
if Random(100)<8 then
begin
if ComboBox1.ItemIndex<ComboBox1.Items.Count-1 then
ComboBox1.ItemIndex:=ComboBox1.ItemIndex+1
else
ComboBox1.ItemIndex:=0;
ComboBox1Change(Self);
end;
if (GetTickCount mod 1000)<=55 then
begin
with BubbleSeries1.GetHorizAxis.Title do
if Angle>=90 then Angle:=Angle-90 else Angle:=270;
with BubbleSeries1.GetVertAxis.Title do
if Angle>=90 then Angle:=Angle-90 else Angle:=270;
with BubbleSeries1.GetVertAxis do
if LabelsAngle>=90 then LabelsAngle:=LabelsAngle-90 else LabelsAngle:=270;
with BubbleSeries1.GetHorizAxis do
if LabelsAngle>=90 then LabelsAngle:=LabelsAngle-90 else LabelsAngle:=270;
end;
Timer1.Enabled:=True; { <-- restart the timer }
end;
procedure TBubbleForm.CheckBox2Click(Sender: TObject);
begin
BubbleSeries1.Marks.Visible:=CheckBox2.Checked; { switch on/off Marks }
end;
procedure TBubbleForm.ComboBox1Change(Sender: TObject);
begin { the demo combobox1 allows changing Bubble style }
BubbleSeries1.Pointer.Style:=TSeriesPointerStyle(ComboBox1.ItemIndex);
end;
procedure TBubbleForm.CheckBox3Click(Sender: TObject);
begin
Chart1.Repaint;
end;
function TBubbleForm.BubbleSeries1GetPointerStyle(Sender: TChartSeries;
ValueIndex: Longint): TSeriesPointerStyle;
begin
if CheckBox3.Checked then
result:=TSeriesPointerStyle(Random(Ord(High(TSeriesPointerStyle))))
else
result:=BubbleSeries1.Pointer.Style;
end;
procedure TBubbleForm.ZoomInButtonClick(Sender: TObject);
begin
Chart1.ZoomPercent(110);
end;
procedure TBubbleForm.ZoomOutButtonClick(Sender: TObject);
begin
Chart1.ZoomPercent(90);
end;
end.