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

關於combobox和dblookupcombobox

尚未結案
gtina78
一般會員


發表:2
回覆:5
積分:1
註冊:2011-05-29

發送簡訊給我
#1 引用回覆 回覆 發表時間:2011-05-29 15:41:44 IP:122.117.xxx.xxx 訂閱
如果一開始想用Combobox把資料存入combobox裡
但我又需要把資料回傳到資料庫裡


也想過用dblookupcombobox
datasource和datafield都有設定了
enabled:=true;
readonly:=false;
但在執行的時候仍然是不可以下拉的

P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2011-05-29 23:26:47 IP:118.169.xxx.xxx 未訂閱
使用 LOOKUP 系列, 你必須要有兩組 DATASET, 不能只有一組
一組為 LISTSOURCE 顯示要對應 COMBOBOX 中的 items, 就等於以 DATASET 中的記錄來代替COMBOBOX 中我們要加入的ITEMS
一組為 DATASOURCE 顯示要對應的主DATASET
兩組都要成立且開啟, 才可以出現下拉
===================引 用 gtina78 文 章===================
如果一開始想用Combobox把資料存入combobox裡
但我又需要把資料回傳到資料庫裡


也想過用dblookupcombobox
datasource和datafield都有設定了
enabled:=true;
readonly:=false;
但在執行的時候仍然是不可以下拉的

gtina78
一般會員


發表:2
回覆:5
積分:1
註冊:2011-05-29

發送簡訊給我
#3 引用回覆 回覆 發表時間:2011-05-30 10:56:35 IP:140.128.xxx.xxx 訂閱
還是不行

我現在想做的是員工建檔資料
我想從部門資料表那把部門編號以下拉的方式呈現
所以我把dblookupcombobox的
listsource:=deptdatasource(部門資料表)
datasource:=empldatasource(員工資料表)
這樣應該沒有錯吧
可是在執行的時候還是不行下拉(灰灰的)
請問是還有哪裡要設定嗎
還是邏輯有問題??
===================引 用 P.D. 文 章===================
使用 LOOKUP 系列, 你必須要有兩組 DATASET, 不能只有一組
一組為 LISTSOURCE 顯示要對應 COMBOBOX 中的 items, 就等於以 DATASET 中的記錄來代替COMBOBOX 中我們要加入的ITEMS
一組為 DATASOURCE 顯示要對應的主DATASET
兩組都要成立且開啟, 才可以出現下拉

編輯記錄
gtina78 重新編輯於 2011-05-29 20:57:11, 註解 無‧
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#4 引用回覆 回覆 發表時間:2011-05-30 19:03:11 IP:118.169.xxx.xxx 未訂閱
這很單純, 沒有不行的,變灰就是你的SOURCE來源指定不搭, 你必須再檢查
LISTSOURCE, DATASOURCE 的KEYFIELD 必須一致才能對應,
兩組TALBE 都要開啟, 以及要有資料存在
===================引 用 gtina78 文 章===================
還是不行

我現在想做的是員工建檔資料
我想從部門資料表那把部門編號以下拉的方式呈現
所以我把dblookupcombobox的
listsource:=deptdatasource(部門資料表)
datasource:=empldatasource(員工資料表)
這樣應該沒有錯吧
可是在執行的時候還是不行下拉(灰灰的)
請問是還有哪裡要設定嗎
還是邏輯有問題??
===================引 用 P.D. 文 章===================
使用 LOOKUP 系列, 你必須要有兩組 DATASET, 不能只有一組
一組為 LISTSOURCE 顯示要對應 COMBOBOX 中的 items, 就等於以 DATASET 中的記錄來代替COMBOBOX 中我們要加入的ITEMS
一組為 DATASOURCE 顯示要對應的主DATASET
兩組都要成立且開啟, 才可以出現下拉

cancer
高階會員


發表:58
回覆:319
積分:190
註冊:2004-07-31

發送簡訊給我
#5 引用回覆 回覆 發表時間:2011-05-31 19:10:35 IP:220.128.xxx.xxx 未訂閱
Hello, 其實這種 Look Up 的功能,我看同行的程式,都沒有使用,而是另外設計一個視窗,上面放 Dataset 和 DBGrid,因為是,不會那麼巧全部資料都可以查,所以
1.查詢內容必須可以受到控制,不應該全部查出來,例如,可能因不同客戶而有所不同。
2.要能根據不同情況,切換排序欄位,例如在客戶編號的欄位跳出來,自動以客戶編號排序,在客戶英文名稱跳出,用英文名稱排序。查詢視窗跳出來之後,要能夠點 DBGrid 欄位就能重新排序。
3.要有自動到位功能,例如客戶編號已經輸入 A001,則跳出來時除了用客戶編號排序之外,要直接 Locate() 到這一筆客戶資料。
4.查詢之前要能決定要顯示哪些欄位,在客戶中文名稱跳出來,資料應該包含中文名稱這個欄位。
5.要有 TEdit 供輸入文字,DataSet 能用來 Locate() 指到那一筆。

