程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 讓你的DBGridEh的Column自動適應寬度

讓你的DBGridEh的Column自動適應寬度

編輯:Delphi
   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;i<sDBGridEh->Columns->Count;i++ )
      sDBGridEh->OptimizeSelectedColsWidth((TColumnEh *)sDBGridEh->Columns->Items[i]);

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved