Announcement

Collapse
No announcement yet.

TChart und MouseMove --> XY-Koordinate

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • TChart und MouseMove --> XY-Koordinate

    Hallo,

    habe schon danach gesucht, leider ohne Erfolg!

    Wie kann man aus einem Chart mit einer X- und einer Y-Achse beim MouseMove die X und Y Koordinate des Charts bekommen?

    MfG
    Sebastian

  • #2
    Hallo Sebastian,

    ich verstehe nicht genau, was Du meinst, aber vielleicht hilft Dir folgender Code aus einem meiner Projekte mit TChart:

    <BR>
    <PRE>
    procedure TMainForm.ChartMouseMove(Sender: TObject; Shift: TShiftState; X,
    Y: Integer);
    var
    i,j,p : integer;
    ser : TChartSeries;
    s : string;
    begin
    inherited;
    for j:=0 to Chart.SeriesCount-1 do begin
    ser := Chart.Series[j];
    i := ser.Clicked(x,y);
    if i<>-1 then begin
    s := ser.Title;
    p := pos(' - ',s);
    if p<>0 then s := copy(s, 1, p-1);
    Statusbar.Panels[1].Text := Format('%s = %f',
    [Chart.BottomAxis.Title.Caption, ser.XValue[i]]);
    Statusbar.Panels[2].Text := Format('%s = %0.3f',
    [s, ser.YValue[i]]);
    if FDataType=dt_Elli then
    Statusbar.Panels[3].Text := Format('%s [Incident angle: %s°]',
    [FData.FileName[j div 2], FloatToStr(FData.IncAngle[j div 2])])
    else
    Statusbar.Panels[3].Text := FData.FileName[j div 2];
    exit;
    end;
    end;
    Statusbar.Panels[1].Text := '';
    Statusbar.Panels[2].Text := '';
    Statusbar.Panels[3].Text := '';
    end;
    </PRE>

    <BR>
    Es wird hier ein Eventhandler für das MouseMove-Event des TChart implementiert, in dem mit Hilfe der Clicked-Methode der Index des Datenpunktes bestimmt wird, über dem sich die Maus eben befindet und dann ein Meldungstext in der Statuszeile entsprechend dem betreffenden Datenpunkt ausgegeben wird.

    Generell sind die FAQ auf der Hersteller-Seite http://www.teechart.net/support/modules.php?name=FAQ&op=ShowFaqSubCat&id_cat=46&ca tegories=TeeChart%20Pro%20VCL%20/%20CLX sehr informativ.

    Gruß, Werne

    Comment


    • #3
      Hallo Werner,

      danke für das Beispiel. Eigentlich will ich nur die Werte der X und Y Achse beim rüberfahren mit der Maus erhalten. Gibt es da etwas? Nicht nur wenn ich auf einer bestimmten Serie bin, sondern im gesamten Chart.

      Grüße, Sebastia

      Comment


      • #4
        Hallo Sebastian,

        probier's mal mit

        <PRE>
        procedure TMainForm.ChartMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);
        var
        s : string;
        begin
        inherited;
        if (x>=Chart.BottomAxis.IStartPos) and (x<=Chart.BottomAxis.IEndPos)
        and (y>=Chart.LeftAxis.IStartPos) and (y<=Chart.LeftAxis.IEndPos)
        then begin
        s := Format('x=%0.3f, y=%0.3f', [Chart.BottomAxis.CalcPosPoint(X), Chart.LeftAxis.CalcPosPoint(Y)]);
        Statusbar.SimpleText := s;
        end;
        end

        Comment

        Working...
        X