|
StringGrid에서 OnDrawCell Event Handler를 사용하여 다음과 같은 방법으로 Cell을 병합하는 데는 성공(?)하였습니다.
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
int ARow, TRect &Rect, TGridDrawState State)
{
TStringGrid* tmpSender = dynamic_cast<TStringGrid*>(Sender);
if ((ACol==1) && (ARow%2==1)) {
TRect tmpRect = TRect(tmpSender->CellRect(ACol,ARow).Left,
tmpSender->CellRect(ACol,ARow).Top,
tmpSender->CellRect(ACol,ARow).Right,
tmpSender->CellRect(ACol,ARow+1).Bottom);
Rect = tmpRect;
tmpSender->Canvas->FillRect(Rect);
}
if (State.Contains(gdFocused))
tmpSender->Canvas->DrawFocusRect(Rect);
}
문제는, 셀을 클릭할 때 병합된 셀 전체가 선택되지 않고 원래 분할된 부분이 선택된다는 것과, Fixed Title부분의 Cell을 위의 방법으로 병합할 때는 가운데 부분에 희미한 선이 보인다는 것입니다.
셀을 병합할 때 이런 방법으로 하는 것이 맞는건지(아니면 뭔가 다른 방법이 있는 것인지), 위와 같은 문제가 생기지 않게 하려면 어떻게 해야 하는지 고수님들의 가르침 부탁드립니다.
|