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

請教一個ComboBox中Item的代碼問題

尚未結案
chateau_frank
一般會員


發表:20
回覆:32
積分:10
註冊:2005-07-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-07-11 16:45:24 IP:211.20.xxx.xxx 未訂閱
各位大大好 假設要寫五個國家分別為英國、法國、德國、義大利、瑞士 她們的代碼分別為GB,F,D,I,CH 用QUERY元件從資料表叫出排在COMBOBOX的ITEMS內 只顯示出中文國名,代碼有跟著來,但是不顯現 並要在COMBOBOX的CHANGE事件中將代碼送出到別的程序 請問這兩個問題該如何解?謝謝您
chateau_frank
一般會員


發表:20
回覆:32
積分:10
註冊:2005-07-07

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-07-11 16:51:31 IP:211.20.xxx.xxx 未訂閱
這是我的程式碼,只會寫到這樣而已 < class="code"> procedure TForm1.ComboBox1Change(Sender: TObject); var aaa : string; begin with AdoQuery1 do begin aaa := IntToStr(ComboBox1.ItemIndex 1); Close; Sql.Clear; Sql.Add('select Distinct * from country where'); Sql.Add('continentcode = ''' aaa ''''); Open; ComboBox2.Items.Clear; If AdoQuery1.RecordCount <> 0 then ComboBox2.Text := '請選擇國家'; begin While Not AdoQuery1.Eof do begin ComboBox2.Items.Add(AdoQuery1.Fields[1].AsString); AdoQuery1.Next; end; end; end; end; 發表人 - chateau_frank 於 2005/07/11 16:58:58
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-07-11 17:20:32 IP:61.222.xxx.xxx 未訂閱
如果是資料感知元件,為何不用 DBLookupComboBox 並請說明 ComboBox1 與 ComboBox2 對應關係。 不是很瞭解你要表達的意思? ~~~~~~~~~~~ 難得聰明,常常糊塗。 ~~~~~~~~~~~
chateau_frank
一般會員


發表:20
回覆:32
積分:10
註冊:2005-07-07

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-07-11 17:54:55 IP:211.20.xxx.xxx 未訂閱
Hi Wameng兄 我的combobox1是用輸入的,依洲別為條件,先選五大洲之一 再由combobox2依combobox1的選擇條件,由AdoQuery1下sql叫出國家資料表屬於該洲的國家名單與代碼(countrycode) 再由combobox2再選擇國家名單,帶著countrycode去給Adoquery1,再叫出城市資料給dbgrid表 想請問的是從國家資料表叫出的欄位,可否排在combobox2內同一排items,也就是欄位countryname與欄位countrycode一起,但countrycode並不顯示出來 user選擇國家後,由combobox2事件將countrycode送出給AdoQuery1下sql給城市資料表 希望以上的說明能夠很清楚的讓大大知道我想要做啥,先謝謝您的幫忙喔
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-07-11 19:11:22 IP:219.86.xxx.xxx 未訂閱
有兩種方式可以讓combobox2有兩個值。 第一種方式是利用 TStrings 的 AddObject 方式。 第二種方式宣告 一 陣列數組。    如果資料不多,可用第二種方式簡單。
  ....
  private
    countrycodes : Array of String;
  end;
  ....
原修改如下
procedure TForm1.ComboBox1Change(Sender: TObject);
var 
  aaa : string;
  I :integer;
begin
  with AdoQuery1 do
    begin
      aaa := IntToStr(ComboBox1.ItemIndex 1);
      Close;
      Sql.Clear;
      Sql.Add('select Distinct * from country where');
      Sql.Add('continentcode = ''' aaa '''');
      Open;
      ComboBox2.Items.Clear;
      if RecordCount>0 then
      begin
        SetLength(countrycodes,RecordCount);
        While Not Eof do
        begin
          I := ComboBox2.Items.Add(AdoQuery1.Fields[1].AsString);
          countrycodes[I] := Fieldbyname('countrycode').AsString;
          Next;
        end;
      end else ComboBox2.Text := '請選擇國家';
    end;
end;
~~~~~~~~~~~ 難得聰明,常常糊塗。 ~~~~~~~~~~~
chateau_frank
一般會員


發表:20
回覆:32
積分:10
註冊:2005-07-07

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-07-12 10:35:43 IP:211.20.xxx.xxx 未訂閱
Dear Wameng 成功了,除了感激,還是感激,謝謝解惑
系統時間:2024-06-25 14:06:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!