скрыть

скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Google  
 

Использование 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.






Copyright © 2004-2016 "Delphi Sources". Delphi World FAQ




Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook