|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Tchart и CalcXPosValue по шкале времени
Добрый день.
Работаю на D6. Вот так получаю координаты по осям температуры (Y) и по оси времени (X), xx и yy глобальные: Код:
procedure TForm4.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin chart1.SetFocus; xx:= timetostr(Chart1.Series[1].xScreenToValue(x)); yy:= floattostrf(Chart1.Series[1].YScreenToValue(y),ffFixed,6,2); Edit3.Text:=datetostr(Chart1.Series[1].xScreenToValue(x)); // Выводим данные под мышой Edit4.Text:=xx; // сохраняю и отображаю Edit5.Text:=yy; // end; работает нормально, но код ниже нет - не даёт мне обратно точку на канвасе по шкале времени Х - выдаёт всегда х0=-213677436, а по Y нормально: Код:
procedure TForm4.Chart1DblClick(Sender: TObject); var x0,y0,x1,y1:integer; begin chart1.Canvas.Pen.Color:=clblue; chart1.Canvas.Brush.Color:=clblue; x0:=chart1.BottomAxis.CalcXPosValue(strtotime(xx)); //получаю из глобальных y0:=chart1.LeftAxis.CalcYPosValue(strtofloat(yy)); // значения под мышью x1:=x0+2; y1:=x0+2; x0:=x0-2; y0:=y0-2; if (RadioGroup2.ItemIndex=0)and (RadioGroup2.Tag=0) then begin Edit1.Text:=xx; chart1.Canvas.Rectangle(x0,y0,x1,y1); RadioGroup2.Tag:=1; Edit1.SetFocus; exit; end; ....... А изначально задача простая - рисовать на графике точку-метку, для индикации начала отсчёта (визуального), потом при анализе графика брать данные со шкалы времени (Х) и отсюда уже считать данные по сериям, при этом надо сохранить позицию точки относительно серии при перемещении по экрану и масштабировании серий (должна перемещаться вместе с сериями). В чём косяк? Сама шкала отображается нормально в чч:мм:сс. |