2016-10-05 10 views
1

TChoomにTZoomDragToolを追加する方法を理解できません。私はTChartがズームのサポートを内蔵していることを知っていますが、私はパンニング(右クリックでドラッグ)を同時に無効にしたいと思っています。ズームを無効にするプロパティがありますが、パンを無効にする方法はありません。Lazarus TAChartは、実行時にTChartToolSetとTZoomDragToolを追加します。

私が知ったことは、TChartToolSetをグラフに追加すると、ビルトインズームとパン機能の両方が無効になることです。私がTChoomToolSetにTZoomDragToolを追加することができれば、それは私が望むことをするでしょう。私が設計時にそれを行うとうまくいくが、実行時にその方法を知らない。

誰かに私にそれを行う方法を示すことができたらそれを感謝します。

小さなコードスニペットがあり、実行するとエラーが表示されます。

TForm1 = class(TForm) 
    Button1: TButton; 
    m_chart: TChart; 
    m_toolset: TChartToolset; 
    m_zoom: TZoomDragTool; 
    procedure Button1Click(Sender: TObject); 
end; 

procedure TForm1.Button1Click(Sender: TObject); 
begin 
    m_chart:= TChart.Create(self); 
    with m_chart do begin 
    autosize:= False; 
    left:= 10; 
    top:= 40; 
    width:= 300; 
    height:= 150; 
    parent:= Self; 
    visible:= True; 
    end; 

    m_toolset:= TChartToolset.Create(m_chart); //is the owner correct? 
    m_zoom:= TZoomDragTool.Create(m_toolset); //is the owner correct? 

    m_toolset.Tools.Add(@m_zoom); //is this correct? 

    m_chart.Toolset:= m_toolset; //is this the way? 
           //or something like 
           //m_chart.Toolset.InsertComponent(m_toolset); 
           //both of them crash 
end; 

答えて

3

TAChartはTChartToolsetに(TIndexedComponentある)TChartToolを追加するビット奇妙な方法を有しています。 TChartToolsetにはTIndexedComponentList,Toolsがあり、これはコレクションに似ていますが、ここで問題を抱えている人のコードはすべて、Addメソッドを呼び出すことによってTIndexedComponentTIndexedComponentListに追加するだけです。しかし、これはすべての作業を行うわけではありません。代わりにTChartToolにはパブリックプロパティToolsetがあり、フォームに追加したTChartToolsetコンポーネントに割り当てる必要があります。

これは正しいコードです:

m_toolset:= TChartToolset.Create(self); 
    // since ChartTools can be used by several charts it is safer to have the ChartToolset be owned by the form 
    m_zoom:= TZoomDragTool.Create(m_toolset); 
    m_zoom.ToolSet := m_toolset; 

ChartToolsまた、同じコードは、実行時に作成さChartTransformationsのためにも必要です。

+0

あなたはm_zoom.toolset:= m_toolsetと言っていました。右?出来た。ありがとうございました。投稿を修正してください。私は答えとして選択します。 –

+0

私を訂正していただきありがとうございます - 修正されました。 –

関連する問題