Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.09.2011, 14:25   #1
Romper
 
Регистрация: 14.10.2010
Сообщений: 3
По умолчанию Вопрос по компоненту TChart

Написал программу, точнне база данных на Delphi, данные берутся из MS Access подключением через ADO Connection. Не могу сделать диаграмму чтобы отображались данные из моей базы. Подскажите пожалуйста как сделать???
Очень нужно...
Romper вне форума Ответить с цитированием
Старый 23.09.2011, 08:42   #2
zzuzzi
 
Регистрация: 15.02.2011
Сообщений: 3
По умолчанию

хм... к сожалению не работал со связью баз Access и Delphi, так что могу подсказать только, что данные из базы лучше забить в массив а потом уж выводить в виде графика, самому же будет легче, а в график можно вывести так:

допустим у тебя массив Access: Array [0..100] of integer;
ты его заполнил, всё супер, тебе надо вывести в Chart_е, для этого:

Код:
for i:=0 to 100 do
Series1.AddXY(i,  Access[i], 'Тут любая подпись' , clGreen);
end;
Series1 - это серия твоей диаграммы, два раза тыкнешь на компонент Chart, нажмешь Add и добавишь;
AddXY - это запись по координатам в твоей диаграмме;
i - (первая после скобки) это позиция твоего первой точки диаграммы, например если ты столбцы выводишь, то первый столбец;
Access[i] - ну это твой массив;
' ' - в кавычках можно вписать лубую надпись, которая будет выводиться под графиком(если будут проблемы с выводом значений, т.е. надпись и с низу и в значении, тогда щелкни по ChartSeries/Marks/Style->Value)
clGreen - это цвет серии.

Так что с выводом ничего сложного, а вот как забить базу в массив и как вообще её связать поищи, если не сложно, кинь сюда что найдёшь)
zzuzzi вне форума Ответить с цитированием
Старый 23.09.2011, 21:54   #3
Romper
 
Регистрация: 14.10.2010
Сообщений: 3
По умолчанию

нашел лишь такой код:

unit Unit5; // построение диаграмм

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Series;

type
TForm5 = class(TForm)
RadioGroup1: TRadioGroup;
Chart1: TChart;
Button1: TButton;
Button2: TButton;
Series1: TPieSeries;
Series3: TBarSeries;
Series2: TFastLineSeries;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
{procedure FormCreate(Sender: TObject);}
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form5: TForm5;

implementation

uses Unit7, Unit2, DataModuleUnit;

{$R *.dfm}

procedure TForm5.Button2Click(Sender: TObject); // выход
begin
form5.close;
end;

procedure TForm5.Button1Click(Sender: TObject);
begin

case Form5.RadioGroup1.ItemIndex of
0:begin
Form5.Chart1.Series[0].Active:=true;
Form5.Chart1.Series[0].Clear;
Form5.Chart1.Series[1].Active:=false;
Form5.Chart1.Series[2].Active:=false;
end;

1: begin
Form5.Chart1.Series[0].Active:=false;
Form5.Chart1.Series[1].Active:=true;
Form5.Chart1.Series[1].Clear;
Form5.Chart1.Series[2].Active:=false;
end;
2: begin
Form5.Chart1.Series[0].Active:=false;
Form5.Chart1.Series[1].Active:=false;
Form5.Chart1.Series[2].Active:=true;
Form5.Chart1.Series[2].Clear;
end;
end;

DataModule8.ds_diagram.Active := false;
DataModule8.ds_diagram.Active := true;
DataModule8.ds_diagram.First;
Series1.Clear;
while (not DataModule8.ds_diagram.Eof) do // построение
begin
Series1.Add(DataModule8.ds_diagram. FieldByName('num').AsFloat,
DataModule8.ds_diagram.FieldByName( 'type_name').AsString);
DataModule8.ds_diagram.Next;
end;

DataModule8.ds_diagram.First;
Series2.Clear;
while (not DataModule8.ds_diagram.Eof) do
begin
Series2.Add(DataModule8.ds_diagram. FieldByName('sum_cost').AsFloat,
DataModule8.ds_diagram.FieldByName( 'type_name').AsString);
DataModule8.ds_diagram.Next;
end;

