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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2010, 01:05   #1
Nigadyai
Пользователь
 
Регистрация: 11.03.2010
Сообщений: 37
По умолчанию TChart, динамическое добавление Series

Здравствуйте, столкнулся с такой проблемой...
по нажатии кнопки нужно создать N-ное количество Series (тип - линия)
с разными параметрами:
1) рандомный цвет
2) кастомное имя
а застрял на самом начале, а именно добавлении Series... в инете нашел подходящий код
Код:
Chart1.AddSeries(TLineSeries.Create( Self ));
либо такой
Код:
var
  Series:TLineSeries;
begin
  Series:=TLineSeries.Create(self);
  Series.Name:='Series1';
  Series.ParentChart:=Chart1; // Или Chart1.AddSeries(Series);
end;
Но компилятор ругается на TLineSeries, обзывая "необозначеным идентификатором". В чем может быть проблема?
Nigadyai вне форума Ответить с цитированием
Старый 15.03.2010, 01:11   #2
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

uses chart,series,TeEngine;
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 15.03.2010, 12:14   #3
Nigadyai
Пользователь
 
Регистрация: 11.03.2010
Сообщений: 37
По умолчанию

спасибо, с этим разобрался так...
Код:
  for i:=1 to NumRow do begin
    Series:=TLineSeries.Create(self);
    Series.Name:=StringGrid1.Cells[0,i];
    Series.ParentChart:=Chart1;
  end;
Теперь остается их удалить все разом

Код:
  for i:=Chart1.SeriesCount-1 downto 0   do
  begin
    if Chart1.Series[i].Name='Series'+IntToStr(i+1) then
    Chart1.Series[i].Free;
  end;
такой вариант мне не подходит, так как названия графиков - отдельные слова и неизвестно в каком порядке они были созданы. Есть еще какие варианты?
Nigadyai вне форума Ответить с цитированием
Старый 15.03.2010, 12:52   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...так как, удалить все разом (тогда причем тут порядок и имя) или все-таки выборочно?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 15.03.2010, 13:07   #5
Nigadyai
Пользователь
 
Регистрация: 11.03.2010
Сообщений: 37
По умолчанию

нет, удалить надо все серии разом, но как (это и есть вопрос) я не нашел.
Нашел вот только пример удаления серий, которые пронумерованы.
Nigadyai вне форума Ответить с цитированием
Старый 15.03.2010, 13:13   #6
Anatole
Форумчанин
 
Аватар для Anatole
 
Регистрация: 07.04.2009
Сообщений: 245
По умолчанию

Цитата:
Сообщение от Nigadyai Посмотреть сообщение
нет, удалить надо все серии разом, но как (это и есть вопрос) я не нашел.
Нашел вот только пример удаления серий, которые пронумерованы.
Храни серии в динамическом массиве.
Всякое безобразие должно быть единообразным. Тогда это называется порядком.
Anatole вне форума Ответить с цитированием
Старый 15.03.2010, 13:25   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

А что Chart1.SeriesList.Clear
отменили?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.03.2010, 13:30   #8
Nigadyai
Пользователь
 
Регистрация: 11.03.2010
Сообщений: 37
По умолчанию

хм... с массивом муторно, но вариант, попробую сейчас...
Chart1.SeriesList.Clear - вот что получается
http://imagehost.spark-media.ru/i/75...98B5C3F20D.jpg

Последний раз редактировалось Nigadyai; 15.03.2010 в 13:35.
Nigadyai вне форума Ответить с цитированием
Старый 15.03.2010, 13:53   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Дык это не метод виноват, а стратегия, которую ты выбрал для создания серий.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 15.03.2010, 13:59   #10
Nigadyai
Пользователь
 
Регистрация: 11.03.2010
Сообщений: 37
По умолчанию

Код:
procedure TAdminForm.Button2Click(Sender: TObject);
var NumRow,NumCol:integer;
MS:array of string;
Series:TLineSeries;
begin
....
  if length(MS)>0 then begin
      for i:=1 to Length(MS) do begin
      if Chart1.Series[i].Name=MS[i] then Chart1.Series[i].Free;
      end;
  SetLength(MS,0);
  end;
  for i:=1 to NumRow do begin
    Series:=TLineSeries.Create(self);
    SetLength(MS,Length(MS)+1);
    MS[i]:=StringGrid1.Cells[0,i];;
    Series.Name:=MS[i];
    Showmessage(MS[i]);
    Series.ParentChart:=Chart1;
  end;
получается так:
1) сначала у нас массив MS пустой
2) добавляя серии, записываем их названия в MS
3) Всё, нужные серии созданы и выведены в чарт.
4) жмем заново кнопку..
5) массив MS не пустой уже, находим номер нужных нам серий и удаляем.
Вроде ж так должно быть?


Цитата:
Дык это не метод виноват, а стратегия, которую ты выбрал для создания серий.
Ну если виновата стратегия, то при каких условиях будет работать метод Chart1.SeriesList.Clear?
Nigadyai вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как получить цвет точки в Series Компонента TChart tavrocotaps Общие вопросы Delphi 1 30.11.2009 12:49
Динамическое добавление в PopupMenu k1r1ch Общие вопросы Delphi 1 02.10.2009 10:29
Изменение вида Series в TChart ViNcHeStEr Помощь студентам 2 20.04.2009 16:17
Динамическое добавление файлов в программу Crivel Общие вопросы Delphi 1 02.02.2009 18:22
Динамическое добавление в страницу Dj_smart HTML и CSS 11 26.05.2008 22:28