TwwDBGrid欄位寬度配置 |
答題得分者是:max5020
|
lazybones1983
一般會員 發表:6 回覆:7 積分:2 註冊:2011-05-25 發送簡訊給我 |
我現在使用了一個TwwDBGrid
我希望在初始設定時, 能將DBGrid的所有欄位恰好佔滿所有寬度, 也就是不要有空白或是出現scroll bar 假設我有10個column, 其中9個都有data, 這9個column的寬度就取最長資料寬度, 剩下的那個就用全寬去扣掉那9個欄位的寬度 目前遇到幾個問題 1.如何取得配置的DBGrid寬度?因為寬度會隨螢幕解析度改變 用DBGrid.ClientWidth? 2.我用以下方法取得各column data的pixel寬度, 最後再set給column, 但是我發現DBGrid.ColWidths[i]並不等於MaxFieldLen[i], 請問是什麼原因?又該如何解決? [code delphi] DataMaxFieldLen[i] := DBGrid.Canvas.TextWidth(DBGrid.Fields[i].DisplayText); . . . DBGrid.ColWidths[i] := MaxFieldLen[i]; [/code] |
cancer
高階會員 發表:58 回覆:319 積分:190 註冊:2004-07-31 發送簡訊給我 |
|
lazybones1983
一般會員 發表:6 回覆:7 積分:2 註冊:2011-05-25 發送簡訊給我 |
謝謝!
不過我再設定寬度的時候遇到了一些問題 部分code如下 [code delphi] DataMaxFieldLen[i] := DBGrid.Canvas.TextWidth(DBGrid.Fields[i].DisplayText) 10; //取得column內容最大pixel寬度 . . . TitleMaxFieldLen[i] := DBGrid.Canvas.TextWidth(DBGrid.Fields[i].DisplayLabel); //取得column title最大pixel寬度 for i := 0 to DBGrid.FieldCount - 1 do begin if(DataMaxFieldLen[i] > TitleMaxFieldLen[i]) then MaxFieldLen[i] := DataMaxFieldLen[i] else MaxFieldLen[i] := TitleMaxFieldLen[i]; DBGrid.ColWidths[i] := MaxFieldLen[i]; //將column最大寬度設定給DBGrid end; [/code] 想請問以上取值, 給值有什麼問題? 因為DBGrid.ColWidths[i] := MaxFieldLen[i]; 後 DBGrid.ColWidths[i] 跟 MaxFieldLen[i] 大都不一樣, 會有些許誤差 Ex. DBGrid.ColWidths[i] 比 MaxFieldLen[i] 大4 或 DBGrid.ColWidths[i] 比 MaxFieldLen[i] 小5 的情形... 請問為何會發生這狀況? ===================引 用 cancer 文 章=================== 我覺得寫程式,介面不用做到那麼好,寫太好反而被人嫌。 1.這會增加處理時間 2.把精神放在其他更重要的功能 真的要弄的話,只要簡單地根據欄位型態設一下寬度就可以了,日期、布林、浮點數、整數等等,顯示寬度太概都是固定的,不必判斷內容,就可以決定寬度,再來是文字欄位,主鍵欄位包是已知寬度,剩下的,一律給一個固定值就可以了,例如 120 pixels。 |
cancer
高階會員 發表:58 回覆:319 積分:190 註冊:2004-07-31 發送簡訊給我 |
|
lazybones1983
一般會員 發表:6 回覆:7 積分:2 註冊:2011-05-25 發送簡訊給我 |
|
max5020
資深會員 發表:26 回覆:277 積分:320 註冊:2003-06-04 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |