我很难搞清楚如何将TZoomDragTool添加到TChart。我知道TChart已经构建了对缩放的支持,但我想同时禁用平移(通过右键点击拖动)。有一个属性禁用缩放,但没有直接的方法来禁用平移。Lazarus TAChart在运行时添加TChartToolSet和TZoomDragTool
我发现,如果我添加一个TChartToolSet到图表,它将禁用内置的缩放和平移功能。如果我可以添加一个TZoomDragTool到TChartToolSet,那么它会做我想要的。如果我在设计时做到这一点,它会很好用,但我不知道如何在运行时做到这一点。
欣赏它,如果有人能告诉我如何做到这一点。
我有一个小的代码片段,它给了我错误,如果我运行它。
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;
你的意思是说m_zoom.toolset:= m_toolset;对?有效。谢谢。请更正帖子。我会选择它作为答案。 –
感谢纠正我 - 修复。 –