Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Использование 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.

Проект Delphi World © Выпуск 2002 - 2004
Автор проекта: ___Nikolay