讓你的dbgrideh的column自動適應寬度

EhLib控件的強大表格處理能力,相信使用過的朋友都有領會,但DBGrdiEh沒有發佈自動根據欄寬的方法,的確是有點遺憾。

不過還好,在DBGrdiEh的OptionsEh中,我們可以發現有個dghDblClickOptimizeColWidth選項,可以讓用戶在欄頭的寬度調整位置上,雙擊鼠標以自動調整欄寬度。

既然該功能已經實現,但卻沒能在DBGridEh發佈的方法中找到該方法,經過筆者嘗試,已經找到該方法,只要把它發佈出來即可使用。具體過程如下:

首先我們找到DBGridEh.hpp文件,並且備份,
根據dghDblClickOptimizeColWidth的線索,我們在DBGridEh.pas中全文查找該關鍵字,在10514行中,找到以下代碼段:
//
if (AGridState = gsColSizing) and (dghDblClickOptimizeColWidth in OptionsEh) then
OptimizeSelectedColsWidth(Columns[ASizingIndex - IndicatorOffset])
//
那麼看來OptimizeSelectedColsWidth(TColumnEh* WithColumn)函數就是我們要的了!

在頭文件DBGridEh.hpp中查找OptimizeSelectedColsWidth函數名,在1859行找到以下聲明
void __fastcall OptimizeSelectedColsWidth(TColumnEh* WithColumn);
它是放在protected域中,我們註釋掉改行,複製,並在public域中粘帖該聲明,
於是OptimizeSelectedColsWidth就發佈了。

因爲我們沒有修改pas源碼部分,因此,無需重新編譯,即可使用。
注意,該函數傳遞TColumnEh的指針,我們只要遍歷DBGridEh的Column所有對象指針,即可調整完整個表格的Column寬度。

以下爲使用實例:

for(int i=0;iColumns->Count;i++ )
sDBGridEh->OptimizeSelectedColsWidth((TColumnEh *)sDBGridEh->Columns->Items[i]); 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章