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

ComboBox可以顯示2個Field的資料嗎?

尚未結案
selina
一般會員


發表:39
回覆:64
積分:20
註冊:2002-12-05

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-20 11:24:24 IP:203.162.xxx.xxx 未訂閱
1.請問有人知道ComboBox可以顯示2個Field的資料嗎? eg: StudentID StudentName 和要如何讀取 ComboBoxField1, Field2的資料呢? 2.DBGrid的datasource可以是自已declare的array嗎?可不可以教小妹一下做法呢?謝謝?
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-20 12:01:57 IP:211.74.xxx.xxx 未訂閱
1. ComboBox1.Items.add(Query1.FieldByName('StudentID').Vlaue ',' Query1.FieldByName('StudentName').Vlaue); //如何取得值 procedure TForm1.Button1Click(Sender: TObject); var my: string; my2: TStringList; begin my2:= TStringList.Create ; my:=ComboBox1.Text; my2.Text := StringReplace(my,',',#13#10,[rfReplaceAll, rfIgnoreCase]); showmessage(my2[0]);//'StudentID'的值 showmessage(my2[1]);//'StudentName'的值 my2.Free; end; 發表人 - chih 於 2003/03/20 12:40:11
william
版主


發表:66
回覆:2535
積分:3048
註冊:2002-07-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-20 12:08:15 IP:147.8.xxx.xxx 未訂閱
引言: 1.請問有人知道ComboBox可以顯示2個Field的資料嗎? eg: StudentID StudentName 和要如何讀取 ComboBoxField1, Field2的資料呢? No, you need to 'create' a new field (e.g. calculated field) yourself. 2.DBGrid的datasource可以是自已declare的array嗎?可不可以教小妹一下做法呢?謝謝? No, an alternate way is to use TClientDataset. A search on "clientdataset" should give you some hints. href="http://bdn.borland.com/delphi/database/0,1418,10004,00.html">http://bdn.borland.com/delphi/database/0,1418,10004,00.html for clientdataset. Here is an introduction: http://bdn.borland.com/article/0,1410,28876,00.html
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-20 12:36:56 IP:218.16.xxx.xxx 未訂閱
1. ComboBox 本身很難有效的顯示2個 fields,即使用 filed1.AsString field2.AsString , 排列不好看且讀回也困難。 若你的用處是 lookup , 可考慮用 DBLookUpComboBox : Query1 : Table : TestResult Field : TestID, StudentID, Marks,.... Query2 : Table : Student FIeld : StudentID, StudentName,.... DataSources1 -> Query1 DataSources2 -> Query2 DBLookUpComboBox DataSources : DataSources1 DataField : StudentID ListSources : DataSources2 KeyField : StudentID ListField : StudentName;StudentID (或 StudentID;StudentName) 當使用時,DBLookUpComboBox 的顯示只會示出 ListField 的第一項,但當使用者按下 ▼ 時,下面列出的就會整齊的列出 StudentName | StudentID。使用者選定後,選定的 StudentID 自動會放入 Query1 的 StudentID 欄。 2. 使用 TClientDataSet 會比較好 不連結數量庫而使用 TClientDataSet a. 雙擊 該 ClientDataSet b. 右擊,選 New Field 來加入欄位 c. 加入所有欄位後右擊該 ClientDataSet, 選 Create DataSet 即可 d. 將 dbGrid 連到這個 ClientDataSet, 並如一般 table/query 使用。 你可參考我在 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=27190 的例子。
selina
一般會員


發表:39
回覆:64
積分:20
註冊:2002-12-05

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-20 12:53:43 IP:203.162.xxx.xxx 未訂閱
Hi Justmade, 因為當使用者選著下拉選單資料後,還要進過檢查是否要儲存,才會儲入資料庫中,所以這樣需要用到TLookupComboBox, 而且我不會用LookupComboBox說
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-03-20 13:50:56 IP:218.16.xxx.xxx 未訂閱
不會立即儲存的,就如你在 dbEdit 修改了東西一樣,要 post 才儲存。不會用也沒問題,按我上面的設定就可以了。    但若你完全不用感知元件來修改資料 (即用 Edit 不用 TEdit),那便沒辦法達到這個方便又好看的較果了,你可考慮用 :
while not studTable.eof do
begin
  ComboBox1.Items.add(Format('%5s|%s',[StudTable.FieldByName('StudentID').AsString,
    StudTable.FieldByName('StudentName').AsString]); // '%5s|%s' 的 5 指 5個位,可改
  studTable.next;
end;
這會排得好看一點。 取資料時你可用 Trim(Copy(ComboBox1.Text,1,5)) // 5 跟上面的同 Copy(ComboBox1.Text,7,10) // 10 應改為 StudentName 的欄寬 來分別取得 StudentID, 及 StudentName
selina
一般會員


發表:39
回覆:64
積分:20
註冊:2002-12-05

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-03-20 15:10:28 IP:203.162.xxx.xxx 未訂閱
hi Justmade 可以再問你一個問題嗎? 目前照你的方法寫而以2Field了,可是藍色的選項一直停在第一行沒辦去選擇其化行 謝謝~
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-03-20 15:50:19 IP:218.16.xxx.xxx 未訂閱
你是指 DbLookUpComboBox 嗎? 若是的話這應該是因為 : 1. Query1 的 RequestLive 是 false (或 Table1 的 ReadOnly 是 True) 以致數據不能被修改 或 2. DataSources1 的 AutoEdit 是 false 以致元件不能自動進入 Edit 模式。 若你有其他原因要這樣設定,可考慮 Combo Box 那個方法,另補充一點要用固定字寬字形(如 Courier)才會整齊。 若覺得 | 兩邊太緊也可將 '%5s|%s' 改為 '%5s | %s' 。
系統時間:2024-06-28 17:54:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!