總之,Look Up 的功能太陽春了,要做出能收到錢的程式,要自己設計查詢視窗才行。
編輯記錄
cancer 重新編輯於 2011-05-31 05:13:47, 註解 無‧
gtina78
一般會員


發表:2
回覆:5
積分:1
註冊:2011-05-29

發送簡訊給我
#6 引用回覆 回覆 發表時間:2011-05-31 20:08:40 IP:122.117.xxx.xxx 訂閱
listsource和datasource的keyfield所對應到的都是deno(部門編號)
而我也把這兩個的active打開了
一樣還是灰灰的
請問我還有哪裡沒有設定到嗎?
===================引 用 P.D. 文 章===================
這很單純, 沒有不行的,變灰就是你的SOURCE來源指定不搭, 你必須再檢查
LISTSOURCE, DATASOURCE 的KEYFIELD必須一致才能對應,
兩組TALBE 都要開啟, 以及要有資料存在
===================引 用 gtina78 文 章===================
還是不行

我現在想做的是員工建檔資料
我想從部門資料表那把部門編號以下拉的方式呈現
所以我把dblookupcombobox的
listsource:=deptdatasource(部門資料表)
datasource:=empldatasource(員工資料表)
這樣應該沒有錯吧
可是在執行的時候還是不行下拉(灰灰的)
請問是還有哪裡要設定嗎
還是邏輯有問題??
===================引 用 P.D. 文 章===================
使用 LOOKUP 系列, 你必須要有兩組 DATASET, 不能只有一組
一組為 LISTSOURCE 顯示要對應 COMBOBOX 中的 items, 就等於以 DATASET 中的記錄來代替COMBOBOX 中我們要加入的ITEMS
一組為 DATASOURCE 顯示要對應的主DATASET
兩組都要成立且開啟, 才可以出現下拉

gtina78
一般會員


發表:2
回覆:5
積分:1
註冊:2011-05-29

發送簡訊給我
#7 引用回覆 回覆 發表時間:2011-05-31 20:11:16 IP:122.117.xxx.xxx 訂閱
這個我知道,只不過有些東西,我不想把它弄的那麼複雜
我只是想在新增員工的地方,可以不用讓使用者自行輸入部門編號
而可以使用下拉的方式,找到部門編號
謝謝大大的指示="D

===================引 用 cancer 文 章===================
Hello, 其實這種 Look Up 的功能,我看同行的程式,都沒有使用,而是另外設計一個視窗,上面放 Dataset 和 DBGrid,因為是,不會那麼巧全部資料都可以查,所以
1.查詢內容必須可以受到控制,不應該全部查出來,例如,可能因不同客戶而有所不同。
2.要能根據不同情況,切換排序欄位,例如在客戶編號的欄位跳出來,自動以客戶編號排序,在客戶英文名稱跳出,用英文名稱排序。查詢視窗跳出來之後,要能夠點 DBGrid 欄位就能重新排序。
3.要有自動到位功能,例如客戶編號已經輸入 A001,則跳出來時除了用客戶編號排序之外,要直接 Locate() 到這一筆客戶資料。
4.查詢之前要能決定要顯示哪些欄位,在客戶中文名稱跳出來,資料應該包含中文名稱這個欄位。
5.要有 TEdit 供輸入文字,DataSet 能用來 Locate() 指到那一筆。

總之,Look Up 的功能太陽春了,要做出能收到錢的程式,要自己設計查詢視窗才行。
cancer
高階會員


發表:58
回覆:319
積分:190
註冊:2004-07-31

發送簡訊給我
#8 引用回覆 回覆 發表時間:2011-06-01 11:41:55 IP:220.128.xxx.xxx 未訂閱
Hello, 在 FormShow 時判斷 Combobox.Items.Count 是不是零,是零的話,把部門編號抓進來填到 Items 就好了。
不過,我手頭上的程式,都儘量不用 ComboBox,Y/N 這麼簡單的固定選項除外,因為 ComboBox 要動用滑鼠來點,打了好幾個 TDBEdit 的內容,突破間要拿起滑鼠去點 ComboBox,筆數多的時候,打單速度慢很多,使用者非常不喜歡。
程式大量用到 ComboBox,且單子的資料很多時,使用者一定會抱怨,使用者都討厭 ComboBox,連我自己親自打單試看看,也都覺得 ComboBox 對快速打單,真的影響效能很大,手放在鍵盤上打沒幾個字,又要去拿滑鼠,再回來鍵盤,太麻煩了。
===================引 用 gtina78 文 章===================
這個我知道,只不過有些東西,我不想把它弄的那麼複雜
我只是想在新增員工的地方,可以不用讓使用者自行輸入部門編號
而可以使用下拉的方式,找到部門編號
謝謝大大的指示="D
編輯記錄
cancer 重新編輯於 2011-05-31 21:46:03, 註解 無‧
herbert2
尊榮會員


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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2011-06-01 16:58:10 IP:202.39.xxx.xxx 訂閱
若 Items 項次可能會超過10個,或會因日期(部門會增減)、欄位之間相依等條件而有不同的結果,
則建議參考下列:

