Delphi中如何实现下拉框显示多列?
小的新学Delphi不久,想知道那些可以显示多列的下拉框是如何实现的,比如,我有一部门表,有部门ID有部门名称,我想在一个下拉框中显示两列,部门ID及部门名称,请求各位解答,谢谢(分不够以后补上,呵呵)!
小的新学Delphi不久,想知道那些可以显示多列的下拉框是如何实现的,比如,我有一部门表,有部门ID有部门名称,我想在一个下拉框中显示两列,部门ID及部门名称,请求各位解答,谢谢(分不够以后补上,呵呵)!
adoquery.close;
adoquery.sql.clear;
adoquery.sql.add('select ID+name as idname from 部门表' )
adoquery.open;
for i:=0 to adoquery.RecordCount-1 do
begin
cmb1.Items.Add(adoquery.fieldbyname('idname').AsString);
adoquery.Next;
end;
楼上那个就可以,如果是动态抓取数据的话,可以用Eh,自带的也可以,pagkList
1、自己去重画表格;
2、用第三方控件。
比如,Ehlib或Infopower 系统控件(如wwGrid)。 www.delphifans.com有下载。
另外,可参考:
http://topic.csdn.net/u/20080620/19/69e1ac96-e288-4d3e-91b3-7af6111deda7.html
控件具体使用方法参考其例子或上网找一下,多得不得了。
结分吧。
如果是在窗口上显示,可以用虚拟listview
adoquery.close;
adoquery.sql.clear;
adoquery.sql.add('select ID,name from 部门表' )
adoquery.open;
for i:=0 to adoquery.RecordCount-1 do
begin
cmb1.Items.Add(adoquery.fieldbyname('id').AsString+'-'+adoquery.fieldbyname('name ').AsString);
adoquery.Next;
end;
加上'-' 是爲了讓兩列之間能清楚些,也可以不要'-'
如果要簡單1樓的最簡單了,還有就是自己重寫控件。
with adoquery do
adoquery.close;
adoquery.sql.clear;
adoquery.sql.add('select ID,name from 部门表' )
adoquery.open;
while not adoquery.eof do
begin
cmb1.Items.Addobject(adoquery.fieldbyname('name').AsString,tobject(strnew(pchar(adoquery.fieldbyname('name ').AsString))));
adoquery.Next;
end;
以上只显示名称。但可以获得选中的名称的ID:string(pchar(cmb1.Items.object[cmb1.itemindex]))
Form1.DBLookupComboboxEh1.ListSource:=DataModule1.DataSource1;
Form1.DBLookupComboboxEh1.ListField:='编号;名称';//要显示的列
Form1.DBLookupComboboxEh1.KeyField:='编号';//实际的值
Form1.DBLookupComboboxEh1.ListFieldIndex:=1;//显示的是哪一列,1表示第二列
这样也可以.
17的朋友说,既显示ID,又显示名称有什么,其它我认为有用,因为如果有时要选的内容很多的话,用户也知道自己选择是不是对的,名称有些很相似.
呵呵....总之还是谢谢各位
A001 -- 开发部
A002 -- 业务部这样显示。哈哈
要不就只能 OwnerDraw 了