507
.pdf160
ListBoxl.Items.Clear;
WITH DbChartl.Series[0] do begin FOR i := 0 TO Count - 1 do
ListBoxl. Items.Add (FloatToStr(XValues.Value[i]) + ‘ ‘ +
FloatToStr(YValues.Value[i]));
END;//with
procedure Delete(ValueIndex : Longlnt); — удаляет из се-
рии точку с номером Valuelndex. График, к которому принадлежит серия, автоматически перерисовывается. Например:
DBChartl.Series[0].Delete(4);
procedure DoSeriesClick(ValueIndex:LongInt; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); virtual; —
инициирует наступление события OnClick.
function GetCursorValuelndex : Longlnt; — возвращает ин-
декс точки серии в
TChartValueList, ближе всего к которой расположен курсор мыши. Если такую точку определить не удается, возвращается — 1. Например, в следующем фрагменте Label1.Caption будет содержать индекс ближайшей точки к курсору мыши или '???', если такая точка не определена:
procedure TForml.DBChartlDblClick(Sender: TObject); var Tmp : Integer;
begin
Tmp := DBChartl.Series[0].GetCursorValuelndex;
IF Tmp >= 0 THEN Label1.Caption := IntToStr(Tmp)
ELSE |
/ |
Label1.Caption := "???'; |
|
end; |
|
procedure GetCursorValues(Var x, у: Double); — возвраща-
ет значения по X и Y точки графика (а не только серии), ближе всего к которой расположен курсор мыши. Например, Label2.Caption и Label3.Caption в следующем фрагменте содер-
жат соответственно значения координат X и Y графика, соответствующие точке, на которой находится курсор мыши:
161
var TmpX, TmpY : Double;
……………………………………..
DBChartl.Series[0].GetCursorValues(TmpX, TmpY); Label2.Caption := Format(‘%10.2f’, [TmpX]); Label3.Caption := Format(‘%10.2f’, [TmpY]);
function GetHorizAxis: TChartAxis; — возвращает указа-
тель на назначенную серии горизонтальную ось. Используя данный указатель, можно вызывать методы оси, обращаться к ее свойствам.
function GetVertAxis:TChartAxis; — возвращает указатель на вертикальную ось.
function MaxXValue: Double; virtual; — возвращает мак-
симальное значение по Х.
function MinXValue: Double; virtual; — возвращает мини-
мальное значение по X.
function MaxYValue: Double; virtual; — возвращает мак-
симальное значение по У.
function MinYValue: Double; virtual; — возвращает мини-
мальное значение по Y.
procedure RefreshSeries; — обновляет значения серии из источника данных указанного в свойстве DataSource.
procedure Repaint; — приводит к полной перерисовке всего графика Рекомендуется вызывать этот метод в случае изменения хотя бы одного из основополагающих свойств серии (например, при изменении значения и DataSource и др.).
function ValuesListCount:LongInt; — возвращает число списков значении точки, используемых в серии. Обычно это 2 (XValues и YValues), но некоторые серии используют 3
(BubbleSeries — XValues, YValues, Radius; GanttSeries — Y, Start,End).
function VisibleCount: Longlnt; — возвращает число точек серии, видимых на графике.
События компонента TСhartSeries
property OnBeforeAdd: TSeriesOnBeforeAdd;
TSeriesOnBeforeAdd = Function(Sender: TChartSeries): Boolean of object;
162
Наступает перед добавлением точки в серию. В обработчике данного события может производиться анализ корректности добавляемых в серию точек. Наступает также при соединении серии с источником данных (ТТаble или TQuery).
property OnAfterAdd: TSeriesOnAfterAdd;
TSeriesOnAfterAdd = procedure(Sender:TChartSeries; ValueIndex:Longint) of object;
Происходит после добавления точки в серию. property OnClearValues: TSeriesOnClear;
TSeriesOnClear = procedure(Sender: TChartSeries) of object;
Происходит при очистке серии от точек. property OnClick : TSeriesClick;
TSeriesClick = procedure(Sender:TChartSeries; Valuelndex: Longlnt; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
Происходит при щелчке мышью на серии.
property OnGetMarkText: TSeriesOnGetMarkText;
TSeriesOnGetMarkText = procedure (Sender : TChartSeries ; Valuelndex : Longlnt; Var MarkText: String)
Происходит при формировании марки для точки в серии. Обработчик может использоваться для изменения содержимого марки.
Разработка формы с реализацией построения графиков для БД отдела кадров
Откроем новую, пустую форму.
Поместим на неѐ компоненты TQuery и TDBChart. Построим графики распределения кадрового состава по
подразделениям.
Сформируем набор данных qDiagram: TQuery. В его свойстве SQL запишем:
select o.Otdel_name as Подразделение, count(c.id_people) as Kolvo from contract c, otdel o
where c.id_otdel=o.id_otdel group by o.Otdel_name
Сформируем серии типа Pie и Bar согласно пунктам 1, 1.1,
1.2.
В результате необходимо получить графики как на рис. 30 и 31.
163
Будем менять вид показываемых графиков по нажатию ра- дио-кнопки в группе радиокнопок. Для этого разместим на форме компонент с палитры Standart RadioGroup1: TRadioGroup.
Вид формы разработанного приложения приведен на рис. 32.
Рис. 32 — Вид формы разрабатываемого приложения
Какая радиокнопка сейчас нажата содержит свойство RadioGroup1.ItemIndex. Его значения и будем отслеживать. Установим по умолчанию RadioGroup1.ItemIndex:=0 — нажата первая кнопка. По нажатию первой кнопки будем показывать круговую диаграмму. Для этого в DBChart1 установим активной сформированную серию типа Pie.
На событие показа формы запишем:
procedure TfmDiagram.FormShow(Sender: TObject); begin
// Устанавливаем программно путь к БД if qDiagram.Active then qDiagram.Close;
164
qDiagram.DatabaseName:=ExtractFilePath(Application.ExeName)+'db';
qDiagram.Open;
// Отслеживаем нажатие кнопок для показа графиков case RadioGroup1.ItemIndex of
0:begin
DBChart1.Series[0].Active:=True;
DBChart1.Series[1].Active:=False;
end;
1:begin
DBChart1.Series[1].Active:=True;
DBChart1.Series[0].Active:=False;
end;
end;
end;
Запустим приложение.
Можете построить и другие зависимости по информации в БД отдела кадров.
165
СПИСОК ЛИТЕРАТУРЫ
1.Кагаловский М.Р. Технология баз данных на персональной ЭВМ. — М.: Финансы и статистика, 1992. — 224 с.
2.Ревунков Г.И., Самохвалов Э.М., Чистов В.В. Базы и банки данных и знаний. — М.: Высшая школа, 1992 — 368 с.
3.Дейт К. Введение в системы баз данных. — М.: Наука,
1980. — 463 с.
4.Гэри Хансен, Джеймс Хансен Базы данных: разработка и управление: Пер. с англ. — М.: ЗАО «Издательство БИНОМ»,
1999. — 704 с.
5.Боуман Джудит, Эмерсон Сандра, Дарновски Марси Практическое руководство по SQL / 3-е издание.: Пер. с англ. —
К.: Диалектика, 1997. — 320с.
6.Саймон А.Р. Стратегические технологии баз данных: менеджмент на 2000 год: Пер. с англ./ Под ред. И с предисл. М.Р. Кагаловского. — М.: Финансы и статистика, 1999.— 479 с.
7.Базы даны: модели, разработка реализация / Т.С. Карпо-
ва.— СПб.: Питер, 2001. — 304 с.