IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

2 страниц V  1 2 >  
 Ответить  Открыть новую тему 
> График Chart
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  0  +


Подскажите пожалуйсто как пользоваться графиком Chart.
И возможно ли связать StringGrid с этим графиком.
Если можно то напишите хотябы примерно как это зделать!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Цитата
возможно ли связать StringGrid с этим графиком

Береш в цикле значения из StringGrid и вставляеш в

function AddXY(Const AXValue, AYValue: Double; Const AXLabel: String; AColor: TColor) : Longint;


Вот пример заполнения графика:
Создай Chart, добавь серию и

for i := 0 to 10 do
begin
Chart1.Series[0].AddXY(i,i*2,'Text',clRed);
end;


Цитата
Declaration
function AddXY(Const AXValue, AYValue: Double; Const AXLabel: String; AColor: TColor) : Longint;
Description
This function inserts a new point in the Series. The new point has X and Y values. The AXLabel parameter is optional (can be empty ''). The AColor parameter is optional (can be clTeeColor). The function returns the new point position in the Values list.


Сообщение отредактировано: Reptile -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  0  +


Вот как я пытался написать
Код
Chart1.Series[0].AddXY(k,i,' ',clGreen)


где i это сумма элементов 1 столбца поля StringGrid

Вот какая ошибка появляеться
Код
[Error] Unit1.pas(43): Incompatible types: 'Double' and 'String'


Сообщение отредактировано: Mr.Dmitry -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Ты не правильно настроил Chart, а точнее выбрал не подходящий график.
Добавь серию Line, убери 3D.
Если не получится покажи код.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  0  +


Цитата(Reptile @ 8.11.2006 18:59) *

Ты не правильно настроил Chart, а точнее выбрал не подходящий график.
Добавь серию Line, убери 3D.
Если не получится покажи код.

