8
Classes, SysUtils, TASources, TASeries, TAGraph, CheckLst, Spin,
9
ExtCtrls, StdCtrls, FileUtil, Forms, Controls, Graphics, Dialogs,
10
TAChartListbox, TACustomSeries, TALegend;
18
BtnAddSeries: TButton;
19
BtnDeleteSeries: TButton;
20
BtnToggleCOS: TButton;
21
BtnToggleChart: TButton;
22
BtnToggleSIN: TButton;
25
CbShowCheckboxes: TCheckBox;
26
CbShowSeriesIcon: TCheckBox;
27
CbCheckStyle: TCheckBox;
28
CbKeepSeriesOut: TCheckBox;
29
ChartListbox: TChartListbox;
30
CheckListBox1: TCheckListBox;
31
ColorDialog: TColorDialog;
36
SinSeries: TLineSeries;
37
CosSeries: TLineSeries;
40
RandomChartSource: TRandomChartSource;
43
procedure BtnAddSeriesClick(Sender: TObject);
44
procedure BtnDeleteSeriesClick(Sender: TObject);
45
procedure BtnToggleCOSClick(Sender: TObject);
46
procedure BtnToggleChartClick(Sender: TObject);
47
procedure BtnToggleSINClick(Sender: TObject);
48
procedure BtnAddPointClick(Sender: TObject);
49
procedure CbShowCheckboxesChange(Sender: TObject);
50
procedure CbShowSeriesIconChange(Sender: TObject);
51
procedure CbCheckStyleChange(Sender: TObject);
52
procedure CbKeepSeriesOutChange(Sender: TObject);
53
procedure ChartListboxAddSeries(ASender: TChartListbox;
54
ASeries: TCustomChartSeries; AItems: TChartLegendItems;
56
procedure ChartListboxPopulate(Sender: TObject);
57
procedure EdColumnsChange(Sender: TObject);
58
procedure FormCreate(Sender: TObject);
59
procedure ChartListboxCheckboxClick(Sender: TObject; Index: Integer);
60
procedure ChartListboxClick(Sender: TObject);
61
procedure ChartListboxItemClick(Sender: TObject; Index: Integer);
62
procedure ChartListboxSeriesIconDblClick(Sender: TObject; Index: Integer);
79
procedure TForm1.CreateData;
88
for i := 0 to n - 1 do begin
89
x := mn + (mx - mn) / (n - 1) * i;
90
SinSeries.AddXY(x, sin(x));
91
CosSeries.AddXY(x, cos(x));
95
procedure TForm1.ChartListboxCheckboxClick(Sender: TObject; Index: Integer);
97
Memo.Lines.Add(Format('Checkbox of item #%d (series "%s") clicked.',
98
[Index, ChartListbox.Series[Index].Title]));
101
procedure TForm1.ChartListboxSeriesIconDblClick(Sender: TObject; Index: Integer);
103
Memo.Lines.Add(Format('Icon of item #%d (series "%s") clicked.',
104
[Index, ChartListbox.Series[Index].Title]));
106
if ChartListbox.Series[Index] is TLineSeries then
107
with ColorDialog do begin
108
Color := TLineSeries(ChartListbox.Series[Index]).SeriesColor;
110
TLineSeries(ChartListbox.Series[Index]).SeriesColor := Color;
114
procedure TForm1.ChartListboxItemClick(Sender: TObject; Index: Integer);
116
Memo.Lines.Add(Format('Title of item #%d (series "%s") clicked.',
117
[Index, ChartListbox.Series[Index].Title]));
120
procedure TForm1.ChartListboxPopulate(Sender: TObject);
122
Memo.Lines.Add('Populate');
125
procedure TForm1.ChartListboxClick(Sender: TObject);
128
if ItemIndex <> -1 then
129
Memo.Lines.Add(Format('Item #%d (series "%s") clicked.',
130
[ItemIndex, Series[ItemIndex].Title]));
133
procedure TForm1.FormCreate(Sender: TObject);
138
procedure TForm1.BtnToggleSINClick(Sender: TObject);
140
SinSeries.Active := not SinSeries.Active;
143
procedure TForm1.BtnAddPointClick(Sender: TObject);
145
SinSeries.Add(Random(5), '', clRed);
148
procedure TForm1.CbShowCheckboxesChange(Sender: TObject);
151
if CbShowCheckboxes.Checked then
152
Options := Options + [cloShowCheckboxes]
154
Options := Options - [cloShowCheckboxes];
157
procedure TForm1.CbShowSeriesIconChange(Sender: TObject);
160
if CbShowSeriesIcon.Checked then
161
Options := Options + [cloShowIcons]
163
Options := Options - [cloShowIcons];
166
procedure TForm1.ChartListboxAddSeries(ASender: TChartListbox;
167
ASeries: TCustomChartSeries; AItems: TChartLegendItems; var ASkip: Boolean);
169
ASkip := CbKeepSeriesOut.Checked and
170
((ASeries = SinSeries) or (ASeries = CosSeries));
173
procedure TForm1.CbCheckStyleChange(Sender:TObject);
175
if CbCheckStyle.Checked then
176
Chartlistbox.CheckStyle := cbsRadioButton
178
ChartListbox.CheckStyle := cbsCheckbox;
181
procedure TForm1.CbKeepSeriesOutChange(Sender: TObject);
183
ChartListbox.SeriesChanged(Self);
186
procedure TForm1.EdColumnsChange(Sender: TObject);
188
ChartListbox.Columns := EdColumns.Value;
189
CheckListbox1.Columns := EdColumns.Value;
190
Listbox1.Columns := EdColumns.Value;
193
procedure TForm1.BtnAddSeriesClick(Sender: TObject);
196
cs : TRandomChartSource;
198
cs := TRandomChartSource.Create(Chart);
199
cs.RandSeed := Random(65000);
200
cs.PointsNumber := Random(10) + 3;
206
ser := TLineSeries.Create(Chart);
208
ser.SeriesColor := rgbToColor(Random(255), Random(256), Random(256));
209
ser.Title := Format('Series %d', [Chart.SeriesCount + 1]);
210
ser.ShowPoints := Odd(Chart.SeriesCount);
211
ser.Pointer.Brush.Color := ser.SeriesColor;
213
TSeriesPointerStyle(Random(Ord(High(TSeriesPointerStyle))));
214
Chart.AddSeries(ser);
217
procedure TForm1.BtnDeleteSeriesClick(Sender: TObject);
219
if ChartListbox.ItemIndex = -1 then
220
ShowMessage('Select the series to be deleted from the listbox first.')
221
else if (ChartListbox.ItemIndex < 2) and not CbKeepSeriesOut.Checked then
223
'This demo is designed to have at least the sine and cosine ' +
224
'series in the chart. Deleting is not allowed.')
226
ChartListbox.Series[ChartListbox.ItemIndex].Free;
229
procedure TForm1.BtnToggleCOSClick(Sender: TObject);
231
CosSeries.Active := not CosSeries.Active;
234
procedure TForm1.BtnToggleChartClick(Sender: TObject);
236
if ChartListbox.Chart = nil then
237
ChartListbox.Chart := Chart
239
ChartListbox.Chart := nil;