Учись программированию на C++ Builder бесплатно!
Содержание[Скрыть]

Компонент DBChart класса TDBChart предназначается для подготовки диаграмм на основании информации, содержащейся в наборе данных. Класс DBChart является производным от класса TChart и наследует всю его функциональность (свойства и методы). Компонент DBChart позволяет создавать диаграммы различных типов, в том числе объемные. Этот компонент является достаточно сложным и имеет большое количество свойств, многие из которых являются объектами и также имеют свои свойства. Задание значений этих свойств выполняется при разработке приложения с помощью Редактора диаграмм (Editing DBChart1). Редактор позволяет оперировать со свойствами-объектами, информация о которых отображается на его страницах, и вызывается двойным щелчком на компоненте DBChart или через поле значения свойства-объекта в Инспекторе объектов, например, SeriesList или Title (в этом случае активной становится страница, соответствующая выбранному свойству).

Важнейшим свойством компонента DBChart является свойство Series [Index:Longint] типа TChartSeries, представляющее собой массив диаграмм, выводимых в области компонента (чаще всего компонент содержит одну диаграмму). Для каждой диаграммы можно установить:

  • тип
  • описание
  • название
  • источник данных
  • оси
  • и другие параметры

Несмотря на сложность компонента, работать с ним достаточно просто ввиду наличия установок по умолчанию. От разработчика требуется, по меньшей мере, указать тип диаграммы и источник данных. Тип выбранной диаграммы (диаграмм) и ее название отображаются на странице Chart-Series Редактора диаграмм. Для добавления новой диаграммы нужно нажать кнопку Add, в результате чего появляется окно. После выбора типа диаграммы, объемного или плоского варианта ее построения и нажатия кнопки OK диаграмма добавляется к значению свойства Series и отображается на соответствующей странице Редактора диаграмм.

Для выбранной диаграммы можно выполнить следующие действия:

  • изменить имя по умолчанию (Series1, Series2 и т.д.) - кнопка Title
  • изменить тип диаграммы - кнопка Change
  • скопировать диаграмму - кнопка Clone
  • удалить диаграмму - кнопка Delete.

Источник данных выбирается на странице Series-DataSource из следующих вариантов:

  • No Data - значения, вводимые программно;
  • Random Values - случайные числа;
  • Function - значения, определяемые выбранной функцией;
  • DataSet - значения набора данных; компонент DBChart отличается от компонента Chart именно тем, что для него в качестве источника данных можно использовать набор данных, т.е. DBChart является более универсальным компонентом.
  • Single Record - значения, входящие в состав одной записи набора данных. При выполнении приложения отображаемая диаграмма соответствует данным текущей записи набора данных.

Если выбран программный способ (вариант No Data) ввода значений, то при выполнении приложения нужно вызывать соответствующие методы. Для управления значениями, по которым строится диаграмма (принадлежащими элементам массива свойству Series), часто используются методы Add, Delete или Clear.

Функция Add (Const AValue: Double; Const ALabel: Ansistring; AColor: TColor): Longint добавляет к диаграмме значение, указанное параметром AValue. Параметры ALabel и AColor содержат соответственно надпись значения и цвет, используемый при выводе. В качестве результата функция возвращает номер значения в массиве значений диаграммы. Кроме этого есть несколько других методов, также позволяющих добавлять значения (например, AddValue и AddNull).

Процедура Delete (ValueIndex: Longint) удаляет значение с номером, указанным параметром ValueIndex. Для удаления всех значений удобно использовать процедуру Clear.

Пример построения диаграммы

double data = 0.0;
TDateTime time1;
TDateTime dateTime1,dateTime2 ;
 
dateTime1 = DateToStr("01.01.2015 00:00:00");
dateTime2 = DateToStr("02.01.2015 00:00:00");
 
Form1->IBQuery1->SQL->Clear();
Form1->IBQuery1->SQL->Text = "SELECT * FROM TBL WHERE TIME between'"+dateTime1+"' and '"+dateTime2+"' ORDER BY TIME"; 
Form1->IBQuery1->Open();
 
Form1->Series1->Clear();
Form1->DBChart1->BottomAxis->DateTimeFormat = "dd.mm.yyyy hh:mm:ss";
 
Form1->IBQuery1->First();
while(!Form1->IBQuery1->Eof){
    time1 = StrToDateTime(Form1->IBQuery1->FieldByName("TIME")->Text);
    data = StrToFloat(Form1->IBQuery1->FieldByName("DATA")->Text);
 
    Form1->Series1->AddXY(time1,data ,"",clRed); 
    Form1->IBQuery1->Next();
}
Form1->DBChart1->AddSeries(Form1->Series1);
Поделиться