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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.06.2012, 01:00   #1
_Fobos_
Пользователь
 
Регистрация: 03.11.2011
Сообщений: 21
По умолчанию динамически изменяемый график TChart

есть массив , который постоянно изменятся (заполняется значениями из контроллера ежесекундно)
Нужно выводить каждое значение из массива в виде отдельного графика ежесекундно, и это все в динамике, т.е. чтоб график бежал в окошке.
Подскажите где рыть?
просьба подробно описать как это сделать
заранее благодарен
_Fobos_ вне форума Ответить с цитированием
Старый 27.06.2012, 08:04   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Код:
Series1.Addy(random(500));
if Series1.Count > <быстрый ход> then begin
 Chart1.BottomAxis.AutomaticMinimum:=false;
 Chart1.BottomAxis.Minimum:=Chart1.BottomAxis.Minimum+1;
end;
Где <быстрый ход> - некое число точек на графике, после которых он начнет движение влево.
Series1.Addy(random(500)); - добавление очередной точки.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.06.2012, 12:43   #3
_Fobos_
Пользователь
 
Регистрация: 03.11.2011
Сообщений: 21
По умолчанию

Сразу предупрежу, опыта в программировании у меня мало.
Прошу прощения, я поставил вопрос некорректно.
Под “т.е. чтоб график бежал в окошке.” Я имел ввиду
Его анимированное построение. чтобы после одного нажатия кнопки, на экране отображалась как бы анимированная прорисовка графика.
Дело в том, что данные, по которым строится график, все время изменяются и каждый раз происходит не добавление новой точки к графику, а перестройка его в целом.
_Fobos_ вне форума Ответить с цитированием
Старый 27.06.2012, 14:15   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

...тогда с каждым новым циклом перерисовки - Series.Clear и набивка массива точек в Series заново.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 27.06.2012, 14:59   #5
_Fobos_
Пользователь
 
Регистрация: 03.11.2011
Сообщений: 21
По умолчанию

Если я правильно вас понял,
То нужно создавать серию, заносить в нее данные , потом удалять.
И все это нужно сделать в таймере, для создания эффекта анимации ?
_Fobos_ вне форума Ответить с цитированием
Старый 27.06.2012, 15:41   #6
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,742
По умолчанию

1- серию достаточно создать один раз, это контейнер;
2- поскольку вызываться будет неоднократно, то сначала очистить, потом наполнять;
3- зачем вам таймер, когда ваши данные все время меняются ...раз меняются, то уже есть некое ваше неназванное событие смены данных, вот в него и втиснуться.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 27.06.2012, 18:02   #7
_Fobos_
Пользователь
 
Регистрация: 03.11.2011
Сообщений: 21
По умолчанию

Да, вы правы, данные все время меняются и график перестраивается но дело в том что мне нужно на графике отображать каждое изменение данных, а он выводит мне на экран только конечный результат
_Fobos_ вне форума Ответить с цитированием
Старый 27.06.2012, 18:07   #8
_Fobos_
Пользователь
 
Регистрация: 03.11.2011
Сообщений: 21
По умолчанию

Код:
for p:=0 to  fmShaftFurnaceGraphic.Chart1.SeriesCount-1 do
begin
 fmShaftFurnaceGraphic.Chart1.Series[p].Clear;
end;

 SetLength(ParamMas, 5);
 ParamMas[0]:=itG;
 ParamMas[1]:=iVG;
 ParamMas[2]:=ivgG;
 ParamMas[3]:=inG;
 ParamMas[4]:=iiG;
 for i:=0 to lGLrs.Count-2 do
  begin
   PVarGL := lGLrs.Items[i];
   x:=PVarGL.Val[ihG]+0.5*PVarGl.Val[idG];
 for n:=0 to  fmShaftFurnaceGraphic.ListBox1.Items.Count-1 do
  begin
   y:=PVarGL.Val[ParamMas[n]];
   fmShaftFurnaceGraphic.Chart1.Series[n].addXY(x,y);
  end;
  end;
_Fobos_ вне форума Ответить с цитированием
Старый 27.06.2012, 18:12   #9
_Fobos_
Пользователь
 
Регистрация: 03.11.2011
Сообщений: 21
По умолчанию

ParamMas : Array of integer; - это просто масив в который загоняются числа (параметры которые мне нужно отображать)
itG,iVG, ivgG, inG, iiG - числа integer;
Код:
PVarGL: ^TVarGL;
TVarGL = record
  Names, Dim: AVarGs24;
  Val: AVarG_ex;
 end;

lGLrs:TList;
_Fobos_ вне форума Ответить с цитированием
Старый 27.06.2012, 18:27   #10
_Fobos_
Пользователь
 
Регистрация: 03.11.2011
Сообщений: 21
По умолчанию

Грубо говоря, пока цикл не закончится, на chart’е не отобразятся данные
А мне нужно чтоб на каждом шаге цикла строился график
Пожалуйста, подскажите, как это сделать если такое возможно
Заранее благодарен
_Fobos_ вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
график в TChart Funy Помощь студентам 1 16.05.2012 16:50
Динамически изменяемый диапазон ячеек от условия Tidus Microsoft Office Excel 4 06.06.2010 10:32
график TChart в MS Word natasha Компоненты Delphi 7 25.06.2007 14:25