События серий
Объекты серий имеют не только свойства и методы, но и события, на которые они могут реагировать. Поскольку компонентов, соответствующих сериям, на форме нет, создавать обработчики событий серий надо следующим образом. В выпадающем списке вверху Инспектора Объектов надо выбрать объект серии, для которой вы хотите создать обработчик событий. После этого можете перейти в Инспекторе Объектов на страницу событий и создавать обработчики обычным способом.
События OnBeforeDrawValues и AfterDrawValues наступают соответственно до и после рисования всех точек серии.
Событие OnBeforeAdd наступает перед добавлением в серию новой точки. Заголовок обработчика этого события имеет вид:
function TForml.SerieslBeforeAdd(Sender: TChartSeries): Boolean;
Параметр Sender указывает серию, в которую добавляется точка. А возвращаемый результат должен быть равен true, если точку надо добавлять, и false, если надо заблокировать добавление точки. Таким образом, в обработчике можно проверять какие-то условия и, если они нарушаются, запрещать добавление этой точки. В этом обработчике значения координат добавляемой точки можно узнать по значению свойств TempValue объектов XValues и YValues. Например, следующий обработчик запрещает добавление точек, значение координаты Y которых лежит в пределах от 7 до 10:
function TForml.SerieslBeforeAdd(Sender: TChartSeries): Boolean;
begin
result := (Sender.YValues.TempValue <= 7) or (Sender.YValues.TempValue >= 10);
end;
Событие OnAfterAdd наступает после добавления в серию новой точки. Заголовок его обработчика имеет вид:
procedure TForml.SerieslAfterAdd(Sender: TChartSeries; Valuelndex: Integer);
Параметр Sender указывает серию, в которую добавлена точка, а параметр Valuelndex — индекс новой точки. Обработчик можно использовать, например, для программного изменения характеристик осей, если они не устанавливаются автоматически.
Событие OnClearValues наступает при удалении точки из серии.
События OnClick и OnDblClick наступают соответственно при щелчке и двойном щелчке на изображении точки. Заголовки обработчиков этих событий имеют одинаковый вид
procedure TForml.SerieslClick(Sender: TChartSeries; Valuelndex: Integer;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
procedure TForml.SerieslDblClick(Sender: TChartSeries; Valuelndex: Integer;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
В обработчики передаются параметры, определяющие серию (Sender), индекс точки (Valuelndex), нажатые кнопки (Button) и клавиши (Shift), координаты курсора мыши (X и Y). Обработчики этих событий можно использовать, например, в диаграммах для выдачи пользователю какой-то дополнительной информации о выделенном элементе диаграммы. Например, оператор
ShowMessage(Sender.YValueToText(Sender.YValues[Valuelndex]));
обеспечивает отображение значения указанной пользователем точки диаграммы. Событие OnGetMarkText происходит перед отображением маркера точки. Обработчик события можно использовать для выдачи в качестве маркера какого-то нестандартного текста.
Пример отображения одних и тех же данных на графиках различных типов.
Пусть Series1 задает круговую диаграмму. Следующие операторы очищают серию Series1 и заносят в нее для отображения диаграммы четыре значения, задавая отображающие их цвета:
With Series1 do
begin
Clear;
Add(A1,'Цех 1',clYellow);
Add(A2,'Цех 2',clBlue);
Add(A3,'Цех 3',clRed);
Add(A4,'Цех 4',clPurple);
end;
Следующий оператор переносит данные серии Series1 в серию Series3, свойства которой, например, определяют отличный от Series1 тип диаграммы:
Series3.Assign(Series1);
Следующие операторы обеспечивают смену типа диаграммы, переключая видимость серий Series1 и Series3:
Series1.Active:= not Series1.Active;
Series3.Active:= not Series3.Active;
