程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> TChart使用經驗小結

TChart使用經驗小結

編輯:Delphi

  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;

  這裡即實現了可以在圖表中拖動某一個點使其在縱軸上變化位置


  
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved