ProcedureBuild1(Ch : TChartFX);
ProcedureBuild2(Ch : TChartFX);
end;
varF_Chart: TF_Chart;
implementation
{$R *.DFM}
procedureTF_Chart.ExitItemClick(Sender: TObject);
begin
Close;
end;
procedureTF_Chart.FormCreate(Sender: TObject);
begin
TB.Tabs := NB.Pages;
NB.PageIndex := 0;
Build1(Chart2);
Build2(Chart2); {добавляем значения для Chart2: length... и т.д.}
end;
procedureTF_Chart.TBClick(Sender: TObject);
begin
NB.PageIndex := TB.TabIndex;
end;
ProcedureTF_Chart.Build1(Ch : TChartFX);
begin
{Эта процедура изменяет свойства, которые могут устанавливаться во время разработки или временя выполнения. В коментариях подробно указано чем занимается метод Design}
withCh do begin
Adm[CSA_GAP] := 25.0;
{Design: Используйте свойство AdmDlg для изменения координаты Y}
pType := BAR orCT_LEGEND;
{Design: Изменяем свойство ChartType с 1 - lineна 2 - bar.}
DecimalsNum[CD_YLEG] := 0;
{Design: Изменяем свойство Decimals с 2 до 0}
Stacked := CHART_STACKED;
{Design: Изменяем свойство Stacked с 0 - None на 1 - Normal}
RightGap := 20;
{Design: Тоже}
OpenData[COD_COLORS] := 2;
Color[0] := clBlack;
Color[1] := clYellow;
CloseData[COD_COLORS] := 0;
{Фу!!}
{Design: Для изменения цветов 2 серий:1) Убедитесь, что ThisSerie установлен в 0. ИзменитеThisColor на clBlack.2) Установите ThisSerie в 1. Измените ThisColor наclYellow.}
Title[CHART_TOPTIT] := 'Статьи и заголовки';
Title[CHART_LEFTTIT] := 'CCM';
Title[CHART_BOTTOMTIT] := 'Карты';
{Design: щелкните на свойстве TitleDlg и установите верхний, левый и нижний заголовки}
end;
end;
ProcedureTF_Chart.Build2(Ch : TChartFX);
{Данная процедура устанавливает свойства, которые не могут (насколько я определил это) быть установлены в режиме разработки}
const
XAbbrevs : array[0..4] of string[4] =('Acc', 'Bar', 'Mas', 'Amex', 'Din');
SeriesTitles : array[0..1] of string[8] =('Статьи', 'Заголовки');
XTitles : array[0..4] of string[20] = ('Access', 'Barclaycard', 'Mastercard', 'American Express', 'Diners');
{естественно, вы должны нормально читать из базы данных xTitles и значения}
Values : array[0..1, 0..4] ofdouble =((50, 60, 70, 80, 90),(30, 35, 25, 37, 42));
var i, SerieNo : integer;
begin
withCh do begin
LegendWidth := 120;
{Установка количества серий, количества значений ******************}
OpenData[COD_INIVALUES] := MAKELONG(2, 5);
CloseData[COD_INIVALUES] := 0;
{*********************************************************}
OpenData[COD_VALUES] := 2;
{если вы пропускаете приведенное выше утверждение, (в котором вы вводите номер SERIES и VALUES), и CloseData ниже, назначение значений не создает ошибки, но и не работает! Назначение значений Legend и KeyLeg работает без OpenData/CloseData}
ThisSerie := 0;
fori := 0 to1 doSerLeg[i] := SeriesTitles[i];
fori := 0 to4 do= begin
Legend[i] := XTitles[i];
KeyLeg[i] := XAbbrevs[i];
end;
SerieNo := 0;
forSerieNo := 0 to1 do begin
ThisSerie := SerieNo;
fori := 0 to4 doValue[i] := Values[SerieNo, i];
end;
CloseData[COD_VALUES] := 0;
end;
end;
procedureTF_Chart.FormResize(Sender: TObject);
varw, h : longint;
begin
w := NB.Width;
H := NB.Height;
{при необходимости увеличиваем/уменьшаем размер диаграммы}
Chart1.Width := W – 18;
Chart1.Height := H – 12;
Chart2.Width := W – 18;
Chart2.Height := H – 12;
{перемещаем кнопку выхода в правый угол}
ExitBtn.Left := SpeedPanel.Width – 32;
end;
end.
CHARTFX – минимум максимум
Так можно сделать с ChartFX в Delphi 2…. Я думаю то же самое будет и в D1…
cfxStockTrends.Adm[CSA_MIN] := X; //устанавливаем минимум по оси Y
cfxStockTrends.Adm[CSA_MAX] := Y; //Устанавливаем максимум по оси Y
Документация, поставляемая с Delphi, слишком запутанна и тяжела, особенно если вы не пользователь VBX…
Следующий пример устанавливает некоторые значения и пр. для ChartFX:
{Код получает данные из базы данных и рисует их}
begin
MyTable.active := True; {открываем базу данных}
Читать дальше