DataModule8.ds_diagram.First;
Series3.Clear;
while (not DataModule8.ds_diagram.Eof) do
begin
Series3.Add(DataModule8.ds_diagram. FieldByName('sum_area').AsFloat,
DataModule8.ds_diagram.FieldByName( 'type_name').AsString, random($FFFFFF));
DataModule8.ds_diagram.Next;
end;
end;
end.
Romper вне форума Ответить с цитированием
Старый 23.09.2011, 21:55   #4
Romper
 
Регистрация: 14.10.2010
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Romper Посмотреть сообщение
нашел лишь такой код:

unit Unit5; // построение диаграмм

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, TeeProcs, TeEngine, Chart, Series;

type
TForm5 = class(TForm)
RadioGroup1: TRadioGroup;
Chart1: TChart;
Button1: TButton;
Button2: TButton;
Series1: TPieSeries;
Series3: TBarSeries;
Series2: TFastLineSeries;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
{procedure FormCreate(Sender: TObject);}
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form5: TForm5;

implementation

uses Unit7, Unit2, DataModuleUnit;

{$R *.dfm}

procedure TForm5.Button2Click(Sender: TObject); // выход
begin
form5.close;
end;

procedure TForm5.Button1Click(Sender: TObject);
begin

case Form5.RadioGroup1.ItemIndex of
0:begin
Form5.Chart1.Series[0].Active:=true;
Form5.Chart1.Series[0].Clear;
Form5.Chart1.Series[1].Active:=false;
Form5.Chart1.Series[2].Active:=false;
end;

1: begin
Form5.Chart1.Series[0].Active:=false;
Form5.Chart1.Series[1].Active:=true;
Form5.Chart1.Series[1].Clear;
Form5.Chart1.Series[2].Active:=false;
end;
2: begin
Form5.Chart1.Series[0].Active:=false;
Form5.Chart1.Series[1].Active:=false;
Form5.Chart1.Series[2].Active:=true;
Form5.Chart1.Series[2].Clear;
end;
end;

DataModule8.ds_diagram.Active := false;
DataModule8.ds_diagram.Active := true;
DataModule8.ds_diagram.First;
Series1.Clear;
while (not DataModule8.ds_diagram.Eof) do // построение
begin
Series1.Add(DataModule8.ds_diagram. FieldByName('num').AsFloat,
DataModule8.ds_diagram.FieldByName( 'type_name').AsString);
DataModule8.ds_diagram.Next;
end;

DataModule8.ds_diagram.First;
Series2.Clear;
while (not DataModule8.ds_diagram.Eof) do
begin
Series2.Add(DataModule8.ds_diagram. FieldByName('sum_cost').AsFloat,
DataModule8.ds_diagram.FieldByName( 'type_name').AsString);
DataModule8.ds_diagram.Next;
end;

DataModule8.ds_diagram.First;
Series3.Clear;
while (not DataModule8.ds_diagram.Eof) do
begin
Series3.Add(DataModule8.ds_diagram. FieldByName('sum_area').AsFloat,
DataModule8.ds_diagram.FieldByName( 'type_name').AsString, random($FFFFFF));
DataModule8.ds_diagram.Next;
end;
end;
end.
но разобраться не получается....
Romper вне форума Ответить с цитированием
Старый 24.09.2011, 07:01   #5
Surgeon
Форумчанин
 
Регистрация: 04.10.2007
Сообщений: 106
По умолчанию

Цитата:
Сообщение от Romper Посмотреть сообщение
Написал программу, точнне база данных на Delphi, данные берутся из MS Access подключением через ADO Connection. Не могу сделать диаграмму чтобы отображались данные из моей базы. Подскажите пожалуйста как сделать???
Очень нужно...
Использовать DBChart. Редактор рядов(series) данных там идентичный, как источник данных для ряда нужно выбрать DataSet, затем нужные поля по которым будет строится график.
Все не так плохо, как вам кажется, на самом деле все гораздо хуже.
http://delphiworld.narod.ru/dw.html - 5000 статей!!! удобный поиск, оффлайн сборник, рекомендую всем
Surgeon вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос по компоненту memo Handy Компоненты Delphi 6 17.06.2011 00:50
Вопрос по компоненту DateTimePicker Dux Компоненты Delphi 5 18.09.2010 23:02
Вопрос по компоненту UpdateSQL Pang SQL, базы данных 1 18.05.2010 11:59
Вопрос по компоненту TDateTimePicker SANIOK_AV Общие вопросы Delphi 5 05.06.2009 13:47
Вопрос по компоненту StringGrid Vla9240 Помощь студентам 2 14.05.2009 22:36