|
TChart스크롤을 해야 하는데 포럼에서 자료를 구해서 코딩을 해보았습니다. 그런데 잘되긴 하는데..문제점이 발생하더군요...문제인즉,,, 예를들어 25개가 넘으면 스크롤을 시키겠다고 가정할 때...25가 넘으면 스크롤이 잘되긴 하는데..스크롤 되는 중간에 Series를 정지 시킨다음에 다시 타임머를 Enable시키면 ...일정시간동안 Series가 그려지지 않더라구요...이게 왜 그런지요..
아래는미흡하지만 제가 코딩한부분을 첨부 해봅니다..
맨처음 스타트 버턴을 누르면 타임머 Enable되고..25개가 넘으면 그때부터 스크롤이 잘 되는데...스크롤이 되는 과정에서....스크롤정지 버턴을 누르고 다시 스크롤 시작버턴을 누르면 맨처음 스타트 할 때와 같이 그려지는게 아니고
일정시간뒤에 Series가 보이는데...refresh()를 해도 안돼고 왜 그런가요? 스크롤 정지 버턴을 누르면
Series1을 모두 지우는데도...왜 다음 시작때 바로 보이지 않는건지 아시는분 답변좀 부탁드립니다.
void __fastcall TW_Chart::Chart_StopAndNULL() // Chart Clear
{
for (int i = 0; i <Series1->Count(); i++) {
Series1->Delete(i);
}
Series1->Clear();
GraphRealCnt1 = 0;
Minimum_cnt1 = 0;
}
//-------------------------------------------------------
void __fastcall TW_Chart::Int_TMTimer(TObject *Sender) // 200ms
{
Series1->AddXY(GraphRealCnt1, NeedGraphData((int)TrendItem_LoadData[0].ID,TrendItem_LoadData[0].ADDRESS));
Series1->RefreshSeries();
GraphRealCnt1++; // 단순 카운터 증가
/----------------------------------------- Series 1 Scroll
if(Series1->Count() > 25)
{
Minimum_cnt1++;
Chart1->BottomAxis->Minimum = Minimum_cnt1;
Chart1->BottomAxis->Maximum = GraphRealCnt1 -1;
Series1->Delete(0) ;
}
// 스크롤이 10000 이상이면 카운터 리셋
if (GraphRealCnt1 > 10000) {
GraphRealCnt1 = 0;
Minimum_cnt1 = 0;
for (int i = 0; i <25; i++) {
Series1->Delete(0);
}
}
}
//------------------------------------------------------
void __fastcall TW_Chart::Button2Click(TObject *Sender) // 스크롤 정지
{
Int_TM->Enabled = false;
Chart_StopAndNULL()
}
//------------------------------------------------------
void __fastcall TW_Chart::Button1Click(TObject *Sender) // 스크롤 시작
{
Int_TM->Enabled = true;
}
|