3 個關於dbgrid 的問題 |
答題得分者是:P.D.
|
guanto
一般會員 發表:1 回覆:1 積分:0 註冊:2010-12-21 發送簡訊給我 |
hilo,
INTRO: I'm new here, Hi! (1) 我的中文不是很好所以先請各位見諒。 (2) “新手必看”並不禁止一個文章內提出多於一個問題,但若此法非行於正道,請各位提出改正。我不敢第一次發表就新增四個文章。 (3) 多謝! SETUP: (1) MSSQL2008 R2 (2) Delphi2010 QUESTIONS: (1) 在 delphi 裡的 combobox 的 “items” property 有沒有辦法用 dbgrid 上顯示的 sql 搜尋結果輸入?我都是用手搭進去的,不能隨時跟著用者變動。 (2) 有沒有辦法叫 dbgrid 輸出他的 columns,到一個 memobox 裡或變成 combobox 裡的 items? (3) 我希望可以按 dbgrid 的 columns 然後它把那一欄裡的東西 sort 好。一次可以選多餘一欄讓它 sort 嗎? (4) 我的 dbgrid 理由很多欄位(77個),有沒有辦法讓用著再用的時候選擇他們想要的欄位? 多謝! 冠頭 |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
嗨, 你好, 有關你的問題都是可以處理, 但如要寫出來, 可能要花上好幾個小時, 所以就重點吧
(1), 重點 當 dbgrid 操作下的 sql 已產生所要的 record 時, 可用 combobox.Items.Clear 來清除舊data dbgrid 一定 link 一組 dataset, 利用 while not table1.eof do 的 迴圈方式把每一筆你要加入 combobox 的欄位內容 加入 combobox.items.add(field) (2) 上面提到, dbgrid 是 link 一組 dataset, 所以只要知道 dbgrid 中最重要的一組 properity --> columns 事情就容易辦了, columns 中有很多 properity, 可以在 dbgrid 上 double click 開啟 column editor 來研究一下, 這邊不提 要輸出到任何元件如 combobox 或 memo 等等 一樣都用 dataset 來做, 重點在如何取得每一個column 是那一個欄位, 我舉一個最直接容易懂的 dbgrid1.columns[0].fieldname ==> 這就是 dbgrid 第一組欄位對應的 dataset 欄位名稱, 有了名稱, 就可以取得 table1.fieldbyname(dbgrid1.columns[0].fieldname).value 那接下來要如何存入combobx 中, 應該不是難事 (3) 有關 sort , dbgrid本身並沒有提供, 這得完全靠你自己去寫, 單一sort會比較好處理, 就單一sort 來看 你必須先取得 user 是 click 在 dbgrid 那一個欄位 , dbgrid1.selectindex 可以得知, 知道 index 就等於是決定了 columns[index]的結果, 那再下來就按第2點方式取得是那一個欄位名稱, 你自己要用 sql 改寫 order by sortfield 至於多欄sort, 你要直接以 dbgrid 操作其實不簡單, 不妨建議你另外利用其他方式讓user選擇要排序的欄位, 然後再進行 sql order by ... (4)這一項當然沒有問題, 重點在 dbgrid1.columns.clear清除舊設定, 再用 dbgrid1.columns.add -->加入一組空白column 然後每一個columns 下的 properity指定fieldname, title.caption等一切參數就可以 我很早以前有寫一支dbgrid 的欄位編輯功能, 就有你所要的功能, 但時代久遠, 目前我手上使用的 已經是改了很多, 有應用更多元件組合, 沒有辦法傳上來, 你就下載這支, 但當然會有很多附件不齊 可能造成程式是沒有辦法 compiler的, 不過重點不在於 compiller, 而是裡面的codeing還是存在的, 看code 的部份即可 http://delphi.ktop.com.tw/board.php?cid=31&fid=79&tid=31340 ===================引 用 guanto 文 章=================== QUESTIONS: (1) 在 delphi 裡的 combobox 的 “items” property 有沒有辦法用 dbgrid 上顯示的 sql 搜尋結果輸入?我都是用手搭進去的,不能隨時跟著用者變動。 (2) 有沒有辦法叫 dbgrid 輸出他的 columns,到一個 memobox 裡或變成 combobox 裡的 items? (3) 我希望可以按 dbgrid 的 columns 然後它把那一欄裡的東西 sort 好。一次可以選多餘一欄讓它 sort 嗎? (4) 我的 dbgrid 理由很多欄位(77個),有沒有辦法讓用著再用的時候選擇他們想要的欄位? 多謝! 冠頭 |
老大仔
尊榮會員 發表:78 回覆:837 積分:1088 註冊:2006-07-06 發送簡訊給我 |
以下以Delphi為例
A1: 假如您是要將Select 出來的某個欄位的所有的值填入ComboBox的話,可用迴圈來執行即可。 ex: for i := 0 to ADOQuery1.RecordCount - 1 do begin ..... end; A2: 您所謂的"columns"是指欄位名稱?還是欄位資料? 假如是後者,那基本上您問的問題應該與第一點是一樣的吧 A3: "或許"(因為我手上沒有Delphi可以實測) 您可以在DBGrid的TitleClick事件中做也說不定。(可以爬問看看是否有此類的作法) A4: 當然可以,方法有很多種。可先把欄位資料都先給確定好,然後再開一個Form 兩個ListBox,左邊的ListBox放所有的欄位給使用者選擇,右邊的ListBox是使用者所選出的欄位,然後確定好欄位後,再行Select 的動作也行。 ps: 文章標題說問了三個問題但實際卻是問四個問題@@? 噢~ P.D.大已經回應了 我多打了XD ===================引 用 guanto 文 章=================== hilo, INTRO: I'm new here, Hi! (1) 我的中文不是很好所以先請各位見諒。 (2) “新手必看”並不禁止一個文章內提出多於一個問題,但若此法非行於正道,請各位提出改正。我不敢第一次發表就新增四個文章。 (3) 多謝! SETUP: (1) MSSQL2008 R2 (2) Delphi2010 QUESTIONS: (1) 在 delphi 裡的 combobox 的 “items” property 有沒有辦法用 dbgrid 上顯示的 sql 搜尋結果輸入?我都是用手搭進去的,不能隨時跟著用者變動。 (2) 有沒有辦法叫 dbgrid 輸出他的 columns,到一個 memobox 裡或變成 combobox 裡的 items? (3) 我希望可以按 dbgrid 的 columns 然後它把那一欄裡的東西 sort 好。一次可以選多餘一欄讓它 sort 嗎? (4) 我的 dbgrid 理由很多欄位(77個),有沒有辦法讓用著再用的時候選擇他們想要的欄位? 多謝! 冠頭 |
guanto
一般會員 發表:1 回覆:1 積分:0 註冊:2010-12-21 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
老大仔
尊榮會員 發表:78 回覆:837 積分:1088 註冊:2006-07-06 發送簡訊給我 |
我也插個花~
P.D. 大您也言重了 小弟我只是忙裡偷閒上上網幫忙回個文章唄 小弟也只算是個小新手 因為我的知識主要來自這裡 孤狗神 自己也曾在這裡提過問題、獲得解決方法 所以假如能夠幫忙上的地方也應當提供一些意見給發問者^^ 嗯...是說~回了這些文 都是趁著上班的時候回的>"< 我上班還真是不認真XD ===================引 用 P.D. 文 章=================== 插個花, 老大仔言重了, 沒有多打, 每個人的思考都不同, 或許可以為初學者帶來不同的想法, 最近看老大仔的回覆還真多, 對Delphi這塊還真感謝老大仔這麼有心, 感恩啦~~~~(痛哭流涕中) ===================引 用 老大仔 文 章=================== ...略 噢~ P.D.大已經回應了 我多打了XD |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |