2012-03-23 11 views
1

注釈と注釈を使用してシリーズにラベルを作成しています。しかし、私が持っている問題は、新しいデータがチャートに追加されても、そのポジションが更新されていないということです。このシリーズはスクロールしますが、Annotation/AnnotationCalloutは同じ場所にとどまります。シリーズのスクロールに伴って注釈位置が更新されない

私は、次のコードで注釈とAnnotationCallout設定:シリーズ上のポイントにそれらを添付するか、私は仕事のための間違ったツールを使用しています方法はあり

Anno.setLeft(aSeries.calcXPos(iIndex)-51); 
Anno.setTop(aSeries.calcYPos(iIndex)+100); 

Callout.setXPosition(aSeries.calcXPos(iIndex)); 
Callout.setYPosition(aSeries.calcYPos(iIndex)); 

を?

答えて

1

注釈は、Scalingプロパティの定義方法に応じて、ピクセル位置またはチャートの相対位置に配置されます。

これは、Annotationの動作です。したがって、注釈の位置を定義すると、その注釈がそこに張り付きます。

ポイントにラベルを貼り付ける場合は、Series.Marksをご覧ください。あなたはあなたのようなラベルのテキストを追加することができますシリーズにポイントを追加

AddXY(XPOS、YPOS、 'こんにちは'、clGreenを)。

マークラベルを表示するようにSeries.Marks.Visible := Trueを設定します。オンザフライでラベルテキストをカスタマイズするには、イベントTChartSeries.OnGetMarkTextを見てください。

Series.Marksのすべてのプロパティを検索して、自分の好みに合わせてカスタマイズします。

更新:

、あなたの系列データにいくつかのマークを隠すOnGetMarkTextイベント中に空の文字列にラベルテキストを設定するために。

OnGetMarkTextを使用する方法の例:

... 
Series1.OnGetMarkText := Self.Series1GetMarkText; // Define the OnGetMarkText event 
... 

procedure TMyForm.Series1GetMarkText(Sender: TChartSeries; 
    ValueIndex: Integer; var MarkText: string); 
begin 
    if ValueIndex=3 then // Just an example how to set the selection criteria 
    MarkText := 'Hello' 
    else 
    MarkText := ''; 
end; 
+0

ありがとうございました。 SeriesMarksは私が探していたものです。シリーズのすべてのポイントにy値のマークが付いている点を除いて、動作します。これをどうやって防ぐのですか? – user1254689

+0

私の更新された答えを見てください。 –

+0

すべてのマークを ""に設定すると、yの値が引き続き表示されます。ここに私のコードです: SeriesMarks sMarks_Chart1_Line2 = new SeriesMarks(Chart1_Line2); sMarks_Chart1_Line2.setVisible(true); sMarks_Chart1_Line2.getPen()。setColor(Color.RED); \t \t \t \t Chart1_Line2.setMarks(sMarks_Chart1_Line2); Chart1_Line2.getMarks()。setVisible(true); Chart1_Line2.add(新しいcom.steema.teechart.DateTime(新しいDateTime(tsDateTime).getMillis())、dStart_value、 ""); – user1254689

関連する問題