У меня возникли проблемы с поиском, как добавить 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; правильно? Это сработало. Спасибо. Пожалуйста, исправьте сообщение. Я выберу его в качестве ответа. –
Спасибо за исправление меня - исправлено. –