Это можно сделать следующим образом:
Само перекрестие:
| Код | //------------------------------------------------------------------------------ //------------- Процедуры трассера --------------------------------------------- //------------------------------------------------------------------------------
procedure TForm1.Trasser(X,Y: Integer; Charts:TChart; Seriess:TLineSeries; Edits1,Edits2:TEdit); Procedure DrawCross(AX,AY:Integer); begin With Charts,Canvas do begin Pen.Color:=CrossHairColor; Pen.Style:=CrossHairStyle; Pen.Mode:=pmXor; Pen.Width:=1; MoveTo(ax,ChartRect.Top-Height3D); LineTo(ax,ChartRect.Bottom-Height3D); MoveTo(ChartRect.Left+Width3D,ay); LineTo(ChartRect.Right+Width3D,ay); end; end; Var tmpX,tmpY:Double; begin Charts.Cursor:=crCross; if (OldX<>-1) then begin DrawCross(OldX,OldY); OldX:=-1; end; if PtInRect( Charts.ChartRect, Point(X-Charts.Width3D,Y+Charts.Height3D) ) then begin DrawCross(x,y); OldX:=x; OldY:=y; end; With Seriess do begin GetCursorValues(tmpX,tmpY); Edits1.Text:=GetVertAxis.LabelValue(tmpY)+'e-'+IntToStr(MasshtabC); Edits2.Text:=GetHorizAxis.LabelValue(tmpX); end; end;
|
Использование:
| Код | procedure TForm1.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin Trasser(X,Y,Chart1,Series1,Edit1,Edit2); end;
|
|