Даже если я пытаюсь выводить не сумму в линейном графике без 3д все равно не пашет!! (
пофигу на сумму можно хотябы графически вивыести хотябы один эелемент

вот код:

Код
for k:=1 to 10 do
Chart1.Series[0].AddXY(k,Form1.StringGrid1.Cells[8,1],' ',clREd);


Так тош не катит ((

Вобщем мне нужно зделать вот что!
Отобразить на этом графике как изменялись ячейки 7 и 8 столбцов поля стринг грид (тоесть увеличивылись или нет) вот!

Сообщение отредактировано: Mr.Dmitry -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Цитата
Так тош не катит ((

И не будет cool.gif
Цитата
function AddXY(Const AXValue, AYValue: Double; Const AXLabel: String; AColor: TColor) : Longint;

В
Form1.StringGrid1.Cells[8,1]

строка, а нужно Double.
Нужно

for k:=1 to 10 do
Chart1.Series[0].AddXY(k,StrToFloat(Form1.StringGrid1.Cells[8,1]),' ',clREd);


И убедись что не вылазиш за пределы StringGrid.
P.S. Проверил, у меня работает.

Сообщение отредактировано: Reptile -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  0  +


Цитата(Reptile @ 9.11.2006 10:26) *

И не будет cool.gif

В
Form1.StringGrid1.Cells[8,1]

строка, а нужно Double.
Нужно

for k:=1 to 10 do
Chart1.Series[0].AddXY(k,StrToFloat(Form1.StringGrid1.Cells[8,1]),' ',clREd);


И убедись что не вылазиш за пределы StringGrid.
P.S. Проверил, у меня работает.


А у меня не работает пишет:

Project Project1.exe raised exeption Class EconvertError With Message "' is not a valid Floating value Process stoped
.Use Step or run to continue
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Цитата
Project Project1.exe raised exeption Class EconvertError With Message "' is not a valid Floating value Process stoped
.Use Step or run to continue

Наверное вылазиш за пределы StringGrid.
Покажы всю функцию.

Сообщение отредактировано: Reptile -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Цитата
Project Project1.exe raised exeption Class EconvertError With Message "' is not a valid Floating value Process stoped
.Use Step or run to continue

Проект прерван с сообщением "' не является действительным числом.

Начинаем гадать на кофейной гуще (за неимением использую пакетик чая). Что у тебя в стринггриде записано?


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Вот:

unit Unit1;

interface

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

type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Chart1: TChart;
Button1: TButton;
Series1: TLineSeries;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
k : Integer;
begin
for k := 1 to 7 do
Chart1.Series[0].AddXY(k,StrToFloat(Form1.StringGrid1.Cells[k,1]),' ',clREd);
end;

end.

Вот скрин
Прикрепленное изображение

P.S. Дробные числа должны быть через запятую "4,231".

Сообщение отредактировано: Reptile -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11


просто человек
******

Группа: Пользователи
Сообщений: 3 641
Пол: Женский
Реальное имя: Юлия

Репутация: -  55  +


Цитата(Reptile @ 9.11.2006 19:03) *

P.S. Дробные числа должны быть через запятую "4,231".

Дробные числа должны быть через указанный в Панель инструментов->Языки и региональные стандарты разделитель. У тебя там ",", а у кого-то точка.

Кстати, при "вылазении" за пределы стринггрида была бы Access Violation Error, а не Convert Error.

Сообщение отредактировано: мисс_граффити -


--------------------
Все содержимое данного сообщения (кроме цитат) является моим личным скромным мнением и на статус истины в высшей инстанции не претендует.
На вопросы по программированию, физике, математике и т.д. в аське и личке не отвечаю. Даже "один-единственный раз" в виде исключения!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #12


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


мисс_граффити, спасибо за поправку give_rose.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #13


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  0  +


короч вот что в стрингриде:

Код
i:=i+1;
Kol:=kol+1;
Naimenovanie:=ComboBox1.Text;
Data:=DateTimePicker1.date;
Data_oplati:=DateTimePicker2.date;
Data_Prihoda:=DateTimePicker3.date;
Nomer:=LabeledEdit1.text;
Inn_posyavshika:=LabeledEdit2.Text;
stoimost:=StrToFloat(LabeledEdit3.text);
Kol_Vo_Pokupok:=StrToInt(LabeledEdit4.text);
{-----------------------------------------------------------}
form1.stringgrid1.cells[0,i]:=IntToStr(Kol);
form1.stringgrid1.cells[1,i]:=DateToStr(data);
form1.stringgrid1.cells[2,i]:=DateToStr(data_Oplati);
form1.stringgrid1.cells[3,i]:=DateToStr(data_Prihoda);
form1.stringgrid1.cells[4,i]:=Nomer;
form1.stringgrid1.cells[5,i]:=Naimenovanie;
form1.stringgrid1.cells[6,i]:=Inn_posyavshika;
form1.stringgrid1.cells[7,I]:=FloatToStr(stoimost);
form1.stringgrid1.cells[8,I]:=IntToStr(Kol_Vo_pokupok);
form1.StringGrid1.RowCount:=Kol+1;
{----------------------------------------------------------}
form2.Visible:=false;
LabeledEdit1.Clear;
LabeledEdit2.Clear;
LabeledEdit3.Clear;
LabeledEdit4.Clear
end;


График я пытался построить по примеру Reptile Вот он:
Код
var
i:Integer;
bez : Integer;
begin
    Chart1.Series[0].Clear;
   for i := 1 to StringGrid1.RowCount-1 do
   begin
      bez := 0;
          bez := bez + StrToInt(StringGrid1.Cells[7,i]); // это я так понимаю сумма элементов нужного столбца
     Chart1.Series[0].AddXY(i,bez,'',clRed);
   end;
end;


столбец по которому я строю график имеет тип Real.

Сообщение отредактировано: Mr.Dmitry -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #14


Новичок
*

Группа: Пользователи
Сообщений: 14
Пол: Мужской

Репутация: -  0  +


Вообще не знаю как Ты хотел чтобы этот код работал??? blink.gif

for i := 1 to StringGrid1.RowCount-1 do
begin
bez := 0;
bez := bez + StrToInt(StringGrid1.Cells[7,i]); // это я так понимаю сумма элементов нужного столбца
Chart1.Series[0].AddXY(i,bez,'',clRed);
end;


1.Переменную суммы нужно обнулять не в теле цыкла, иначе в bez Ты просто получаеш текущий элемент.
2.Если тип Real пиши
bez := bez + StrToFloat(StringGrid1.Cells[7,i]);

Если нужно вывести сумму элементов только одного столбца то:

Chart1.Series[0].Clear;
bez := 0;
for j := 1 to StringGrid1.RowCount-1 do
begin
bez := bez + StrToFloat(StringGrid1.Cells[7,j]);//подсчитываем сумму элементов
end;
Chart1.Series[0].AddXY(1,bez,' ',clRed);//Выводим один столбец с суммой


Если снова вылезет
Цитата
Project Project1.exe raised exeption Class EconvertError With Message "' is not a valid Floating value Process stoped
.Use Step or run to continue

то
Цитата

Дробные числа должны быть через указанный в Панель инструментов->Языки и региональные стандарты разделитель.


 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #15


Гость






Цитата
Если снова вылезет
вообще-то лучше сделать вот так:
for j := 1 to StringGrid1.RowCount-1 do
begin
bez := bez + StrToFloat(
StringReplace(
StringReplace(StringGrid1.Cells[7, j], '.', DecimalSeparator, [rfReplaceAll]),
',', DecimalSeparator, [rfReplaceAll]
) // подсчитываем сумму элементов

); // Независимо от того, точка или запятая стоит в StringGrid
end;

, чем заставлять пользователя вводить данные заново...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #16


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  0  +


Все равно не рабоатет (((

Project Project1.exe raised exeption Class EconvertError With Message "' is not a valid Floating value Process stoped
.Use Step or run to continue
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #17


Гость






Скриншот, в котором видно StringGrid с данными, выдающими этот Exception приведи... Что ты там в него понабросал, интересно?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #18


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  0  +


Цитата(volvo @ 13.11.2006 12:35) *

Скриншот, в котором видно StringGrid с данными, выдающими этот Exception приведи... Что ты там в него понабросал, интересно?

Вот вся задача полностью!


Сообщение отредактировано: Mr.Dmitry -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #19


Гость






Да не интересует меня полностью проект! Я просил привести снимок экрана с теми ДАННЫМИ, которые ты вводишь, и у тебя возникает исключение. Неужели не понятно, что если я введу правильные данные, зная, какой DecimalSeparator у меня установлен, то ни о каком исключении не может быть и речи?

Ну, как хочешь... Я предложил тебе помощь - ты отказался, дело твоё...
 К началу страницы 
+ Ответить 
сообщение
Сообщение #20


Новичок
*

Группа: Пользователи
Сообщений: 46
Пол: Мужской
Реальное имя: Дмитрий

Репутация: -  0  +


Цитата(volvo @ 13.11.2006 21:58) *

Да не интересует меня полностью проект! Я просил привести снимок экрана с теми ДАННЫМИ, которые ты вводишь, и у тебя возникает исключение. Неужели не понятно, что если я введу правильные данные, зная, какой DecimalSeparator у меня установлен, то ни о каком исключении не может быть и речи?

Ну, как хочешь... Я предложил тебе помощь - ты отказался, дело твоё...

Просто я не смог вставить скрин! при попытки добавить не че не происходло и щас не происходит! вот я и выложил весь проект!

Вот зделал с 10 раза появилось! Сорри
Прикрепленный файл  1.zip ( 12.2 килобайт ) Кол-во скачиваний: 444



Сообщение отредактировано: Mr.Dmitry -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

2 страниц V  1 2 >
 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 1:49
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name