全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1535
推到 Plurk!
推到 Facebook!

請教「將一個欄位所有的值複製到ComboBox」的問題

答題得分者是:tech_state
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-11 10:43:55 IP:210.66.xxx.xxx 未訂閱
想請教一下各位前輩, 小弟資料庫程式中,前端有一個grid, 我想用一個ComboBox,把grid裡某個欄位的所有值全放進去, 但為小弟grid有特殊的功能,所以grid上做要禁止bookmark的動作, 書上好像都是用bookmark的動作來放值...    或是可以直接從再上一層來取,如資料庫的table或是... 這樣就不會動到grid... 一時覺得很亂,所以請前輩們給指點,謝謝 國泰平安
tech_state
版主


發表:44
回覆:638
積分:641
註冊:2003-02-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-11 11:01:16 IP:61.221.xxx.xxx 未訂閱
gemi0305, 您好 有沒有試過使用TDBLookupComboBox這個元件?應該可以符合您的需求。 設定以下幾個屬性 (1)ListSource = Grid的DataSource (2)ListField = 要顯示的欄位名稱 (3)KeyField = 要顯示的欄位名稱(這個屬性原本應該是要搭配DataField使用的,如果您沒有使用DataField的話,還是要設定此屬性,但是選擇任何一個欄位皆不影響List出來的欄位值)    ================================= 涵養怒中氣。謹防順口言。留心忙裡錯。珍惜有時錢。 是非終日有,不聽自然無 天下本無事,庸人自擾之
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-11 11:11:07 IP:210.66.xxx.xxx 未訂閱
感謝tech_state女前輩~ 精闢的解答,解決了我困惑已久的問題~ 不虧是資料庫女王!!!謝謝了~ 國泰平安 發表人 -
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-11 11:50:52 IP:210.66.xxx.xxx 未訂閱
那個TDBLookupComboBox也會用到bookmark耶... 在測式的時候發現的,不過我發現有一個有點像的TDBComboBox, 不知道可不可以用...?? 我設了DataSource之後,要設DataField時, 出現了Cannot load driver...是那裡沒注意到嗎? 國泰平安
tech_state
版主


發表:44
回覆:638
積分:641
註冊:2003-02-10

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-07-11 13:00:22 IP:61.221.xxx.xxx 未訂閱
gemi0305, 您好 我沒碰過您說的問題,也試不出來造成這個問題的原因。 不過TComboBox這個元件,應該是無法符合您的需求,他並不會List該欄位的值。 是否請您再描述一下您的實際需求,或許有其他解決的辦法。 或是上傳您的Project及Database,讓大家幫您。    ================================= 涵養怒中氣。謹防順口言。留心忙裡錯。珍惜有時錢。 是非終日有,不聽自然無 天下本無事,庸人自擾之
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-07-11 16:57:30 IP:210.66.xxx.xxx 未訂閱
hi~ 各位前輩~ 我用另一個方法解決了,是個有點風險的方法, 不過用在我這個特殊的case上,倒是不會有什麼問題 先說我的狀況好了,因為我的 > 國泰平安
tech_state
版主


發表:44
回覆:638
積分:641
註冊:2003-02-10

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-07-11 18:07:07 IP:61.221.xxx.xxx 未訂閱
gemi0305, 您好 終於確實了解您的需求了。 您的方法確實很不錯,但就如您所說的,若遇到沒有同步更新的話,就慘了。 我這邊有個想法供您參考看看。    全域變數: bool IsUpdate; // Table1表示DBGrid所連結的Table void __fastcall TForm1::ComboBox1DropDown(TObject *Sender) {    if(!IsUpdate)       return;    ComboBox1->Items->Clear();    Table1->First();    while(!Table1->Eof)    {       ComboBox1->Items->Add(Table1->FieldByName("city")->AsString);       Table1->Next();    }    IsUpdate = false; } //--------------------------------------------------------------------------- void __fastcall TForm1::FormCreate(TObject *Sender) {    Table1->First();    while(!Table1->Eof)    {       ComboBox1->Items->Add(Table1->FieldByName("city")->AsString);       Table1->Next();    }    IsUpdate = false; } //--------------------------------------------------------------------------- void __fastcall TForm1::Table1AfterPost(TDataSet *DataSet) {    IsUpdate = true; } //---------------------------------------------------------------------------    這樣比較不會有同步更新的問題, 但是還是存在一個問題,就是若您的Table1有更新,而您又還禁止grid做bookmark的動作,這樣就會有問題。 並不是一個很好的方法,或許提出這樣的想法可以引起您或其他前輩有更好的方法。    ================================= 涵養怒中氣。謹防順口言。留心忙裡錯。珍惜有時錢。 是非終日有,不聽自然無 天下本無事,庸人自擾之
懷舊的人
高階會員


發表:28
回覆:152
積分:141
註冊:2003-01-08

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-07-11 18:27:42 IP:152.104.xxx.xxx 未訂閱
1. 將欄位值全部寫入 TComboBox 2. 利用 事件 BeforetPost , 檢查某欄位值是否在 TComboBox 內,不在則 Add to TComboBox 3. 利用 事件 AfterDelete , 檢查某欄位值是否在 TComboBox 內, 在則 DeleteI
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-07-14 11:56:00 IP:210.66.xxx.xxx 未訂閱
tech_state女前輩和懷舊的前輩你們好,    其實前輩們說的方法,是我一開始試的方法, 不過小弟的> > < 我想,是不是因為
系統時間:2024-04-25 17:45:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!