如图,我想将数据库表中的某字段的所有内容,显示到combobox的列表中,用adoquery建立了数据连接,然后用以下代码procedure Tuser.PageControl1Change(Sender: TObject);
begin
adoquery.Active:=true;
if adoquery.RecordCount> 0 then
begin
combobox1.Items.Add(adoquery.fieldbyname('username').AsString);
end;
end;
但是实现不了,不能显示username字段的所有内容
希望各位老师帮忙解答,谢谢!

解决方案 »

  1.   

    你可以使用DBLookupComboBox控件,设置listsource和listfield
      

  2.   

    谢谢~除了用DBLookupComboBox这个方法,其它还有什么方面没?比如代码添加....
      

  3.   


    procedure Tuser.PageControl1Change(Sender: TObject);
    begin
      adoquery.Active:=true;
      adoquery.first;
      while not adoquery.eof do
      begin
        combobox1.Items.Add(adoquery.fieldbyname('username').AsString);
        adoquery.next;
      end;
    end;
      

  4.   


    adoquery.First;
    combobox1.Text :=adoquery.fieldbyname('username').AsString;
    for i:=0 to adoquery.RecordCount -1 do
    begin
      combobox1.Items.Add(adoquery.fieldbyname('username').AsString);
      adoquery1.Next;
    end;
      

  5.   

    谢谢各位大哥,实现了!!!但好像写在pagecontrol 页面的onchange事件上不行,切换一下面板就出多出几个重复内容来
    我把代码加入到了窗体的create事件中了!
      

  6.   

    楼主少了一个adoquery的循环,adoquery.next没有这个代码只能添加一个数据。
    重复问题可以增加一句话:
    procedure Tuser.PageControl1Change(Sender: TObject);
    begin
      adoquery.Active:=true;
      adoquery.first;
      combobox1.items.clear;
      while not adoquery.eof do
      begin
        combobox1.Items.Add(adoquery.fieldbyname('username').AsString);
        adoquery.next;
      end;
    end;
      

  7.   

    又出问题了!现在用上面两位的代码,显出来了所以的字段内容,但是却不能即时更新,比如我向那个字段中添加了一些新数据,这个combobox不能更新呀!相关添加username字段数据表的代码是这么写的!procedure Tuser.Button1Click(Sender: TObject);
    begin
     adoquery1.Insert;
     if (Trim(edit2.Text)='') or  (Trim(edit3.Text)='')or (Trim(edit4.Text)='') or  (Trim(edit5.Text)='') then
       begin
       showmessage('信息不完整!');
       exit
       end
       else
       ADOQuery1userID.Value:=edit2.text;
       adoquery1username.value:=edit3.Text;
       adoquery1sex.Value:=edit4.text;
       adoquery1tel.Value:=edit5.Text;
       edit2.Text:='';
       edit3.text:='';
       edit4.Text:='';
       edit5.Text:='';
    end;