1、問題:通過Addxy方法給TChart添加標記(Mark)時,發現在TChart的橫坐標會隨著Mark而變化,后來發現通過以下方法可避免這種情況:雙擊TChart,點擊Axis-> top or bottom ->labels,在styles中將labels的形式改為Value即可!
2、幾個有用的屬性:
        圖表上的每個點都是有索引的,就象一個數組一樣,在OnClickSeries事件中有個ValueIndex屬性,該屬性可以得到鼠標所點擊的點的索引值(必須將Series的Point設置為可見,鼠標點擊到那個點時才可以觸發該事件)。
xValue[index]、yValue[index]分別表示圖表的索引為index的橫縱坐標值,用這兩個屬性可以讀取和設置索引為index的點的值,注意:不要用xValues和yValues,這兩個屬性也可以達到同樣的目的,但是速度非常的慢。因為后兩個在進行操作的時候可能要遍歷整個圖表上的值(個人觀點)
在MouseDown,MouseMove,Mouseup中,可以利用xScreentoValue(x),yScreentoValue(y)得到鼠標當時所在點對應在圖表上的橫縱坐標值。
e.g.
.......
PRivate
  Nowindex:Integer;
  Cantuo:boolean;
........
procedure TfrmMain.Chart1ClickSeries(Sender: TCustomChart;
  Series: TChartSeries; ValueIndex: Integer; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  NowIndex:=ValueIndex;
end;
procedure TfrmMain.Chart1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
Cantuo:=true;
end;
procedure TfrmMain.Chart1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
Cantuo:=false;
end;
procedure TfrmMain.Chart1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if Cantuo then
begin
  Series1.yValue[NowIndex]:=  Series1.yScreenToValue(y) ;
end;
end;
這里即實現了可以在圖表中拖動某一個點使其在縱軸上變化位置
新聞熱點
疑難解答