Gibt es Move o.ä. bei TChart ???
-
Vielen Dank für den Tip. Leider ist es noch nicht das was ich suchte. Mit SwapValueIndex kann ich doch nur die Position innerhalb der Series1 vertauschen. Ich habe die Vermutung, daß es etwas mit: Series1->DoSeriesMouseMove... zu tun hat, habe es aber noch nicht verstanden.
-
Kann mir jemand etwas über die Verwendung von: Series1->DoSeriesMouseMove(Shift; X, Y) sagen. Ich weiß wirklich nicht mehr weiter. Vielen Dank!
-
Du willst also einen Punkt innerhalb des Charts verschieben, also faktisch den Ort der Darstellung ändern. Welche TChart-Version hast du denn? Die von dir genannte Funktion gibt es bei mir nämlich nicht. Ich habe Version 5.01 Pro
Ciao
-
Ich benutze BCB5 prof. Dort ist TeeChart 4.02 mit dabei. Was ich tun wollte ist, daß ich Punkte einer Series1 setzen und löschen kann (was auch gut funktioniert) sowie gesetzte Punkte nachträglich verschieben kann. Dieses Problem habe ich leider noch nicht gelöst.
Ich glaube, daß hier die Lösung meines Problems liegen könnte:
if(Shift.Contains(ssRight)) { Series1->DoSeriesMouseMove(TShiftState Shift, int X, int Y); }Ich weiß nur nicht, was ich für TShiftState Shift eingeben soll. Mit Shift.Contains(ssRight) funktioniert es nicht, auch wenn ich es dann aus der if-Bedingung rausnehme. Ich habe schon auf der steema-Seite unter den faq's geschaut und auch nichts gefunden. In der TChart Hilfe finde ich auch nichts.
-
Wo rufst du denn das auf ? Ich meine jetzt wo kommen Shift, X, Y denn her? Das ist doch normalerweise ein Ereignis, also OnSeriesMouseMove.
Ansonsten
Series1->DoSeriesMouseMove(Shift, X, Y);
TShiftState ist ja ein Set. Dazu findest du genug Informationen in der BCB-Hilfe.
Wie schon gesagt, ich TeeChart 5 Pro und da gibt es diese Funktion nicht. Wenn ich einen Punkt versetzen wollte würde ich einfach die Koordinaten in der Serie (genauer gesagt mit TChartSeries::XValues und TCHartSeries::YValues) ändern.
-
Ich wähle im Object Inspector das Ereignis OnSeriesClick und bekomme dann:
void __fastcall TForm1::Chart1ClickSeries(TCustomChart *Sender, TChartSeries *Series, int ValueIndex, TMouseButton Button, TShiftState Shift, int X, int Y) { if(Button==mbRight) { Series1->Delete(ValueIndex); } if(Shift.Contains(ssRight)) { Series1->DoSeriesMouseMove(TShiftState Shift, int X, int Y); } }Wenn ich Series1-> eingebe, erscheint ein kleines Fenster wo ich DoSeriesMouseMove auswähle. Wenn ich dann Series1->DoSeriesMouseMove( habe erscheint die Syntax: TShiftState Shift, int X, in Y.
-
Was du da siehst ist die Deklaration dieser Funktion. Beim Aufruf müsstest du die Typenbezeichnungen schon weglassen. Ich glaube aber nicht, dass dir diese Funktion innerhalb einer OnClick-Routine irgendewas nützt, eher schon in OnMouseMove.
Ciao
-
Es funktioniert dort auch nicht.
void __fastcall TForm1::Chart1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { if((X > Chart1->ChartRect.Left && X < Chart1->ChartRect.Right) && (Y > Chart1->ChartRect.Top && Y < Chart1->ChartRect.Bottom)) { Label2->Caption = Chart1->LeftAxis->CalcPosPoint(Y); Label1->Caption = Chart1->BottomAxis->CalcPosPoint(X); if(Shift.Contains(ssRight)) { Series1->DoSeriesMouseMove(Shift, X, Y); } } }Nun ich weiß auch nicht mehr was man noch probieren kann. Vielleicht fällt jemanden noch etwas anderes ein.
-
Ich bin bei meinem Problem des Verschiebens von gesetzten Punkten noch nicht weiter gekommen. Vielleicht ist ja jetzt jemand da, der mir weiterhelfen kann. Ich habe auch den Tip von Christian im Entwicklerforum gelesen, hat mir aber nicht weitergeholfen.
Wenn niemand weiß, wie es mit DoSeriesMouseMove geht, gibt es vielleicht eine andere Möglichkeit?
-
Habs jetzt herausgefunden. Die Funktion gibt es erst ab TeeChart Version 5 und heist DragPoint. Leider habe ich nur die 4er (inklusive-BCB-Version), dort ist das noch nicht möglich.