Графическое представление данных
Для представления данных из некоторого набора данных в виде графиков различных видов предназначен компонент TDBChart (табл. 15.8). В нем можно одновременно показывать графики для нескольких полей данных. Графики строятся на основе всех имеющихся в наборе данных значений полей. Функционально компонент ничем не отличается от компонента TChart.
Настройка параметров компонента осуществляется специальным редактором, который можно открыть двойным щелчком на перенесенном на форму компоненте.
Здесь мы не будем подробно останавливаться на богатейших изобразительных возможностях этого компонента, рассмотрим только процесс подключения к нему набора данных и построение графиков.
Основой любого графика в компоненте TDBChart является так называемая серия, свойства которой представлены классом Tchartseries. Для того чтобы построить график значений некоторого поля набора данных, необходимо выполнить следующие действия, большинство из которых выполняется в специализированном редакторе компонента.
1. Создать новую серию и определить ее тип.
2. Задать для серии набор данных.
3. Связать с осями координат нужные поля набора данных и, в зависимости от типа серии, задать дополнительные параметры.
4. Открыть набор данных.
Редактор имеет две главные страницы — Chart и Series. Страница Chart содержит многостраничный блокнот и предназначена для настройки параметров самого графика. Страница Series также содержит многостраничный блокнот и используется для настройки серий значений данных.
Для создания новой серии необходимо в редакторе перейти на главную страницу Chart, а на ней открыть страницу Series (рис. 15.6). На этой странице нужно щелкнуть на кнопке Add, а затем в появившемся диалоге выбрать тип серии. После этого в списке на странице Series появляется строка новой серии. Здесь можно переопределить тип, цвет и видимость серии, щелкнув на соответствующей зоне строки.
Все остальные страницы блокнота на главной странице Chart предназначены для настройки параметров графика.
Теперь необходимо перейти на главную страницу Series и на ней из списка названий серий выбрать необходимую. После этого на странице Data Source из списка выбирается строка DataSet. Далее в появившемся списке DataSet выбирается нужный набор данных.
Рис. 15.6. Специализированный редактор компонента TDBChart
Список X позволяет выбрать поле набора данных, значения которого будут последовательно откладываться по оси абсцисс. Список Y позволяет выбрать поле набора данных, значения которого будут отложены по оси ординат. Соответствие между значениями полей по двум осям определяется принадлежностью к одной записи набора данных. Выбор поля в списке Labels привязывает его значения в виде меток к оси абсцисс.
Примечание
Здесь описан набор элементов управления для линейного типа серии. Для других типов элементы управления могут отличаться.
Теперь осталось только открыть набор данных и компонент TDBChart построит график.
Аналогичным образом на этот же компонент можно поместить и другие графики.
Таблица 15.8. Свойства и методы компонента TDBChart
Объявление |
Описание |
Свойства |
|
property AutoRefresh : Boolean; |
Разрешает или запрещает обновление данных в серии при открытии связанного набора данных |
property Refreshlnterval : Longlnt; |
Задает временной интервал в секундах между обновлениями данных в сериях из связанных наборов данных |
property ShowGlassCursor : Boolean; |
Разрешает показ курсора "песочные часы" при обновлении данных |
Методы |
|
procedure CheckDataSource; |
Обновляет данные в сериях |
function IsValidDataSource (ASeries : TChartSeries; AComponent: TComponent) : Boolean; virtual; |
Проверяет, связан ли набор данных AComponent с серией ASeries. В случае успеха проверки возвращает True |
procedure RefreshData; |
Обновляет данные во всех сериях |
procedure Ref reshDataSet (ADataSet : TDataSet; ASeries: TChartSeries); |
Считывает все записи в наборе данных AdataSet и переносит их в серию ASeries |
Методы-обработчики событий |
|
property OnProcessRecord : TProcessRecordEvent; |
Вызывается при переносе данных из отдельной записи набора данных в серию |