먼저 TScrollPagerTool
은 TSubChartTool
이며 주 시리즈의 클론을 사용합니다. 이것이 서브 시리즈가 Series
이 할당 될 때 설정되는 이유입니다. 시리즈가 없으면 의미가 없기 때문입니다.
TeChart 버전에 따라, 차트에 사용할 계열을 계산하기 위해 시리즈에 할당 할 때 SubChart에 이미 그려진 기본 차트가 필요합니다 (ChartRect
초). 우리는 OnResize
행사에서 시리즈를 할당하는 이유입니다,하지만 난 당신이 작성 시간에 모든 것을 할 수 TeeChart는 VCL에서 볼 :
uses Series, TeeScrollPagerTool;
procedure TForm1.FormCreate(Sender: TObject);
begin
Chart1.AddSeries(TLineSeries).FillSampleValues;
(Chart1.Tools.Add(TScrollPagerTool) as TScrollPagerTool).Series:=Chart1[0];
end;
BUG : 나는 버그가 실제로 있었다 본 적이
, 당신이 말했듯이.
uses Series, TeeScrollPagerTool;
var scrollPager1: TScrollPagerTool;
procedure TForm1.FormCreate(Sender: TObject);
begin
Chart1.Align:=alClient;
scrollPager1:=Chart1.Tools.Add(TScrollPagerTool) as TScrollPagerTool;
Chart1.AddSeries(TLineSeries).FillSampleValues;
scrollPager1.Series:=Chart1[0];
end;
procedure TForm1.Chart1Resize(Sender: TObject);
begin
scrollPager1.Series:=Chart1[0];
end;
내가 그것을 해결하기 위해 일부 내용을 변경했습니다 :
차트를 만들기 위해
OnResize
이벤트에 시리즈를 지정하고 subchart이 양식의 크기를 조정, 그것은 소스 시리즈는 또 다시 복제 할 만든
다음 버전에서는 Series
속성이 하위 차트의 모든 계열을 제거하고 할당 된 계열을 복제합니다. 따라서 여러 번 호출하면 더 많은 복제본이 생성되지는 않습니다. 또한 주 차트와 하위 차트 모두에 대해 ChartRect
을 계산하는 SetUpScrollPager
이 호출됩니다.
SetUpScrollPager
도 공개되었으므로 OnResize
이벤트를 호출하여 시리즈를 추가 또는 삭제하지 않고 ChartRect
을 조정해야합니다.
procedure TForm1.Chart1Resize(Sender: TObject);
begin
scrollPager1.SetUpScrollPager;
end;
해결 방법 : 한편
, 여전히 SubChart의 모든 시리즈를 제거하고 소스 시리즈를 복제 시리즈의 속성을 사용할 수있는 실제 버전과 함께 OnResize
이벤트의 모든 :
procedure TForm1.Chart1Resize(Sender: TObject);
begin
scrollPager1.SubChartTChart.RemoveAllSeries;
scrollPager1.Series:=Chart1[0];
end;
관련 기능 :
ScollPager에서 여러 시리즈를 유지하는 방법? SubChartTChart
속성을 사용하여 하위 차트에 액세스하고 하위 차트에 시리즈를 추가/제거 할 수 있습니다. 그러나 Series
속성에는 여전히 하나의 시리즈가 필요합니다. 그래서 약간 까다로워집니다 :
uses Series, TeeScrollPagerTool;
var scrollPager1: TScrollPagerTool;
procedure TForm1.FormCreate(Sender: TObject);
var i: Integer;
begin
Chart1.Align:=alClient;
scrollPager1:=Chart1.Tools.Add(TScrollPagerTool) as TScrollPagerTool;
for i:=0 to 4 do
begin
Chart1.AddSeries(TLineSeries).FillSampleValues;
if scrollPager1.Series=nil then
scrollPager1.Series:=Chart1[i]
else
scrollPager1.SubChartTChart.AddSeries(CloneChartSeries(Chart1[i]));
end;
end;
그래서 나는 새로운 AddSeries(const Value: TChartSeries)
메서드를 추가했습니다. 그것을 사용하여 ScrollPager에 여러 시리즈를 추가하십시오.
for i:=0 to 4 do
begin
Chart1.AddSeries(TLineSeries).FillSampleValues;
scrollPager1.AddSeries(Chart1[i]);
end;
안녕하세요, Yeray, 신속한 회신에 감사드립니다. – Maklom
와프 스는 내 의견을 끝내지 못했지만, 위의 답변은 아직 그리 많지 않습니다. 크기 조정에서 위의 코드 조각 중 하나를 사용하면 차트와 스크롤 페이저의 기능이 없어서 원하는 모양이 아닌 크기로 조정됩니다. 이 코드를 사용해도 차트 크기를 조정할 수 있습니까? – Maklom
방금 중요한 걸 발견했습니다. 2 개의 diff 버전이 2 대의 컴퓨터에서 실행됩니다. v2012.07.121105 XE3을 사용하는 32 비트 VCL에는 성능 문제가 있습니다. 델파이 7을 사용하는 v2013.08.130521은 똑같은 코드를 사용하여 성능 문제가 없습니다. 뭐야 ...? – Maklom