WinTypes, WinProcs, Classes, Graphics, Forms, Controls, Menus, Dialogs, StdCtrls, Buttons, ExtCtrls, Tabs, ChartFX, {Похоже, действительно необходимо включить этот модуль в список, чтобы иметь доступ к константам, например к COD_VALUES} VBXCtrl, Chart2fx;
procedure TF_Chart.ExitItemClick(Sender: TObject); begin
Close; end;
procedure TF_Chart.FormCreate(Sender: TObject); begin
TB.Tabs := 3 D NB.Pages;
NB.PageIndex := 3 D 0; Build1(Chart2); Build2(Chart2); {добавляем значения для Chart2: length... и т.д.} end;
procedure TF_Chart.TBClick(Sender: TObject); begin
NB.PageIndex := 3 D TB.TabIndex; end;
procedure TF_Chart.Build1(Ch: TChartFX); begin
{Эта процедура изменяет свойства, которые могут устанавливаться во время разработки или временя выполнения. В коментариях подробно указано чем занимается метод Design}
with Ch do begin
Adm[CSA_GAP] := 3 D 25.0;
{Design: Используйте свойство AdmDlg для изменения координаты Y}
pType := 3 D BAR or CT_LEGEND; {Design: Изменяем свойство ChartType с 1 - line на 2 - bar.}
DecimalsNum[CD_YLEG] := 3 D 0; {Design: Изменяем свойство Decimals с 2 до 0}
Stacked := 3 D CHART_STACKED; {Design: Изменяем свойство Stacked с 0 - None на 1 - Normal}
RightGap := 3 D 20; {Design: Тоже}
OpenData[COD_COLORS] := 3 D 2;
Color[0] := 3 D clBlack; Color[1] := 3 D clYellow; CloseData[COD_COLORS] := 3 D 0; {Фу!!} {Design: Для изменения цветов 2 серий: 1) Убедитесь, что ThisSerie установлен в 0. Измените ThisColor на clBlack. 2) Установите ThisSerie в 1. Измените ThisColor на clYellow.}
Title[CHART_TOPTIT] := 3 D 'Статьи и заголовки'; Title[CHART_LEFTTIT] := 3 D 'CCM'; Title[CHART_BOTTOMTIT] := 3 D 'Карты'; {Design: щелкните на свойстве TitleDlg и установите верхний, левый и нижний заголовки} end; end;
procedure TF_Chart.Build2(Ch: TChartFX); {Данная процедура устанавливает свойства, которые не могут
(насколько я определил это) быть установлены в режиме разработки} const
XAbbrevs: array[0..4] of string[4] = 3 D ('Acc', 'Bar', 'Mas', 'Amex', 'Din'); SeriesTitles: array[0..1] of string[8] = 3 D ('Статьи', 'Заголовки'); XTitles: array[0..4] of string[20] = 3 D
('Access', 'Barclaycard', 'Mastercard', 'American Express', 'Diners'); {естественно, вы должны нормально читать из базы данных xTitles и значения} Values: array[0..1, 0..4] of double = 3 D ((50, 60, 70, 80, 90), (30, 35, 25, 37, 42)); var
i, SerieNo: integer; begin
with Ch do begin
LegendWidth := 3 D 120;
{Установка количества серий, количества значений ******************} OpenData[COD_INIVALUES] := 3 D MAKELONG(2, 5);
CloseData[COD_INIVALUES] := 3 D 0; {*********************************************************}
OpenData[COD_VALUES] := 3 D 2; {если вы пропускаете приведенное выше утверждение, (в котором вы вводите номер SERIES и VALUES), и CloseData ниже, назначение значений не создает ошибки, но и не работает! Назначение значений Legend и KeyLeg работает без OpenData/CloseData} ThisSerie := 3 D 0; for i := 3 D 0 to 1 do
SerLeg[i] := 3 D SeriesTitles[i]; for i := 3 D 0 to 4 do = 20 begin Legend[i] := 3 D XTitles[i]; KeyLeg[i] := 3 D XAbbrevs[i]; end; SerieNo := 3 D 0; for SerieNo := 3 D 0 to 1 do = 20 begin ThisSerie := 3 D SerieNo; for i := 3 D 0 to 4 do Value[i] := 3 D Values[SerieNo, i]; end;
CloseData[COD_VALUES] := 3 D 0; end; end;
procedure TF_Chart.FormResize(Sender: TObject); var
w, h: longint; begin
w := 3 D NB.Width; H := 3 D NB.Height; {при необходимости увеличиваем/уменьшаем размер диаграммы} Chart1.Width := 3 D W - 18; Chart1.Height := 3 D H - 12; Chart2.Width := 3 D W - 18; Chart2.Height := 3 D H - 12;
{перемещаем кнопку выхода в правый угол} ExitBtn.Left := 3 D SpeedPanel.Width - 32; end;