http://delphi.ktop.com.tw/board.php?cid=30&fid=71&tid=102653

若 Items 項次固定,則於 Form Construct 時,讀取資料庫或 INI 檔等,
將內容填入 TDBComboBox-> Items 。

又:TDBComboBox 或 TComboBox 可以按 Up、Down鍵選 Items,不須用滑鼠。
//--------------------------------
若有需要,可做成 TDBEdit(代號欄) 配 TDBComboBox(代號之敘述欄) 並互動
(Key-In 代號欄 OnExit 時敘述欄隨之改變,選敘述欄時代號欄隨之改變)。

通常 A 檔存 Code 不存 Code_Description
將 A 檔與 B 檔做成 View:C 檔,而以 C 檔做 Edit 之 DataSet,才方便如此使用。
編輯記錄
herbert2 重新編輯於 2011-06-01 03:05:52, 註解 無‧
herbert2 重新編輯於 2011-06-01 03:08:32, 註解 無‧
herbert2 重新編輯於 2011-06-01 03:09:37, 註解 無‧
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#10 引用回覆 回覆 發表時間:2011-06-02 02:26:46 IP:118.169.xxx.xxx 未訂閱
你要不要把你的設定properity 貼圖上來, 要不然沒看到你的重點, 老是在玩元宵猜謎大會!
===================引 用 gtina78 文 章===================
listsource和datasource的keyfield所對應到的都是deno(部門編號)
而我也把這兩個的active打開了
一樣還是灰灰的
請問我還有哪裡沒有設定到嗎?
還是邏輯有問題??
sryang
尊榮會員


發表:39
回覆:762
積分:920
註冊:2002-06-27

發送簡訊給我
#11 引用回覆 回覆 發表時間:2011-06-02 08:01:32 IP:114.35.xxx.xxx 訂閱
離題一下,Combobox 是可以使用鍵盤操作的
Alt-下:下拉
Enter 或 Esc:關上
當然,也可以在 OnEnter 事件中,設定 DroppedDown 屬性為 True 只要進入就會自動下拉 (滑鼠點擊不會)
更進一步,繼承 TCombobox 把這些功能寫進去,例如把下拉的熱鍵改成單鍵,增加一個 OnEnter 要不要自動下拉的屬性等等
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/
cancer
高階會員


發表:58
回覆:319
積分:190
註冊:2004-07-31

發送簡訊給我
#12 引用回覆 回覆 發表時間:2011-06-02 08:50:33 IP:220.128.xxx.xxx 未訂閱
我們之前元件的寫法繼承 ComboBox,也是按 Alt + 下,都被嫌,因為使用者是左手(或拿著尺)壓住文件,右手打字的,要兩隻手操作,還是不被接受。
===================引 用 sryang 文 章===================
離題一下,Combobox 是可以使用鍵盤操作的
Alt-下:下拉
Enter 或 Esc:關上
當然,也可以在 OnEnter 事件中,設定 DroppedDown 屬性為 True 只要進入就會自動下拉 (滑鼠點擊不會)
更進一步,繼承 TCombobox 把這些功能寫進去,例如把下拉的熱鍵改成單鍵,增加一個 OnEnter 要不要自動下拉的屬性等等
gtina78
一般會員


發表:2
回覆:5
積分:1
註冊:2011-05-29

發送簡訊給我
#13 引用回覆 回覆 發表時間:2011-06-03 22:24:27 IP:122.117.xxx.xxx 訂閱
設定值

sorry,不大會放圖=ˇ=

===================引 用 P.D. 文 章===================
你要不要把你的設定properity 貼圖上來, 要不然沒看到你的重點, 老是在玩元宵猜謎大會!

編輯記錄
gtina78 重新編輯於 2011-06-03 08:26:24, 註解 無‧
gtina78 重新編輯於 2011-06-03 08:27:15, 註解 無‧
js6749
一般會員


發表:0
回覆:3
積分:0
註冊:2011-04-21

發送簡訊給我
#14 引用回覆 回覆 發表時間:2011-06-20 10:19:03 IP:60.248.xxx.xxx 訂閱
請確定一下 listsource, listfield,keyfield的設定,而且記得把dataset做open.
------

~Wrote by Eric.
gtina78
一般會員


發表:2
回覆:5
積分:1
註冊:2011-05-29

發送簡訊給我
#15 引用回覆 回覆 發表時間:2011-06-20 20:50:53 IP:122.117.xxx.xxx 訂閱
我跟我朋友設定的屬性都一樣,但是還是一樣不能使用,adotable也有設成open
系統時間:2024-03-29 19:20:10
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!