StringGridのセル操作の覚書

Borland C++BuilderのStringGridを使ってセルの中身をセンターリングしたり
背景色を変える方法

void __fastcall TForm::strGridDrawCell(
TObject *Sender, int ACol, int ARow, TRect &Rect,
TGridDrawState State)
{
TStringGrid *grid = dynamic_cast(Sender);
unsigned int position = DT_VCENTER|DT_CENTER|DT_SINGLELINE;

//グリッドのカーソルを消す
if ( grid->Focused() != true ) {
//セルの背景色を変更する
if ( ACol == 0 || ARow == 0 ) {
grid->Canvas->Brush->Color = clBtnFace ;
} else {
grid->Canvas->Brush->Color = grid->Color;
}
//背景色で塗りつぶす
grid->Canvas->FillRect( Rect );
//セルの中の文字列を再度、Canvasに描画する。
//フォントカラーを書き直す
grid->Canvas->Font->Color=grid->Font->Color;
//文字を書き直す
if (ACol == 0 && ARow > 0) position = DT_VCENTER|DT_LEFT|DT_SINGLELINE;
DrawText( grid->Canvas->Handle, grid->Cells[ACol][ARow].c_str(),

  • 1, &Rect, position);

}
}