Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизChartfx Найти похожие ветки
← →
Igor G © (2004-04-21 16:03) [0]Кто работал с этой фигнёй, если можно, киньте пример работы в run-time или хэлп-у кого есть
← →
Igor G © (2004-04-21 16:03) [0]Кто работал с этой фигнёй, если можно, киньте пример работы в run-time или хэлп-у кого есть
← →
Axil (2004-04-21 16:19) [1]Документация, поставляемая с Delphi, слишком запутанна и тяжела, особенно если вы не пользователь VBX...
Следующий пример устанавливает некоторые значения и пр. для ChartFX:
{Код получает данные из базы данных и рисует их}
begin
MyTable.active := True; {открываем базу данных}
MyTable.first;
MyChart.title[CHART_BOTTOMTIT] := "Заголовок по оси X";
MyChart.title[CHART_LEFTTIT] := "Заголовок по оси Y";
MyChart.OpenData[COD_XVALUES] := MakeLong(numOfSeries, numofPoints);
MyChart.OpenData[COD_VALUES] := MakeLong(numOfSeries, NumofPoints);
MyChart.ThisSerie := SeriesNum; {начинаем с 0}
while MyTable.EOF <> True do
begin
MyChart.value[i] := MyTable.FieldByName("SOMEFIELD").AsFloat;
MyChart.Xvalue[i] := MyTable.FieldByName("SOMEOTHERFIELD").AsFloat;
MyTable.next;
i := i + 1; {естественно, вам необходимо определить и инициализировать "i"}
end;
MyChart.CloseData[COD_Values] := 0;
MyChart.CloseData[COD_XValues] := 0;
MyTable.active := False; {закрываем базу данных}
end;
{Обратите внимание на то, что данный код отностится к диаграмме
типа xy scatter. Если вы хотите сменить тип диаграммы ChartFX,
вам не нужно устанавливать значения для COD_XVALUES}
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.
← →
Axil (2004-04-21 16:19) [1]Документация, поставляемая с Delphi, слишком запутанна и тяжела, особенно если вы не пользователь VBX...
Следующий пример устанавливает некоторые значения и пр. для ChartFX:
{Код получает данные из базы данных и рисует их}
begin
MyTable.active := True; {открываем базу данных}
MyTable.first;
MyChart.title[CHART_BOTTOMTIT] := "Заголовок по оси X";
MyChart.title[CHART_LEFTTIT] := "Заголовок по оси Y";
MyChart.OpenData[COD_XVALUES] := MakeLong(numOfSeries, numofPoints);
MyChart.OpenData[COD_VALUES] := MakeLong(numOfSeries, NumofPoints);
MyChart.ThisSerie := SeriesNum; {начинаем с 0}
while MyTable.EOF <> True do
begin
MyChart.value[i] := MyTable.FieldByName("SOMEFIELD").AsFloat;
MyChart.Xvalue[i] := MyTable.FieldByName("SOMEOTHERFIELD").AsFloat;
MyTable.next;
i := i + 1; {естественно, вам необходимо определить и инициализировать "i"}
end;
MyChart.CloseData[COD_Values] := 0;
MyChart.CloseData[COD_XValues] := 0;
MyTable.active := False; {закрываем базу данных}
end;
{Обратите внимание на то, что данный код отностится к диаграмме
типа xy scatter. Если вы хотите сменить тип диаграммы ChartFX,
вам не нужно устанавливать значения для COD_XVALUES}
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.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.048 c