列一+列二是可行的,使用'|'隔开。例如: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
你可以把 var itm:Tstringlist; begin itm:=tstringlist.Create; itm.Delimiter:='|'; itm.DelimitedText:=ComboBox1.Text ; Edit1.Text:=itm.strings[0]; end; 这段代码放在ComboBox1的OnClick事件中。
你用DBLookupCombox控件吧 在ListField中用;号分格不同字段
用 TDBLookupComboBox控件就行了
这个可以这么来做呀, 把二个列的数据变成一个规则的串用'|'分隔相加。注意要把这个串的长度做成定长的,不够的补空格。 这样就可以成为这个效果。 001|AAAA 002| BB 003| CC 004|DDDD 这是显示的问题。还有就是如何取值那要你写一个 function 把这个.text值给分开。这样就可以放到你的数据库中了。 还有是就是用一个控件可以实现。
或者你自己用一个grid等来模拟,
或者自己在combobox draw中画一条线....不过还是直接 列一+列二 字符串相加即简单又达到你的要求
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
var
itm:Tstringlist;
begin
itm:=tstringlist.Create;
itm.Delimiter:='|';
itm.DelimitedText:=ComboBox1.Text ;
Edit1.Text:=itm.strings[0];
end;
这段代码放在ComboBox1的OnClick事件中。
在ListField中用;号分格不同字段
把二个列的数据变成一个规则的串用'|'分隔相加。注意要把这个串的长度做成定长的,不够的补空格。
这样就可以成为这个效果。
001|AAAA
002| BB
003| CC
004|DDDD
这是显示的问题。还有就是如何取值那要你写一个 function 把这个.text值给分开。这样就可以放到你的数据库中了。
还有是就是用一个控件可以实现。
最好能有dbgrid那种显示效果
DBLookupListBox不能实现下拉的效果,且只能上下滚动不能左右滚动吗?
如 query1.Fieldbyname('aaa').Displaywidth = 15;
设置DBLookupListBox 的DropDownwidth 能设置下啦列表的宽度,能超过DBLookuplistbox
自身宽度,我想这先功能应该够用了吧