2012. 8. 2. 09:13ㆍ언어/C++ Builder
Builder 6에서는 상관 없었지만 XE로 넘어오니 StringGrid를 가운데 정렬하면 그리드 안에 내용이 두번 표시 된
다. 이 부분에서 검색을 해봤더니 BorlandForum에 나와 있었다.
이유는 텍스트 뿐만 아니라 배경도 같이 그려줘야 한다고 한다.
StringGrid의 DefaultDrawing값을 false로 해주고 OnDrawCell이벤트에 아래와 같은 소스를 넣어주면 된다.
if (State.Contains(gdFixed)){
StringGrid1->Canvas->Brush->Color = clBtnFace;
StringGrid1->Canvas->Font->Color = clWindowText;
StringGrid1->Canvas->FillRect(Rect);
Frame3D(StringGrid1->Canvas, Rect, clBtnHighlight, clBtnShadow, 1);
//GradientFillCanvas( StringGrid1->Canvas, (TColor)0x00F0F0F0, (TColor)0x00C0C0C0, Rect, gdVertical );
}else if (State.Contains(gdSelected)){
StringGrid1->Canvas->Brush->Color = clHighlight;
StringGrid1->Canvas->Font->Color = clHighlightText;
StringGrid1->Canvas->FillRect(Rect);
}else{
StringGrid1->Canvas->Brush->Color = StringGrid1->Color;
StringGrid1->Canvas->Font->Color = StringGrid1->Font->Color;
StringGrid1->Canvas->FillRect(Rect);
}
StringGrid1->Canvas->Brush->Style = bsClear;
DrawText( StringGrid1->Canvas->Handle, StringGrid1->Cells[ACol][ARow].w_str(), -1, &Rect, DT_SINGLELINE | DT_CENTER | DT_VCENTER );
출처 http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=66332
'언어 > C++ Builder' 카테고리의 다른 글
RAD Studio XE에서 Comport 사용할 때 SetPortW 링크 에러 (0) | 2012.10.22 |
---|---|
TStringList의 Sort기능 총정리 (0) | 2012.09.05 |
빌더에서 TDateTime에 시간이나 분, 초 더하기 (0) | 2012.06.28 |
Chart 관련 URL들 (0) | 2012.06.14 |
BDE(Borland Database Engine) 설치 (0) | 2012.06.14 |