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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.12.2012, 16:32   #1
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию Удаление графика TChart Delphi

Доброго времени суток уважаемые программисты.

Если в TChart необходимо построить несколько графиков ( ну скажем 5 например) они выбираются из radiogroup (ну тоже для примера) то как удалить последний построенный график?
т.е. Построили допустим 4 графика, нажимают кнопку удалить последний остается 3, снова нажимают кнопку остается 2, опять нажали 1 ну и так далее....как это реализовать?
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 16.12.2012, 17:43   #2
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

Tchart1.Series[i].Clear, удаляет только последний график....как вот Series[i] после этого на 1 уменьшать или увеличивать...?
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 16.12.2012, 17:46   #3
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...как то так:
Код:
 if chart1.SeriesCount<>0 then
  chart1.Series[chart1.SeriesCount-1].Destroy
Цитата:
Clear, удаляет только последний график
не удаляет, а очищает контейнер.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 16.12.2012, 17:53   #4
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

raxp, дестрой разносит пол компонента, просто стирает оси и все,
и когда построил сначала третий а затем первый графики то ни один из них не удаляется...
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 16.12.2012, 18:18   #5
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
дестрой разносит пол компонента, просто стирает оси и все,
ну, во первых не разносит, ибо пока есть хоть одна серия - будут и оси. Достаточно:
Код:
 if chart1.SeriesCount>0
Во-вторых, вам стоит пересмотреть методику добавления серий (скажем, сделать динамический массив серий) и запоминать индекс последнего, раз все вразнобой, а не по series1, 2, 3. С другой стороны, если у вас количество графиков всегда постоянное, то что мешает просто очищать контейнер через тот же Clear ?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 16.12.2012, 18:29   #6
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

raxp, допустим вот так я рисую...тогда как очистить через clear?
Код:
begin
  x := XMin;
  repeat
    case RGroup1.ItemIndex of
      0: y := sin(x);
      1: y := cos(x);
      2: y := sin(x) / cos(x);
    end;
    i := RGroup1.ItemIndex;
    graph.series[i].addxy(x, y, '', clTeeColor);
    x := x + 0.01;
  until (x > graph.BottomAxis.Maximum);
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 16.12.2012, 18:59   #7
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

1- обращаться каждый раз к VCL свойствам при добавлении новой точки - тот еще изврат, ну да бог с ним
2- получается у вас заранее неизвестно, какой график выберет пользователь ...значит для последовательного удаления заведите себе массив на общее количество добавленных серий и после каждого построения заносите индекс (номер серии) в порядке возрастания, а при удалении - считывайте индексы из массива в порядке убывания.

Код:
// глобальные VAR
VAR nom: integer = 0;
mas: array[0..2] of integer;


...
begin
  x := XMin;
  repeat
    case RGroup1.ItemIndex of
      0: y := sin(x);
      1: y := cos(x);
      2: y := sin(x) / cos(x);
    end;
    i := RGroup1.ItemIndex;
    graph.series[i].addxy(x, y, '', clTeeColor);
    x := x + 0.01;
  until (x > graph.BottomAxis.Maximum);
 
 mas[nom]:= i;
 inc(nom);
end;


...
// удаление
chart1.series[mas[nom]].clear;
dec(nom);
Смысл ясен?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 16.12.2012 в 19:05.
raxp вне форума Ответить с цитированием
Старый 16.12.2012, 19:15   #8
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

не совсем понятно что значит заносить индекс в порядке возрастания (убывания)...т.е. завожу массив и туда просто записываю индекс выбранной серии потом допустим a[j+1] индекс следующей серии??
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 16.12.2012, 19:23   #9
McFrey
Форумчанин
 
Аватар для McFrey
 
Регистрация: 15.10.2011
Сообщений: 306
По умолчанию

Ошибка возникает list index out of bounds (-1 или 22)
Если твоя программа выполняет мистические действия, значит, ты сделал что-то невероятно тупое...
McFrey вне форума Ответить с цитированием
Старый 16.12.2012, 19:25   #10
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...не следующей серии, а выбранной, а при удалении перебираете индексы массива в обратном порядке. См. код выше.
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Делфи построение графика, Tchart crazyopex Общие вопросы Delphi 2 23.06.2011 14:38
Ошибка построения графика (TChart) IliaIT Общие вопросы Delphi 0 25.05.2010 15:10
Точки графика на TChart cherry25 Компоненты Delphi 7 24.06.2009 14:12
Вывод графика в TChart loozer Компоненты Delphi 1 13.02.2009 23:34
проблема с маштабированием графика (Tchart) Миротверд Общие вопросы Delphi 1 02.07.2007 11:42