關於combobox和dblookupcombobox |
尚未結案
|
gtina78
一般會員 發表:2 回覆:5 積分:1 註冊:2011-05-29 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
使用 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 發送簡訊給我 |
還是不行
我現在想做的是員工建檔資料 我想從部門資料表那把部門編號以下拉的方式呈現 所以我把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 發送簡訊給我 |
這很單純, 沒有不行的,變灰就是你的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 發送簡訊給我 |
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 發送簡訊給我 |
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 發送簡訊給我 |
這個我知道,只不過有些東西,我不想把它弄的那麼複雜
我只是想在新增員工的地方,可以不用讓使用者自行輸入部門編號 而可以使用下拉的方式,找到部門編號 謝謝大大的指示="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 發送簡訊給我 |
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 發送簡訊給我 |
若 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,才方便如此使用。 |
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
|
cancer
高階會員 發表:58 回覆:319 積分:190 註冊:2004-07-31 發送簡訊給我 |
我們之前元件的寫法繼承 ComboBox,也是按 Alt + 下,都被嫌,因為使用者是左手(或拿著尺)壓住文件,右手打字的,要兩隻手操作,還是不被接受。
===================引 用 sryang 文 章=================== 離題一下,Combobox 是可以使用鍵盤操作的 Alt-下:下拉 Enter 或 Esc:關上 當然,也可以在 OnEnter 事件中,設定 DroppedDown 屬性為 True 只要進入就會自動下拉 (滑鼠點擊不會) 更進一步,繼承 TCombobox 把這些功能寫進去,例如把下拉的熱鍵改成單鍵,增加一個 OnEnter 要不要自動下拉的屬性等等 |
gtina78
一般會員 發表:2 回覆:5 積分:1 註冊:2011-05-29 發送簡訊給我 |
|
js6749
一般會員 發表:0 回覆:3 積分:0 註冊:2011-04-21 發送簡訊給我 |
|
gtina78
一般會員 發表:2 回覆:5 積分:1 註冊:2011-05-29 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |