Marco Cantù 1998, Mastering Delphi 4
Project: GRAPH.DPR
Project Structure
GRAPH.DPR
program Graph;
uses
Forms,
GraphF in 'GraphF.pas' {Form1};
{$R *.RES}
begin
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
GRAPHF.PAS
unit GraphF;
interface
uses
SysUtils, Windows, Messages, Classes, Graphics, Controls,
Forms, Dialogs, Grids, StdCtrls, TeEngine,
Series, ExtCtrls, TeeProcs, Chart;
type
TForm1 = class(TForm)
Chart1: TChart;
Series1: TBarSeries;
Series2: TBarSeries;
Series3: TBarSeries;
Series4: TBarSeries;
Panel1: TPanel;
ChBoxMarks: TCheckBox;
UpdateButton: TButton;
StringGrid1: TStringGrid;
ComboBox1: TComboBox;
ComboBox2: TComboBox;
ComboBox3: TComboBox;
ComboBox4: TComboBox;
procedure FormCreate(Sender: TObject);
procedure UpdateButtonClick(Sender: TObject);
procedure StringGrid1GetEditMask(Sender: TObject; ACol, ARow: Longint;
var Value: string);
procedure ChBoxMarksClick(Sender: TObject);
procedure ComboChange(Sender: TObject);
private
Combos: array [0..3] of TComboBox;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.FormCreate(Sender: TObject);
var
I, J: Integer;
begin
with StringGrid1 do
begin
{fills the fixed column and row,
and the chart series names}
for I := 1 to 5 do
Cells [I, 0] := Format ('Group %d', [I]);
for J := 1 to 4 do
begin
Cells [0, J] := Format ('Series %d', [J]);
Chart1.Series [J-1].Title := Format ('Series %d', [J]);
end;
{fills the grid with random values}
Randomize;
for I := 1 to 5 do
for J := 1 to 4 do
Cells [I, J] := IntToStr (Random (100));
end; // with
// fill the Combos array
Combos [0] := ComboBox1;
Combos [1] := ComboBox2;
Combos [2] := ComboBox3;
Combos [3] := ComboBox4;
// show the initial chart type
for I := 0 to 3 do
Combos [I].ItemIndex := 1;
// update the chart
UpdateButtonClick (self);
end;
procedure TForm1.UpdateButtonClick(Sender: TObject);
var
I, J: Integer;
begin
for I := 1 to 4 do
begin
Chart1.Series [I-1].Clear;
for J := 1 to 5 do
Chart1.Series [I-1].Add (
StrToInt (StringGrid1.Cells [J, I]),
'', Chart1.Series [I-1].SeriesColor);
end;
end;
procedure TForm1.StringGrid1GetEditMask(Sender: TObject; ACol,
ARow: Longint; var Value: string);
begin
// edit mask for the grid cells
Value := '09;0';
end;
procedure TForm1.ChBoxMarksClick(Sender: TObject);
var
I: Integer;
begin
for I := 1 to 4 do
Chart1.Series [I-1].Marks.Visible :=
ChBoxMarks.Checked;
end;
procedure TForm1.ComboChange(Sender: TObject);
var
I: Integer;
SeriesClass: TChartSeriesClass;
NewSeries: TChartSeries;
begin
// destroy the existing series (in reverse order)
for I := 3 downto 0 do
Chart1.Series [I].Free;
// create the new series
for I := 0 to 3 do
begin
case Combos [I].ItemIndex of
0: SeriesClass := TLineSeries;
1: SeriesClass := TBarSeries;
2: SeriesClass := TAreaSeries;
else // 3: and default
SeriesClass := TPointSeries;
end;
NewSeries := SeriesClass.Create (self);
NewSeries.ParentChart := Chart1;
NewSeries.Title :=
Format ('Series %d', [I + 1]);
end;
// update the marks and update the data
ChBoxMarksClick (self);
UpdateButtonClick (self);
end;
end.
GRAPHF.DFM
object Form1: TForm1
Left = 172
Top = 86
Width = 500
Height = 462
Caption = 'Graph'
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Chart1: TChart
Left = 0
Top = 0
Width = 492
Height = 291
BackColor = clBtnFace
AnimatedZoom = True
BottomWall.Color = clWhite
Foot.Font.Charset = DEFAULT_CHARSET
Foot.Font.Color = clRed
Foot.Font.Height = -11
Foot.Font.Name = 'Arial'
Foot.Font.Style = [fsItalic]
LeftWall.Color = 8454143
Title.Text.Strings = (
'Simple TeeChart Demo for Mastering Delphi')
Align = alClient
BevelOuter = bvLowered
TabOrder = 0
object Series1: TBarSeries
Marks.ArrowLength = 20
Marks.Visible = False
SeriesColor = clRed
XValues.DateTime = False
XValues.Name = 'X'
XValues.Multiplier = 1
XValues.Order = loAscending
YValues.DateTime = False
YValues.Name = 'Bar'
YValues.Multiplier = 1
YValues.Order = loNone
end
object Series2: TBarSeries
Marks.ArrowLength = 20
Marks.Visible = False
SeriesColor = clGreen
XValues.DateTime = False
XValues.Name = 'X'
XValues.Multiplier = 1
XValues.Order = loAscending
YValues.DateTime = False
YValues.Name = 'Bar'
YValues.Multiplier = 1
YValues.Order = loNone
end
object Series3: TBarSeries
Marks.ArrowLength = 20
Marks.Visible = False
SeriesColor = clYellow
XValues.DateTime = False
XValues.Name = 'X'
XValues.Multiplier = 1
XValues.Order = loAscending
YValues.DateTime = False
YValues.Name = 'Bar'
YValues.Multiplier = 1
YValues.Order = loNone
end
object Series4: TBarSeries
Marks.ArrowLength = 20
Marks.Visible = False
SeriesColor = clBlue
XValues.DateTime = False
XValues.Name = 'X'
XValues.Multiplier = 1
XValues.Order = loAscending
YValues.DateTime = False
YValues.Name = 'Bar'
YValues.Multiplier = 1
YValues.Order = loNone
end
end
object Panel1: TPanel
Left = 0
Top = 291
Width = 492
Height = 144
Align = alBottom
BevelOuter = bvLowered
TabOrder = 1
object ChBoxMarks: TCheckBox
Left = 429
Top = 12
Width = 57
Height = 17
Caption = 'Marks'
TabOrder = 0
OnClick = ChBoxMarksClick
end
object UpdateButton: TButton
Left = 326
Top = 8
Width = 89
Height = 26
Caption = '&Update'
TabOrder = 1
OnClick = UpdateButtonClick
end
object StringGrid1: TStringGrid
Left = 8
Top = 8
Width = 309
Height = 128
ColCount = 6
DefaultColWidth = 50
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goEditing]
ScrollBars = ssNone
TabOrder = 2
OnGetEditMask = StringGrid1GetEditMask
end
object ComboBox1: TComboBox
Left = 328
Top = 38
Width = 145
Height = 21
Style = csDropDownList
ItemHeight = 13
Items.Strings = (
'Line'
'Bar'
'Area'
'Point')
TabOrder = 3
OnChange = ComboChange
end
object ComboBox2: TComboBox
Tag = 1
Left = 328
Top = 62
Width = 145
Height = 21
Style = csDropDownList
ItemHeight = 13
Items.Strings = (
'Line'
'Bar'
'Area'
'Point')
TabOrder = 4
OnChange = ComboChange
end
object ComboBox3: TComboBox
Tag = 2
Left = 328
Top = 86
Width = 145
Height = 21
Style = csDropDownList
ItemHeight = 13
Items.Strings = (
'Line'
'Bar'
'Area'
'Point')
TabOrder = 5
OnChange = ComboChange
end
object ComboBox4: TComboBox
Tag = 3
Left = 328
Top = 110
Width = 145
Height = 21
Style = csDropDownList
ItemHeight = 13
Items.Strings = (
'Line'
'Bar'
'Area'
'Point')
TabOrder = 6
OnChange = ComboChange
end
end
end
Copyright Marco Cantù 1998