在 BCB 裡設計表格類的東西
幾乎都是從 TCustomGrid 繼承而來
在填入表格值都是用 DrawText 來填值
而我們要改變一些東西,例如文字置中
就要自己下 DrawText 的參數
首先第一步,把 DefaultDrawing 的值改為 Fault
不改的話會 DrawText 兩次,造成重疊
第二步改寫 OnDrawCell
首先要通用的話,就必須用 Sender 來判斷呼叫的 TStringgrid
再來調整 Flag 來改寫置左中右,上下置中似乎只對單行有作用
接下來就常見的 Font 的操作,最後 DrawText 便大功告成
幾乎都是從 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 便大功告成