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