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 便大功告成

Related Posts:

  • Notepad++ 進階用法 Notepad++ 進階用法 列模式編輯 舉例 : 在 windows 的 cmd 下 dir > 123.txt,並用 Notepad++打開。 假如想要將時間移動欄位,按著 Alt 拉框框。 剪下,並想要的位置貼上 同步異位編輯 參考資料 : https://www.kjnotes.com/devtools/19 … Read More
  • JQuery 自動將 Listener 作用於動態新增的 ElementAdding event listeners to dynamically added elements 拿 click 舉例 $(".myclass").click(function(){ // do something }); 若在整個網頁讀取完後,才新增 class = 'myclass' 的 element 不會有這個 Event Listener 這時要用 on $('#mydiv').on('click', '… Read More
  • CSS Selector PriorityCSS 在套用的時候,是有優先順序的。 沒研究前我以為是程式碼先後或最靠近的element <table id='table'> <tr> <td><table class='subtable'>...</table></td> <td><table class='subtable'>...</table></td>… Read More
  • Python 數值互換如何運作在 Python 裡,以下這段 Code 是被允許的 a = 1 b = 2 a, b = b, a # b = 1, a = 2 其理由是 Python 會計算等號右邊的值,計算完後才將值分配到等號左邊。 可以 import dis 看其實際如何運作。 import dis def bar(a, b, c, d): d, c, b, a = a, b, c, d dis.dis(bar) 2 0 LOAD_… Read More
  • 網頁開發(4) JQuery Datepicker 日期選擇器這次要記錄的是 JQuery 中的 Datepicker 其實 Datepicker 是 JQuery UI 裡的一個部件 以下連結可以載 JQuery UI http://jqueryui.com/download/ 載完後就 Link 到自己的檔案裡就可以使用 <link rel="stylesheet" type="text/css" href="jQuery/ui.css"/> <… Read More

0 意見:

張貼留言

Popular Posts