Добрый день.
Работаю на 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;
.......
А изначально задача простая - рисовать на графике точку-метку, для индикации начала отсчёта (визуального), потом при анализе графика брать данные со шкалы времени (Х) и отсюда уже считать данные по сериям, при этом надо сохранить позицию точки относительно серии при перемещении по экрану и масштабировании серий (должна перемещаться вместе с сериями).
В чём косяк? Сама шкала отображается нормально в чч:мм:сс.