C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Удаление произвольных точек из Series, компонент Tchart
** Николай
Отправлено: 23.01.2006, 16:19


Не зарегистрирован







Помогите разобраться как удалять произвльные точки из компонента Tchart, либо набор точек, например зная координаты???
Заранее спасибо...
Aptem
Отправлено: 25.01.2006, 10:30


Мастер участка

Группа: Участник
Сообщений: 349



Ну если это не критично, то можно просто ненужные точки закрасить цветом фона графика.
CODE
Series1 -> AddXY (x, y, "", clWhite);
** Николай
Отправлено: 25.01.2006, 12:19


Не зарегистрирован







Такой метод не подойдет, т.к. необходимо будет потом рисовать на том же месте, тут возникает проблема, что разные сериес будут перекрывать другие и то чт требуется не получится.
Необходимо удалять именно точки по координатам. Т.е. я нажимаю на кнопку и удаляю ту точку на которую нажал, нажав другой кнопкой рисую точку, там где нажал.
** Admin
Отправлено: 25.01.2006, 17:12


Не зарегистрирован







Кусок из программы:

CODE

//---------------------------------------------------------------------------
// Клик правой кнопкой мыши — удаление указанной точки
void __fastcall TMDIChild::VRChartClickSeries(TCustomChart *Sender,
     TChartSeries *Series, int ValueIndex, TMouseButton Button,
     TShiftState Shift, int X, int Y)
{
    if(Series == Ls && Button == mbRight){
    AnsiString s = "Удаление точки "+IntToStr(ValueIndex)+
                   ", координаты X="+IntToStr((int)Ls->XValue[ValueIndex])+
                               ",Y="+FloatToStrF(Ls->YValue[ValueIndex],ffFixed,4,1);
    if(Application->MessageBox(s.c_str(),"Подтвердите удаление", MB_YESNO)==IDYES){
       Series->Delete(ValueIndex);
       isModified = true;        
       SBar->Panels->Items[0]->Text = "Настройка изменена.";
       }
    }
}
//---------------------------------------------------------------------------

** Admin
Отправлено: 25.01.2006, 17:13


Не зарегистрирован







То есть то что вам нужно, это Series->Delete(ValueIndex);
** Николай
Отправлено: 26.01.2006, 11:34


Не зарегистрирован







Огромное спасибо, но к меня несклько другая задачка, вернее смысл тот же, но есть еще большой вопрос перед этим.
Суть в следующем
Имеется набор Series на который наносятся произвольные точки(Series меняются только по Х, т.е. это много таких горизонтальных Series). Например пользователь нанес два отрезка в Series1 с координатами [20, 150] и второй [200, 300]. Т.е. получилось два таких отрезка, которые Series рисует по точкам, не соединяя их. Точки просто перекрывают друг друга.
Ставится задача, например при желании пользователем удалить все точки находящиеся в координатах по X [100; 250].
Т.е. как я понимаю необходимо перебрав координаты, определить индексы точек которые попадают в отрезок, а затем уже испоьзовать Delete(ValueIndex). Вот такой функции не могу найти.
Может кто нибудь сможет подсказать решение проблемы? Спасибо...
Rius
Отправлено: 26.01.2006, 15:57


Мастер участка

Группа: Участник
Сообщений: 321



подключить Chart к базе данных, где точки элементарно удаляются одним Sql-запросом

Вернуться в Вопросы программирования в C++Builder