全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1146
推到 Plurk!
推到 Facebook!

DBGRID 的寬度造成顯示出錯

缺席
VICSYS
初階會員


發表:21
回覆:64
積分:32
註冊:2002-10-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-07-27 23:39:32 IP:219.68.xxx.xxx 未訂閱
Delphi 版本 BDS 2006 Update2 HotFixRollup2
1.dbgrid options 含 dgRowSelect
2.dbgrid Width 剛好等於 Columns 的 Width
3.HightLight 應該是一整行, 但是這時卻亂跑,

---- 以下為取得 ColumnsWidth 的程式

<textarea class="delphi" rows="10" cols="60" name="code">type TAccessDBGrid=class(TCustomDBGrid); function GetColumnWidths(DBGrid: TCustomDBGrid):Integer; var ColumnCount, I: Integer; begin with TAccessDBGrid(DBGrid) do begin Result := 0; ColumnCount:=0; for I := 0 to Columns.Count-1 do if Columns[I].Visible then begin Inc(Result, Columns[I].Width); Inc(ColumnCount); end; if ColumnCount = 0 then Exit; if dgColLines in Options then Inc(Result, ColumnCount); Inc(Result,GetSystemMetrics(SM_CXVSCROLL)); if dgIndicator in Options then Inc(Result, IndicatorWidth); if BorderStyle = bsSingle then if Ctl3D then Inc(Result, 4) else Inc(Result, 2); end; end; </textarea>
VICSYS
初階會員


發表:21
回覆:64
積分:32
註冊:2002-10-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-07-28 04:20:11 IP:219.68.xxx.xxx 未訂閱
這個現像, 應該是我寫的程式碼在執行週期設定 Column 的 Visible 有關! Delphi 在判斷欄位 Visible 是出錯!
eaglewolf
資深會員


發表:4
回覆:268
積分:429
註冊:2006-07-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-07-28 11:54:44 IP:211.75.xxx.xxx 訂閱
應該與 OnDrawColumnCell Event有關
請確認
------
先查HELP
再查GOOGLE
最後才發問

沒人有義務替你解答問題
在標題或文章中標明很急
並不會增加網友回答速度

Developing Tool:
1.Delphi 6
2.Visual Studio 2005
3.Visual Studio 2008
DBMS:
MS-SQL
VICSYS
初階會員


發表:21
回覆:64
積分:32
註冊:2002-10-10

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-07-28 14:54:23 IP:219.68.xxx.xxx 未訂閱
為了抓蟲蟲, 我是用 DELPHI 的標準元件, 沒有增加任何的事件, 後來詳細測試時, 確定有二個必要條件

1.dbgrid Columns 最後一個為 Visible Off
2.dbgrid Width 剛好等於 Visible Columns 的 Width

在 2007 Update 1 的測試結果也一樣出錯!
系統時間:2024-03-29 4:26:22
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!