TChart의 각 축에는
Minimum, Maximum이 있습니다.
이게 실제 차트에 보이는 축의 시작, 끝 값입니다.
스크롤시 차트랑 이동하는게 싱크가 안 맞는다는 걸보면
아마도 차트에 있는 Scroll함수를 쓰신것 같네요.
Scroll함수를 쓰지 마시고
직접 Minimum, Maximum 값을 바꾸는 방법을 사용하면
스크롤 콤포넌트를 움직일 때 똑같이 차트가 움직입니다.
단,
AutomaticMinimum와 AutomaticMaximum는 false로 해주세요.
예)
스크롤바 이벤트에 아래와 같이 해주면 차트가 같이 움직입니다.
void __fastcall TForm2::ScrollBar1Change(TObject *Sender)
{
Chart1->Axes->Bottom->AutomaticMinimum = false;
Chart1->Axes->Bottom->AutomaticMaximum = false;
double FullRange = 1000.; // 차트의 전체 데이터 구간
double ViewRange = 100.; // 차트의 보여질 구간
double ChartStartValue = Range * double(ScrollBar1->Position) / double(ScrollBar1->Max - ScrollBar1->Min);
if(ChartStartValue > Chart1->Axes->Bottom->Maximum) {
Chart1->Axes->Bottom->Maximum = ChartStartValue + ViewRange;
Chart1->Axes->Bottom->Minimum = ChartStartValue;
}
else {
Chart1->Axes->Bottom->Minimum = ChartStartValue;
Chart1->Axes->Bottom->Maximum = ChartStartValue + ViewRange;
}
}
*잡담: 티차트에 오타가 있습니다.
제가 쓰는 버전에만 그런건지 모르겠으나....
Axis라고 써야 되는데 일부 변수와 함수명에
Axes라고 되어 있습니다.
아마도....티차트 소스 개발자가 미국사람이 아닌듯합니다....
Teechart Scroll 님이 쓰신 글 :
: 말 그대로 티차트아래에 스크롤을 하나 넣고 그 스크롤의 position에 따라서 좌우로 그래프가 움직이게 하고 싶은데,
: 그냥 Standard에 있는 TScroll로 하니, 티차트 내부의 기능이아닌지라 스크롤을 움직이는 속도에 따라서 차트의 위치와
: 일치하지 않는 문제나, 차트의 시작위치와 스크롤의 시작위치를 어떻게 일치시켜야 할지 잘 모르겠더라구요.
:
: 티차트에 스크롤을 넣고 그래프를 움직이게 할 때 어떤식으로 하면 깔끔하게 스크롤의 0~100의 포지션과 차트의 위치를 같이 움직이게 할 수 있는지 여쭤보고 싶습니다.
|