2018年5月6日 星期日

BCB 筆記4 (DrawText)

在 BCB 裡設計表格類的東西
幾乎都是從 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 意見:

張貼留言

Popular Posts