Steema Issues Database

Note: This database is for bugs and wishes only. For technical support help, if you are a customer please visit our online forums;
otherwise you can use StackOverflow.
Before using this bug-tracker we recommend a look at this document, Steema Bug Fixing Policy.



Bug 319 - [TV52015566] The ClickedPoint function in TCustomSeries.Clicked funtion, in Series...
Summary: [TV52015566] The ClickedPoint function in TCustomSeries.Clicked funtion, in S...
Status: CONFIRMED
Alias: None
Product: VCL TeeChart
Classification: Unclassified
Component: Other Components (show other bugs)
Version: unspecified
Hardware: All All
: Normal major
Target Milestone: ---
Assignee: Steema Issue Manager
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-05-16 17:38 EDT by yeray alonso
Modified: 2013-11-20 10:38 EST (History)
0 users

See Also:
Chart Series: ---
Delphi / C++ Builder RAD IDE Version:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description yeray alonso 2013-11-20 10:38:15 EST
The ClickedPoint function in TCustomSeries.Clicked funtion, in Series.pas has this condition:
if CheckPointInLine or (FDrawArea and PointInArea(Index)) then
So when the mouse is in the area region, it is considered as if the mouse were over the line segment and the predecessor point is returned (or successor if axis.inverted).
It would be interesting to have the option to always return the nearest point, even when the mouse pointer is over the area region. So we would have:
if CheckPointInLine or (FDrawArea and (not FNewProperty) and PointInArea(Index)) then
FNewProperty could be called FAbsoluteNearest and be false by default, for example.
But other series may be also considered, like TBarSeries. In the TBarSeries, the TCustomBarSeries.Clicked function should check it too, for example like this:
    if not FNewProperty then
    for t:=FirstValueIndex to Min(LastValueIndex,Count-1) do
Forums link:
http://www.teechart.net/support/viewtopic.php?f=3&t=12332&view=unread#unread
Testing code:
uses Series, TeeTools;
var Chart1: TChart;
procedure TForm1.FormCreate(Sender: TObject);
begin
  Chart1:=TChart.Create(Self);
  Chart1.Parent:=Self;
  Chart1.Align:=alClient;
  Chart1.View3D:=false;
//  Chart1.AddSeries(TPointSeries).FillSampleValues(10);
//  Chart1.AddSeries(TLineSeries).FillSampleValues(10);
//  Chart1.AddSeries(TAreaSeries).FillSampleValues(10);
//  Chart1.AddSeries(THorizAreaSeries).FillSampleValues(10);
//  Chart1.AddSeries(TBarSeries).FillSampleValues(10);
//  Chart1.AddSeries(THorizBarSeries).FillSampleValues(10);
//  Chart1.Axes.Left.Inverted:=true;
//  Chart1.Axes.Bottom.Inverted:=true;
  with (Chart1.Tools.Add(TNearestTool) as TNearestTool) do
  begin
    Series:=Chart1[0];
    Pen.Color:=clRed;
  end;
  Chart1.OnMouseMove:=Chart1MouseMove;
end;
procedure TForm1.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
var tmpIndex: Integer;
begin
  with (Chart1.Tools[0] as TNearestTool) do
  begin
    Caption:='Series clicked: ' + IntToStr(Chart1[0].Clicked(X,Y)) + ',  Nearest point: ' + IntToStr(Point);
  end;
end; [created:2011-05-16T16:38:00.000+01:00 reported by:yeray@steema.com reported in version:2011.03.30407 (TeeChart VCL)]