Hoi Geert.
Ik denk dat je er met het volgende voorbeeld wel uit komt. Maak een nieuw project, zet daar een TChart en een TPanel op, voeg twee Series toe aan je TChart (lijngrafiek), zet de 3D optie van de TChart uit en zet de volgende sourcecode in je unit.
Code:
uses
Math;
procedure TForm1.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
Part: TChartClickedPart;
begin
Chart1.CalcClickedPart(Point(X, Y), Part);
if (Part.Part = cpSeries) and (Part.ASeries <> nil) then
Panel1.Caption := Part.ASeries.Name
else
Panel1.Caption := '';
end;
procedure TForm1.FormCreate(Sender: TObject);
var
X, Y: Integer;
begin
for X := 0 to Round(Pi*12) do
begin
Series1.Add(Sin(X/10)*10);
Series2.Add(Cos(X/10)*10);
end;
end;
procedure TForm1.Chart1BeforeDrawSeries(Sender: TObject);
begin
with Chart1 do
begin
Canvas.Pen.Color := BottomAxis.Axis.Color;
Canvas.Pen.Width := BottomAxis.Axis.Width;
Canvas.MoveTo(ChartRect.Left, LeftAxis.CalcPosValue(0.0));
Canvas.LineTo(ChartRect.Right, LeftAxis.CalcPosValue(0.0));
end;
end;
In de BeforeDrawSeries wordt een extra X-as getekend bij waarde nul, in de FormCreate worden de Series gevuld met een Sinus en Cosinus functie en in de MouseMove wordt aan de TChart gevraagd waar de muis zich boven bevindt en als dat boven een Series is wordt de naam daarvan in het panel getoond.
In het bijgevoegde plaatje zie je het resultaat, waarbij de muis boven Series2 werd gehouden.
Succes ermee.
Marco Hemmes
mhemmes@bergler.nl
marco.nldelphi.net
Bookmarks