Marco Cantù 1998, Mastering Delphi 4
Project: XCHART.DPR
Project Structure
XCHART.DPR
program XChart;
uses
Forms,
XChartF in 'XChartF.pas' {Form1};
{$R *.RES}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
XCHARTF.PAS
unit XChartF;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, vcfi, Grids, StdCtrls;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
UpdateButton: TButton;
Label5: TLabel;
ComboBox1: TComboBox;
VtChart1: TVtChart;
procedure FormCreate(Sender: TObject);
procedure UpdateButtonClick(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
procedure StringGrid1GetEditMask(Sender: TObject; ACol, ARow: Longint;
var Value: string);
private
{ Private declarations }
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}
for I := 1 to 5 do
Cells [I, 0] := Format ('R%d:', [I]);
for J := 1 to 4 do
Cells [0, J] := Format ('C%d:', [J]);
{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;
{update the chart}
UpdateButtonClick (self);
{select the initial style in the combo box}
ComboBox1.ItemIndex := VtChart1.ChartType;
end;
procedure TForm1.UpdateButtonClick(Sender: TObject);
var
I, J: Integer;
begin
for I := 1 to 5 do
begin
VtChart1.Row := I;
for J := 1 to 4 do
begin
VtChart1.Column := J;
VtChart1.Data := StringGrid1.Cells [I, J];
end;
end;
end;
procedure TForm1.ComboBox1Change(Sender: TObject);
begin
{change the type of chart}
VtChart1.ChartType := ComboBox1.ItemIndex;
end;
procedure TForm1.StringGrid1GetEditMask(Sender: TObject; ACol,
ARow: Longint; var Value: string);
begin
Value := '!09';
end;
end.
XCHARTF.DFM
object Form1: TForm1
Left = 195
Top = 107
Width = 498
Height = 430
Caption = 'XChart'
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clBlack
Font.Height = -11
Font.Name = 'MS Sans Serif'
Font.Style = []
OldCreateOrder = True
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 13
object Label5: TLabel
Left = 328
Top = 352
Width = 26
Height = 13
Caption = 'Style:'
end
object UpdateButton: TButton
Left = 368
Top = 296
Width = 89
Height = 33
Caption = 'Update'
TabOrder = 1
OnClick = UpdateButtonClick
end
object ComboBox1: TComboBox
Left = 326
Top = 367
Width = 161
Height = 21
Style = csDropDownList
ItemHeight = 13
Items.Strings = (
'3D Bar'
'2D Bar '
'3D Line '
'2D Line'
'3D Area'
'2D Area'
'3D Step'
'2D Step'
'3D Combination '
'2D Combination'
'3D Horizontal Bar'
'2D Horizontal Bar'
'3D Clustered Bar'
'3D Pie '
'2D Pie')
TabOrder = 2
OnChange = ComboBox1Change
end
object StringGrid1: TStringGrid
Left = 8
Top = 262
Width = 309
Height = 128
ColCount = 6
DefaultColWidth = 50
Options = [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goEditing]
ScrollBars = ssNone
TabOrder = 0
OnGetEditMask = StringGrid1GetEditMask
end
object VtChart1: TVtChart
Left = 8
Top = 8
Width = 473
Height = 249
TabOrder = 3
ControlData = {
00000100E3300000BC19000060000000000001000100010001FF01000100204E
6520000000000000000000000800567443686172740006000100000001000000
0B005674446174614772696400010002000000090056744D6174726978000100
030000000D005674436F6C6C656374696F6E000100000004000000090056744F
626A65637400010006000500FFFFFFFF02000000050000000900567453747269
6E670001000200433100060000000800567456616C7565000100040000000300
0000050000000200433200060000000400000004000000050000000200433300
0600000004000000050000000500000002004334000600000004000000060000
00050000000200523100060000000400000007000000070000000A005674496E
7465676572000100450000000600000004000000080000000700000023000000
060000000400000009000000070000001900000006000000040000000A000000
070000001400000006000000040000000B000000050000000200523200060000
00040000000C000000070000001000000006000000040000000D000000070000
001200000006000000040000000E000000070000003200000006000000040000
000F000000070000001F00000006000000040000001000000005000000020052
3300060000000400000011000000070000004A00000006000000040000001200
0000070000001900000006000000040000001300000007000000120000000600
0000040000001400000007000000110000000600000004000000150000000500
0000020052340006000000040000001600000007000000060000000600000004
00000017000000070000002B000000060000000400000018000000070000000B
000000060000000400000019000000070000003C00000006000000040000001A
00000005000000020052350006000000040000001B000000070000005A000000
06000000040000001C000000070000005C00000006000000040000001D000000
070000002700000006000000040000001E000000070000001C00000006000000
040000000100010004000500000000000000000000000040DD45008068451F00
0000080000000B0056744261636B64726F700001000100010001000100000000
0001000000000000000000C8420000C842000001000100000000000100FFFFFF
000000A041000020000000090000000700567446696C6C000100010001000100
FFFFFF00010000000000000001000100FFFFFF00010080C0FF00000021000000
0A0000000A005674506963747572650001000100FFFFFFFFFFFF040000000000
0400000004000000220000000B000000100056744368617274466F6F746E6F74
650001000C0000000C005674436861727454657874000100230000000D000000
0C00567454657874426C6F636B00020001000000020002000000FFFFFFFFFFFF
240000000E00000007005674466F6E7400010025000000050000000500417269
616C000600000004000000000040410100000001000000000004000000000064
0000000000000000000000000000000000000000002600000005000000080046
6F6F746E6F746500060000000400000000000000000000000000000000000000
00000000000000000000040000000F0000000F00567443686172745365637469
6F6E000100F00064000100000000000000000000000000000000000000050027
0000000800000001000100010001000000000001000000000000000000C84200
00C842000001000100000000000100FFFFFF000000A041000028000000090000
00010001000100FFFFFF00010000000000000001000100FFFFFF00010080C0FF
000000290000000A0000000100FFFFFFFFFFFF04000000000004000000040000
00040000002A000000100000000E00567443686172744C6567656E640001002B
0000000E00000025000000000040410100000001000000000004000000010000
000200020000000F000000F000F0000100000000000000000000000000000000
00000004002C0000000800000001000100010001000000000001000000000000
000000C8420000C842000001000100000000000100FFFFFF000000A04100002D
00000009000000010001000100FFFFFF00010000000000000001000100FFFFFF
00010080C0FF0000002E0000000A0000000100FFFFFFFFFFFF04000000000004
00000004000000040000002F000000110000000C0056744368617274506C6F74
0003003000000012000000080056744172726179000100000003000000000004
0000000000803F0000803F0000003F0000803F0000803F0000B4430100010001
00FFFFFF00010000000000000001000100000000000100000000000000000000
00404000000000010000000100FFFFFF00010000000000000001000100000000
00010000000000000000000000404001000000000070420000F0410000003F00
00003F00000040000000003100000013000000090056744C6967687433000100
320000001200000001000300000001000400000033000000140000000C005674
496E664C696768743300010000000000000000000000803F0000803F04000000
9A99193E0000003FFFFF04000000340000001500000007005674417869730003
000000FFFF0A0000000100010000000000010000000000000000000000404001
0001000000000001000000000000000000000040400100010000000000010000
00000000000000000040400000F04200007042350000000D0000000100000002
0002000000FFFF36000000080000000100010001000100000000000100000000
0000000000C8420000C842000001000100000000000100FFFFFF000000A04100
003700000009000000010001000100FFFFFF00010000000000000001000100FF
FFFF00010080C0FF000000380000000A0000000100FFFFFFFFFFFF0400000000
000400000004000000390000000E000000250000000000404101000000010000
00000004000000FFFF640000000000000000000000090500001201000001003A
000000050000000C00582041786973205469746C650006000000040000000905
000012010000000000000000000009050000120100000000040000003B000000
120000000100030000000100040000003C000000160000001100567441786973
5363616C65426C6F636B0001003D000000120000000500030000000000040000
00FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000170000000D0056
7456616C7565426C6F636B0001001A000000FFFFFFFFFFFF3E00000005000000
020052350006000000040000000000000D000000010000000200020000000000
FFFFFFFF3F0000000E0000002500000000004041010000000100000000000400
0000000064000000F10600008AFEFFFF9B0800009CFFFFFF00003E0000003201
000012010000F10600008AFEFFFF230800009CFFFFFF00000400000000000000
0000FFFF00000000010001000100000000000000000000000000FFFF00000000
04000100000000000000000002000400000040000000150000000000FFFF0A00
0000010001000000000001000000000000000000000040400100010000000000
0100000000000000000000004040010001000000000001000000000000000000
000040400000F04200007042410000000D00000001000000020002000200FFFF
420000000800000001000100010001000000000001000000000000000000C842
0000C842000001000100000000000100FFFFFF000000A0410000430000000900
0000010001000100FFFFFF00010000000000000001000100FFFFFF00010080C0
FF000000440000000A0000000100FFFFFFFFFFFF040000000000040000000400
0000450000000E00000025000000000040410100000001000000000004000000
FFFF640000000000000000000000120100000905000001004600000005000000
0C00592041786973205469746C65000600000004000000090500001201000000
0000000000000012010000090500000000040000004700000012000000010003
0000000100040000004800000016000000490000001200000005000300000000
0004000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000100170000
004A0000001800000009005674446F75626C650001000000000000005940FFFF
0600000004000000FFFFFFFFFFFF4B0000000500000003003130300006000000
040000000000000D00000001000000010002000000FFFFFFFFFFFF4C0000000E
00000025000000000040410100000001000000000004000000FFFF64000000D0
FDFFFFD907000060FFFFFFEB08000001004B0000009001000012010000D0FDFF
FFD907000060FFFFFFEB080000000004000000000000000000FFFF0000000001
0001000100000000000000000000000000FFFF00000000040001000000000000
0000000100040000004D000000150000000000FFFF0A00000001000100000000
0001000000000000000000000040400100010000000000010000000000000000
0000004040010001000000000001000000000000000000000040400000F04200
0070424E0000000D00000001000000020002000200FFFF4F0000000800000001
000100010001000000000001000000000000000000C8420000C8420000010001
00000000000100FFFFFF000000A04100005000000009000000010001000100FF
FFFF00010000000000000001000100FFFFFF00010080C0FF000000510000000A
0000000100FFFFFFFFFFFF0400000000000400000004000000520000000E0000
0025000000000040410100000001000000000004000000FFFF64000000000000
000000000012010000170A00000100530000000500000016005365636F6E6461
727920592041786973205469746C65000600000004000000170A000012010000
000000000000000012010000170A000000000400000054000000120000000100
0300000001000400000055000000160000005600000012000000050003000000
000004000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000001001700
000057000000180000000000000000005940FFFF0600000004000000FFFFFFFF
FFFF580000000500000003003130300006000000040000000000000D00000001
000000000002000000FFFFFFFFFFFF590000000E000000250000000000404101
00000001000000000004000000FFFF64000000A0000000D907000030020000EB
0800000100580000009001000012010000A0000000D907000030020000EB0800
00000004000000000000000000FFFF0000000001000100010000000000000000
0000000000FFFF000000000400010000000000000000000100040000005A0000
00150000000000FFFF0A00000001000100000000000100000000000000000000
0040400100010000000000010000000000000000000000404001000100000000
0001000000000000000000000040400000F042000070425B0000000D00000001
000000020002000000FFFF5C0000000800000001000100010001000000000001
000000000000000000C8420000C842000001000100000000000100FFFFFF0000
00A04100005D00000009000000010001000100FFFFFF00010000000000000001
000100FFFFFF00010080C0FF0000005E0000000A0000000100FFFFFFFFFFFF04
000000000004000000040000005F0000000E0000002500000000004041010000
0001000000000004000000FFFF640000000000000000000000FB040000120100
00010060000000050000000C005A2041786973205469746C6500060000000400
0000FB040000120100000000000000000000FB04000012010000000004000000
6100000012000000010003000000010004000000620000001600000063000000
12000000050003000000000004000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
FFFFFFFF000000001700000005000000FFFFFFFFFFFF64000000050000000200
43340006000000040000000000000D000000010000000200020000000000FFFF
FFFF650000000E00000025000000000040410100000001000000000004000000
000064000000440500008AFEFFFFEE0600009CFFFFFF00006400000032010000
12010000440500008AFEFFFF760600009CFFFFFF000004000000000000000000
FFFF00000000010001000100000000000000000000000000FFFF000000000400
01000000000000000000000004000000FFFF0000B4420000B442C3F5A83E0000
803F1F852B3F0400CDCCCC3DFFFF66000000190000000E005674537572666163
6544657363000100010001000100FFFFFF000100000000000000010001000000
0000010000000000000000000000404000000000000067000000120000000000
030000000000040000006800000015000000000000000A000000010000000000
0000010000000000000000000000404001000000000000000100000000000000
0000000040400100000000000000010000000000000000000000404000000000
00000000690000000D00000001000000020002000000FFFFFFFFFFFF6A000000
0E00000025000000000040410100000001000000000004000000000064000000
000000000000000000000000000000000000FFFFFFFF00000000000000000000
00000000000000000000000000000000040000006B0000001200000000000300
0000000004000000000000000000000000000000000000000000000000000000
000000000000000000000000020000000000000000000000000004000000FFFF
6C0000001A0000000C005674434C696E654974656D0001000000000000000000
010001000100FF000000010000000000000001000900000000000100FF000000
0000A04100004040FFFFFFFF040000006D0000001A0000000000000000000000
010001000100FFFF0000010000000000000001000900000000000100FFFF0000
0000A04100004040FFFFFFFF0400000000000000000001000100010000000400
0000FFFF0000010000000100010000000F000000F000F0000100FFFF00007043
0000704300C0D5450080594501006E0000000800000001000100010001000000
000001000000000000000000C8420000C842000001000100000000000100FFFF
FF000000A04100006F00000009000000010001000100FFFFFF00010000000000
000001000100FFFFFF00010080C0FF000000700000000A0000000100FFFFFFFF
FFFF040000000000040000000400000004000000710000001200000004000300
0000040004000000720000001B00000009005674536572696573000200010001
00000002000100FF000000000020420000404001000100000000000100FF0000
010000000000004040010001000100FF0000000100000000000000FFFFFFFF73
00000012000000000003000000000004000000FFFF0000000000000100010000
00000001000000000000000000000040400C0000000000000000000000000000
0000000000000000000000000000000000000000007400000005000000020043
31000600000004000000750000001C0000000E0056745365726965734C616265
6C0001000D00000001000000020002000000FFFFFFFFFFFF760000000E000000
2500000000004041010000000100000000000400000000006400000000000000
0000000000000000000000000000740000000000000000000000000000000000
00000000000000000000000004000000770000000D0000000100000000000200
0000FFFFFFFFFFFF780000000E00000025000000000020410100000001000000
0000040000000000640000000000000000000000000000000000000000007400
0000000000000000000000000000000000000000000000000000000004000000
0100790000001D0000000D00567454657874466F726D61740001000400000000
007A00000005000000000006000000040000007B0000001D0000000400000000
007C000000050000000400302E30250006000000040000000000FFFF02000100
0100000000000100FF00000000002042000040400000704300000100FF000000
7D0000000A00000001000000FFFFFFFF040000000100000004000000803F0100
FF0000010100FF00000100001B0000000100050006000700080009000A000000
01000200030004001700180019000B000C000D000F0010001500160020002100
2200220005000200020002000600080000000000000000000000040000007E00
00001B0000000100010000000200010000FF0000000020420000404001000100
00000000010000FF0001000000000000404001000100010000FF000001000000
00000000FFFFFFFF7F00000012000000000003000000000004000000FFFF0000
00000000010001000000000001000000000000000000000040400C0000000000
0000010000000100000000000000000000000000000000000000000000008000
00000500000002004332000600000004000000810000001C0000000D00000001
000000020002000000FFFFFFFFFFFF820000000E000000250000000000404101
0000000100000000000400000000006400000000000000000000000000000000
0000000000800000000000000000000000000000000000000000000000000000
00000004000000830000000D00000001000000000002000000FFFFFFFFFFFF84
0000000E00000025000000000020410100000001000000000004000000000064
0000000000000000000000000000000000000000008000000000000000000000
00000000000000000000000000000000000000040000000100850000001D0000
00040000000000860000000500000000000600000004000000870000001D0000
0004000000000088000000050000000400302E30250006000000040000000000
FFFF02000100010000000000010000FF00000000204200004040000070430000
010000FF0000890000000A00000001000000FFFFFFFF04000000020000000400
0000803F010000FF0001010000FF000101001B00000001000500060007000800
09000A00000001000200030004001700180019000B000C000D000F0010001500
1600200021002200220005000200020002000600080000000000000000000000
040000008A0000001B000000010001000000020001000000FF00000020420000
4040010001000000000001000000FF0100000000000040400100010001000000
FF000100000000000000FFFFFFFF8B0000001200000000000300000000000400
0000FFFF00000000000001000100000000000100000000000000000000004040
0C00000000000000020000000200000000000000000000000000000000000000
000000008C00000005000000020043330006000000040000008D0000001C0000
000D00000001000000020002000000FFFFFFFFFFFF8E0000000E000000250000
0000004041010000000100000000000400000000006400000000000000000000
00000000000000000000008C0000000000000000000000000000000000000000
000000000000000000040000008F0000000D00000001000000000002000000FF
FFFFFFFFFF900000000E00000025000000000020410100000001000000000004
0000000000640000000000000000000000000000000000000000008C00000000
0000000000000000000000000000000000000000000000000004000000010091
0000001D00000004000000000092000000050000000000060000000400000093
0000001D00000004000000000094000000050000000400302E30250006000000
040000000000FFFF0200010001000000000001000000FF000000204200004040
00007043000001000000FF00950000000A00000001000000FFFFFFFF04000000
0300000004000000803F01000000FF0101000000FF0102001B00000001000500
06000700080009000A00000001000200030004001700180019000B000C000D00
0F00100015001600200021002200220005000200020002000600080000000000
00000000000004000000960000001B00000001000100000002000100FFFF0000
000020420000404001000100000000000100FFFF000100000000000040400100
01000100FFFF00000100000000000000FFFFFFFF970000001200000000000300
0000000004000000FFFF00000000000001000100000000000100000000000000
0000000040400C00000000000000030000000300000000000000000000000000
0000000000000000000098000000050000000200433400060000000400000099
0000001C0000000D00000001000000020002000000FFFFFFFFFFFF9A0000000E
0000002500000000004041010000000100000000000400000000006400000000
0000000000000000000000000000000000980000000000000000000000000000
000000000000000000000000000000040000009B0000000D0000000100000000
0002000000FFFFFFFFFFFF9C0000000E00000025000000000020410100000001
0000000000040000000000640000000000000000000000000000000000000000
0098000000000000000000000000000000000000000000000000000000000004
00000001009D0000001D0000000400000000009E000000050000000000060000
00040000009F0000001D000000040000000000A0000000050000000400302E30
250006000000040000000000FFFF020001000100000000000100FFFF00000000
2042000040400000704300000100FFFF0000A10000000A00000001000000FFFF
FFFF040000000400000004000000803F0100FFFF00010100FFFF000103001B00
00000100050006000700080009000A0000000100020003000400170018001900
0B000C000D000F00100015001600200021002200220005000200020002000600
08000000000000000000000004000000A20000001E0000000D00567443686172
745469746C650001000C000000A30000000D00000001000000020002000000FF
FFFFFFFFFFA40000000E00000025000000000040410100000001000000000004
000000000064000000000000000000000000000000000000000000A500000005
0000000B004368617274205469746C6500060000000400000000000000000000
00000000000000000000000000000000000000040000000F000000F000640001
000000000000000000000000000000000000000100A600000008000000010001
00010001000000000001000000000000000000C8420000C84200000100010000
0000000100FFFFFF000000A0410000A700000009000000010001000100FFFFFF
00010000000000000001000100FFFFFF00010080C0FF000000A80000000A0000
000100FFFFFFFFFFFF040000000000040000000400000004000000A90000001F
000000070056744C69737400010003000000000004000000010000000000FFFF
FFFFFFFFFFFFFFFFFFFFFFFF000000000000200000000900567457696E646F77
000200040000000000000000}
end
end
Copyright Marco Cantù 1998