Страница 1 из 1

D7: Tchart -> извлечение внесенных значений

Добавлено: 15 сен 2004, 08:57
Alexander D.
Приветствую всех.

Требуется помощь воевавших с TChart.

Описываю кусок того что сделал: В программе имеется график на который выводятся значения методом AddXY так что ось X имеет форматирование по времени.

with Chart1.BottomAxis do begin
Series1.XValues.DateTime := True ;
Increment := DateTimeStep[ dtOneSecond ];
DateTimeFormat :='n:ss' ;
ExactDateTime := True ;
end ;

Я добавляю отсчеты, скажем, раз в секунду.

Series1.AddXY ( Series1.XValues.Last + TimeStep, Value ) ;
( где TimeStep cоответствует dtOneSecond )

Далее делаю подобие вертикального курсора, (CursorSeries : TShapeSeries) который в OnClick TChart'а устанавливаю в мышеуказанное место ( на всю высоту ) :

Series1.GetCursorValues(x,y); //*
DecodeTime ( X,H,M,Sec,MSec ) ; // неоптимально для наглядности
MSec := 0 ; //**
X := EncodeTime ( H,M,Sec,MSec ) ;

CursorSeries1.X0 := X ;
CursorSeries1.X1 := X ;

CursorSeries1.Y0 := Min(Series1.MinYValue, Chart1.LeftAxis.Minimum );
CursorSeries1.Y1 := Max(Series1.MaxYValue, Chart1.LeftAxis.Maximum );

До сих пор все работает как надо и проблем не вызывает.

Теперь проблема: надо считать значение из графика в месте расположения курсора.

Мои потуги: координата "X" получена в (//*), далее округляю до шага внесения значений в серию (//**), чтобы уж точно брать значения которые заносил (без округления - совсем туго).

Далее вычисляю номер отсчета по данной X коррдинате:
Index := Series1.XValues.Locate(X) ;

ну и собственно из Series1.YValue[Index] получаю искомое значение.

Но все не так гладко... Locate(X) хорошо работет если в серии десяток точек (вообще!, а не видимых);
Если точек больше - почти всегда возвращается -1. Даже округление до шага занесения (//**) не помогает.
Главная особенность - расстояние по оси X - в еденицах времени!!!(с целочисленным отсчетами - все идеально, но оно не актуально).

В TChart имеется несколько методов, которые позволяют пойти через преобразование в экранные пикселы, но сей путь мне видится не самым корректным...ибо идеологически - тормозной.

Вопрос1: где ошибка - у меня или в TChart?
Вопрос2: есть ли какое отъезженное решение, не связанное с поиском в серии или ведением дублирующего списка пар X-Y. (X - всегда однозначно)? Хотя бы для фиксированного шага по оси X.

Заранее премногоблагодарствую.

Re: D7: Tchart -> извлечение внесенных значений

Добавлено: 22 янв 2011, 10:46
Adolph55
Which Birdie Has Your Husband Got His Eye On - On The Golf Course

Why is it that women/wives etc intend not to take much interest in their spouse's past time of playing golf. How many ladies have sat back and denied themselves a game due to the fact that they feel that this game is not for TaylorMade Burner SuperFast Driver?
Don't knock it till you try it there are great many women who enjoy swinging a golf stick on the green but sadly the female species consider retirement age is the best time to take up this sport. How wrong they are TaylorMade R9 460 Driver.
This is a game that provides the young and old with a mixture of emotions, happiness/contentment/peace/tranquillity and at the same time a guaranteed feeling of satisfaction.
Men and women who love the game to an extent where they reach a certain level love the fact that they are now in a position to qualify and play in tournaments with TaylorMade R9 Driver. Ishiner