2017-09-20 38 views
1

입력 장치에서 사용할 수있는 채널 수에 따라 동적으로 TChart를 추가하는 스크롤 상자를 구현했습니다. 차트는 채널을 통해 전압 값을 보여주기 위해 루프를 다시 그리기 때문에 디스플레이가 각 채널에 적용되는 전압의 "실시간"보기를 효과적으로 출력합니다.Delphi : 실시간 실행 중에 스크롤

현재 실행 중에 응답이 끊어지는 것을 방지하기 위해 Application.ProcessMessages 기능이 있지만, 디스플레이를 방해하지 않고 채널이 표시되는 동안 상자를 스크롤 할 수 있기를 원합니다. 화면을 방해하지 않고 현재 스크롤이 일시 중지되어 있습니다. 막대가 클릭됩니다.

이것이 가능합니까?

+0

언급 한'TChart'가 Steema의 TeeChart 인 경우, 이것은 읽을만한 가치가있을 것입니다 : http://www.teechart.net/reference/articles/VCLRealtime.pdf –

+1

당신이 고쳐야 할 주요한 것은 디자인입니다 . UI 스레드에서 CPU 바운드 코드를 가져와야합니다. –

답변

2

예, 가능합니다. 자책골을 루프에 의해 구동

차트 루프에 칠 ...

다시 그립니다은 참으로 정확히 Application.ProcessMessages의 필요성에 대한 이유는 시스템에 호흡 distres을 보장합니다. Try not to use it. 대신 새로운 데이터가 들어 오면 차트에 Invalidate으로 다시 채우고 시스템에서 편리하게 언제 데이터를 결정하도록해야합니다.

+2

'Refresh'는 디자인과 크게 다르지 않은 윈도우 컨트롤 (즉, 메시지 큐를 우회하는'WM_PAINT'를 초래하는'InvalidateRect' 이후의'UpdateWindow')에 대한 즉각적인 페인트 인'Repaint'에 대한 호출입니다. 질문에. –

+2

@Sertac 네, 알림 주셔서 감사합니다. 나는 대답에서 그것을 제거했다. – NGLN