線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:4638
推到 Plurk!
推到 Facebook!

如何以程式碼方式動態指定DBGRID的欄位數、欄位寬度?

尚未結案
g9221712
高階會員


發表:145
回覆:344
積分:162
註冊:2006-07-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2006-10-17 04:14:49 IP:220.134.xxx.xxx 訂閱
各位前輩和版主大人:
想請教除了設計時期以手動滑鼠點選DBGRID物件,點選所要顯示的欄位和欄寬外
要如何以指定資料來源下達QUERY SQL CODE後,以程式碼的方式動態指定要顯示的欄位
項目,因為目前一指定資料來源,DBGRID都會捉取全部的欄位,有些欄位並不想顯示,
不知道要怎麼以程式調整?
懇請前輩指導,萬分感謝!
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」
程式寫的越久,卻發現自己越來越不會寫程式!
danny
版主


發表:100
回覆:522
積分:595
註冊:2002-03-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2006-10-17 14:51:04 IP:211.76.xxx.xxx 未訂閱
方式如 http://delphi.ktop.com.tw/board.php?cid=30&fid=71&tid=84605

===================引 用 文 章===================

各位前輩和版主大人:
想請教除了設計時期以手動滑鼠點選DBGRID物件,點選所要顯示的欄位和欄寬外
要如何以指定資料來源下達QUERY SQL CODE後,以程式碼的方式動態指定要顯示的欄位
項目,因為目前一指定資料來源,DBGRID都會捉取全部的欄位,有些欄位並不想顯示,
不知道要怎麼以程式調整?
懇請前輩指導,萬分感謝!
------
將問題盡快結案也是一種禮貌!
blude
一般會員


發表:2
回覆:1
積分:0
註冊:2004-04-13

發送簡訊給我
#3 引用回覆 回覆 發表時間:2006-10-31 17:31:38 IP:141.129.xxx.xxx 訂閱
你说的是不是要动态的在dbgrid加载要显示的数据库字段数据?
我一般是指定dbgrid的数据来源,这个来源是一个SQL查询语句,在SQL中可以指定你想要的数据字段。例如:
select 字段1,字段2,字段3,字段4 from 表 where 字段n 条件 值
如果用:select * from 表这种方式就会把表中的所有数据查询出来,包括你不想显示的数据,同时这种方式也会占用更多的系统资源,特别是表中字段比较多的时候,不推荐使用。
不知道对你有没有帮助

g9221712
高階會員


發表:145
回覆:344
積分:162
註冊:2006-07-06

發送簡訊給我
#4 引用回覆 回覆 發表時間:2006-12-22 02:27:39 IP:220.134.xxx.xxx 訂閱
前輩:
我的意思是我要捉取字段1,字段2,字段3,字段4 這幾個的欄位寬度,然後由程式自己去調整要顯示的寬度,如excel的調整欄寬!
這麼晚才回應您!真是對不起!
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」
程式寫的越久,卻發現自己越來越不會寫程式!
danny
版主


發表:100
回覆:522
積分:595
註冊:2002-03-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2006-12-25 11:58:24 IP:211.76.xxx.xxx 未訂閱

===================引 用 文 章===================
前輩:
我的意思是我要捉取字段1,字段2,字段3,字段4 這幾個的欄位寬度,然後由程式自己去調整要顯示的寬度,如excel的調整欄寬!
這麼晚才回應您!真是對不起!
===================引 用 文 章===================
顯然你沒有在 GDBRID 中產生 Columns (要顯示的欄位), 你說東西都可以在Columns 中調整(design or run time)
------
將問題盡快結案也是一種禮貌!
g9221712
高階會員


發表:145
回覆:344
積分:162
註冊:2006-07-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2006-12-25 12:16:43 IP:220.134.xxx.xxx 訂閱
前輩:
感謝您的回應!我的意思是我想捉取資料庫欄位的大小設定,自動去設定dbgrid欄寬的,但是我是想說能不能寫一個函數
自動調整dbgrid的寬度大小,還有避免使用者自己去調正寬度! 不知道這樣的想法是否能達成!
------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」
程式寫的越久,卻發現自己越來越不會寫程式!
herbert2
尊榮會員


發表:58
回覆:640
積分:894
註冊:2004-04-16

發送簡訊給我
#7 引用回覆 回覆 發表時間:2006-12-30 02:38:43 IP:211.72.xxx.xxx 訂閱
試試看這是不是您要的:
(1) 自定 Procedure, 參數: TDBGrid, TQuery 等, 依 TQuery 之 Fields 之 FieldType 取 String 之 Length 或 Float 之 Precision (較難決定長度)等, 依 Canvas.Font.Width * Length 4 逐一設定 TDBGrid.Column[i] 之 Width.
(2) TDBGrid.TDataSource 之 AfterOpen() 時, 呼叫您的自定 Procedure.
(3) 我是直接繼承 TDBGrid, 並參考 Tzebdbgrid.pas, 改寫 TMyDBGrid, 直接於其內部處理, 且一併考慮 Title 之 Width 與特定 Column 指定 Color, 並依特定 Column 之值改變整 Row 之 Color 等, 也用 TStrings 為各數值欄設定其各自的長度. 您或許可考慮依您需求, 自製您的 TDBGrid.
===================引 用 文 章===================

感謝您的回應!我的意思是我想捉取資料庫欄位的大小設定,自動去設定dbgrid欄寬的,但是我是想說能不能寫一個函數
自動調整dbgrid的寬度大小,還有避免使用者自己去調正寬度!?? 不知道這樣的想法是否能達成!
g9221712
高階會員


發表:145
回覆:344
積分:162
註冊:2006-07-06

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-01-06 05:49:31 IP:220.134.xxx.xxx 訂閱
我採用的方式是,取得資料庫內的實體長度後,換算大約的物件顯示寬度!
for i := 0 to Self.Datasource.DataSet.Fields.Count - 1 do
begin
if Self.Datasource.DataSet.Fields.Fields[i].FieldName = aField then
begin
xxxxx := 7 * (Self.Datasource.DataSet.Fields[i].Size);
end;
end;

------
「人們所以覺得寂寞,是因為他們會築牆,卻不會搭橋。」
程式寫的越久,卻發現自己越來越不會寫程式!
系統時間:2024-05-13 9:11:23
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!