2017-01-12 1 views
0

저는 TChart, TPointSeries, 수평 스크롤 기능이있는 Delphi 10을 사용하고 있으며 현재 PostgreSQL 데이터베이스에서로드 된 너무 많은 데이터 (100 개의 커브, 각각 수천 개의 포인트가 포함되어 있습니다)가 있습니다.현재 데이터 만 TChart에로드하십시오.

  • TChart의 현재 스크롤 "창"에 표시해야하는 데이터 만 데이터베이스 (LIMIT 및 OFFSET 포함)에서로드 할 수 있습니까?
  • 데이터가없는 영역으로 스크롤 할 때 발생하는 "데이터 필요"이벤트가 있습니까?
  • 이 포인트를 모두로드하지 않고 얼마만큼의 포인트를 TChart에 알릴 수 있습니까?
  • 범례에서 해당 확인란을 선택했을 때만 차트에 실제 데이터를로드하면 모든 곡선의 설명을 범례에 포함시킬 수 있습니까? 차트에 모든 시리즈가 데이터베이스로 표시되지만 모든 시리즈에서 범례로 표시되기를 원합니다. 범례에서 특정 계열을 클릭하면 해당 계열 데이터가로드되고 곡선으로 표시됩니다.

답변

1
  • 이 TChart입니다 현재 스크롤 "창"에 표시해야 할 데이터 만 데이터베이스 (LIMIT와 OFFSET)을로드 할 수 있습니까?

이 수동으로 데이터를 반복하고 Add()/AddXY() 함수를 호출 할 수 있습니다.
그런 다음 OnScroll 이벤트에서 축 범위에서 벗어난 점을 제거하고 축 범위 내/옆에 점을 추가 할 수 있습니다.

  • 이 있습니까 일부 "필요한 데이터"화재가 난 데이터가없는 지역으로 이동이 이벤트?

아니요 OnScroll 이벤트를 사용하고 직접 확인해야합니다. 할 수 있는지의 예는 아래에 제공되는

업데이트 :

constructor TForm1.Create(AOwner: TComponent); 
begin 
    inherited; 
    chart.OnScroll := chartScroll; 
    chart.OnZoom := chartZoom; 
end; 

procedure TForm1.displayRange(); 
var startDate, endDate: TDateTime; 
begin 
    startDate := TDateTime(chart.BottomAxis.Minimum); 
    endDate := TDateTime(chart.BottomAxis.Maximum); 
    Log(Format('start=%d, end=%d', [ 
    FindClosestIndex(startDate, chart.Series[0].XValues), 
    FindClosestIndex(endDate, chart.Series[0].XValues) 
    ])); 
end; 

procedure TForm1.chartScroll(Sender: TObject); 
begin 
    displayRange(); 
end; 

procedure TForm1.chartZoom(Sender: TObject); 
begin 
    displayRange(); 
end; 

FindClosestIndex의 예는 here을 수행 할 수있다. 갱신

  • 끝이 가능 얼마나 많은 포인트를 내가 가진 모든 포인트를로드하지 않고 TChart입니다 통보 있나요?

아니요,하지만 변수를 유지 관리 할 수 ​​있습니다.

  • 는 실제 데이터 나는 전설에서 해당 확인란을 선택하는 경우에만 차트하는로드와 전설의 모든 곡선 '설명을 할 수 있습니까?차트에 모든 시리즈가 데이터베이스로 표시되지만 모든 시리즈에서 범례로 표시되기를 원합니다. 범례에서 특정 계열을 클릭하면 해당 계열 데이터가로드되고 곡선으로 표시됩니다.

OnCLickLegend 이벤트를 사용하고 시리즈를 반복 할 수 있습니다. 이 순간에 Active 시리즈의 속성은 이며 not Active이며 Add/AddXYActive을 가리킬 수 있습니다.

+0

예레이, 내 마지막 질문에 대해 이야기하겠습니다. 차트에 모든 시리즈가 데이터베이스로 표시되지만 모든 시리즈에서 범례로 표시되기를 원합니다. 범례에서 특정 계열을 클릭하면 해당 계열 데이터가로드되고 곡선으로 표시됩니다. – Paul

관련 문제