Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
_Delphi_1курс лекции / Тема 11 Компонент Chart.doc
Скачиваний:
143
Добавлен:
23.03.2015
Размер:
225.79 Кб
Скачать

События серий

Объекты серий имеют не только свойства и методы, но и события, на которые они могут реагировать. Поскольку компонентов, соответствующих сериям, на фор­ме нет, создавать обработчики событий серий надо следующим образом. В выпа­дающем списке вверху Инспектора Объектов надо выбрать объект серии, для кото­рой вы хотите создать обработчик событий. После этого можете перейти в Инспек­торе Объектов на страницу событий и создавать обработчики обычным способом.

События 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;