输入的数据来源于一个表的一列,但此列是代码,只显示此列无法让用户明白意思,故要显示相应列,如何在ComboBox下拉选项中显示多列数据呢?

解决方案 »

  1.   

    楼上说得没错
    或者你自己用一个grid等来模拟,
    或者自己在combobox draw中画一条线....不过还是直接 列一+列二 字符串相加即简单又达到你的要求
      

  2.   

    列一+列二是可行的,使用'|'隔开。例如:001|某公司首先在窗体显示的时候生成ComboBox的下拉项:
    begin
      ComboBox1.Clear;
      ADOQuery1.Open;
      ADOQuery1.First;
      While not ADOQuery1.EOF do
      begin
        ComboBox1.Items.Append(ADOQuery1['字段1']+'|'+ADOQuery1['字段2']);
        ADOQuery1.Next;
      end;
      ADOQuery1.Close;
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    var
      itm:Tstringlist;
    begin
       itm:=tstringlist.Create;
       itm.Delimiter:='|';
       itm.DelimitedText:=ComboBox1.Text ;
       Edit1.Text:=itm.strings[0];
    end;别忘了早点结帖。:P
      

  3.   

    你可以把
    var
      itm:Tstringlist;
    begin
       itm:=tstringlist.Create;
       itm.Delimiter:='|';
       itm.DelimitedText:=ComboBox1.Text ;
       Edit1.Text:=itm.strings[0];
    end;
    这段代码放在ComboBox1的OnClick事件中。
      

  4.   

    你用DBLookupCombox控件吧
    在ListField中用;号分格不同字段
      

  5.   

    用 TDBLookupComboBox控件就行了
      

  6.   

    这个可以这么来做呀,
    把二个列的数据变成一个规则的串用'|'分隔相加。注意要把这个串的长度做成定长的,不够的补空格。
    这样就可以成为这个效果。
    001|AAAA
    002|  BB
    003|  CC
    004|DDDD
    这是显示的问题。还有就是如何取值那要你写一个 function 把这个.text值给分开。这样就可以放到你的数据库中了。
    还有是就是用一个控件可以实现。
      

  7.   

    因为字段是变长的,所以用“|”分隔会很难看的,不管用什么分隔都会很难看的
    最好能有dbgrid那种显示效果
      

  8.   

    TDBLookupComboBox就有那种效果啊,你试着用一下嘛,有意想不到的收获
      

  9.   

    TDBLookupComboBox设置左右滚动是哪个属性?另能不能设置各列的宽度,因为有一列太宽了,不好看
      

  10.   

    ComBobox,其下拉框的宽度就是其本身的宽度吗,不能改吗?
    DBLookupListBox不能实现下拉的效果,且只能上下滚动不能左右滚动吗?
      

  11.   

    DBLookupListBox 相关联的DataSet 设置其中Field的Displaywidth 能设置其中每列的列宽
    如 query1.Fieldbyname('aaa').Displaywidth = 15;
    设置DBLookupListBox 的DropDownwidth 能设置下啦列表的宽度,能超过DBLookuplistbox
    自身宽度,我想这先功能应该够用了吧