안녕하세요 대전 초보 개발자입니다.
현재 화면상에 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이벤트가 꼬여서 일어나는 것 같습니다.
아무래도 글로써 에러 내용을 적기에는 한계가 있어 그림 첨부합니다.
여러분의 고견 부탁드리겟습니다.
|