幾乎都是從 TCustomGrid 繼承而來
在填入表格值都是用 DrawText 來填值
而我們要改變一些東西,例如文字置中
就要自己下 DrawText 的參數
首先第一步,把 DefaultDrawing 的值改為 Fault
不改的話會 DrawText 兩次,造成重疊
第二步改寫 OnDrawCell
void __fastcall TMainForm::LGridDrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State)
{
TStringGrid *vle = dynamic_cast<TStringGrid *>(Sender);
int flag = DT_WORDBREAK+DT_CENTER+DT_VCENTER+DT_SINGLELINE;
vle->Canvas->FillRect(Rect);
vle->Canvas->Font->Size = 11;
vle->Canvas->Font->Style = TFontStyles() << fsBold;
vle->Canvas->Pen->Color = clBlack;
vle->Canvas->Rectangle(Rect);
String Str = vle->Cells[ACol][ARow];
DrawText(vle->Canvas->Handle, Str.w_str(),Str.Length(), &Rect, flag);
}
首先要通用的話,就必須用 Sender 來判斷呼叫的 TStringgrid
再來調整 Flag 來改寫置左中右,上下置中似乎只對單行有作用
接下來就常見的 Font 的操作,最後 DrawText 便大功告成
0 意見:
張貼留言