** Николай |
Отправлено: 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-запросом
|
|
|