Оригинальный DVD-ROM: eXeL@B DVD !
eXeL@B ВИДЕОКУРС !

ВИДЕОКУРС
выпущен 4 ноября!


УЗНАТЬ БОЛЬШЕ >>
Домой | Статьи | RAR-cтатьи | FAQ | Форум | Скачать | Видеокурс
Новичку | Ссылки | Программирование | Интервью | Архив | Связь

БОЛЬШОЙ FAQ ПО DELPHI



Использование ChartFX


В Windows 2005, рядом с пунктом "Выполнить...", появился пункт "Выполнить недопустимую операцию"

Это код, который я использую для установки chartfx.


 chart1.Opendata[cod_values]:=makelong(no_of_series,no_of_classes);
 {установка последовательных значений}
 chart1.closedata[cod_values]:=0;
 


 unit TstChart;
 
 interface
 
 uses = 20
 
   WinTypes, WinProcs, Classes, Graphics, Forms, Controls, Menus,
   Dialogs, StdCtrls, Buttons, ExtCtrls, Tabs,
   ChartFX, {Похоже, действительно необходимо включить этот модуль
   в список, чтобы иметь доступ к константам, например к COD_VALUES}
   VBXCtrl, Chart2fx;
 
 type
 
   TF_Chart = 3 D class(TForm)
     SpeedPanel: TPanel;
     ExitBtn: TSpeedButton;
     NB: TNotebook;
     TB: TTabSet;
     Chart1: TChartFX;
     Chart2: TChartFX;
     procedure ExitItemClick(Sender: TObject);
     procedure FormCreate(Sender: TObject);
 
     procedure TBClick(Sender: TObject);
     procedure FormResize(Sender: TObject);
   private
     { Private declarations }
   public
     { Public declarations }
     procedure Build1(Ch: TChartFX);
     procedure Build2(Ch: TChartFX);
   end;
 
 var
 
   F_Chart: TF_Chart;
 
 implementation
 
 {$R *.DFM}
 
 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;
 
 end.
 




<< ВЕРНУТЬСЯ В ОГЛАВЛЕНИЕ



Материалы находятся на сайте https://exelab.ru/pro/



Оригинальный DVD-ROM: eXeL@B DVD !


Вы находитесь на EXELAB.rU
Проект ReactOS