C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[64642] AdvStringGrid사용시 버그같은 현상
유정곤 [aqwer2] 1601 읽음    2011-06-17 09:55
안녕하세요 대전 초보 개발자입니다.

현재 화면상에 AdvStringGrid를 여러개를 사용하고 있습니다.
경우에 따라 보이고 안보이는 경우에 처리를 하게 되어있는데
그리드 헤드라든가 체크박스, 마지막에 섬로우 등을 표시해 주기 위하여
OnDrawCell이벤트에서 스타일등을 지정해 주고 있습니다.

void __fastcall TForm1::AdvStringGrid1DrawCell(TObject *Sender, int ACol,
      int ARow, TRect &Rect, TGridDrawState State)
{
   if(race_flag)
   {
      TCanvas* Canvas = AdvStringGrid1->Canvas;
      //((TAdvStringGrid*)Sender)->Canvas;
      if(ACol>=0 && ARow==total_lap)
      {
         Canvas->Font->Color = clRed;
         Canvas->Font->Style = TFontStyles()<Font->Style = TFontStyles()<=1 && ARow>=0)||(ACol==0 && ARow==total_lap))
      {
         unsigned oldalign = SetTextAlign(Canvas->Handle, TA_CENTER);
         Canvas->TextRect(Rect, (Rect.Right+Rect.Left)/2, Rect.Top+1,
             AdvStringGrid1->Cells[ACol][ARow]);
         SetTextAlign(Canvas->Handle, oldalign);
      }
   }
}


이런식으로 해당 로우를 가지고 데이터를 표시해주고 있는데 문제가 있습니다.

화면상에 AdvStringGrid가 한개만 존재할때는 정상적으로 나오나
화면상에 AdvStringGrid가 2개 이상(실제로는 ScrollBox에 한개씩 나타납니다)존재할 경우
AdvStringGrid의 OnDrawCell이 이상하게 호출되는 듯 합니다.

스크롤을 한다거나 다른 창이 위에 왔다가 다시 가는경우(OnDrawCell이 호출되는 경우)
각각의 AdvStringGrid의 OnDrawCell이벤트가 꼬여서 일어나는 것 같습니다.

아무래도 글로써 에러 내용을 적기에는 한계가 있어 그림 첨부합니다.

여러분의 고견 부탁드리겟습니다.

+ -

관련 글 리스트
64642 AdvStringGrid사용시 버그같은 현상 유정곤 1601 2011/06/17
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.