如何给ComboBox.Items里面添加个属性?(100分)

  • 主题发起人 主题发起人 cui27
  • 开始时间 开始时间
C

cui27

Unregistered / Unconfirmed
GUEST, unregistred user!
是这样的我想在ComboBox.Items里面显示值与实际值不一样。
比如ComboBox.Items.text=姓名
ComboBox.Items.ID=一个唯一编号。
就如同PB中的下拉数据窗口。
using System;
using System.Windows.Forms;
public class ComboBoxEx : System.Windows.Forms.ComboBox
{
}
public class ItemsEx : System.Windows.Forms.ComboBox.ObjectCollection
{

private string id;
public string ID
{
get{return id;}
set{id=value;}
}

}
报错: 重载“ObjectCollection”方法未获取“0”参数
Items是个集合其类是ObjectCollection。
帮助上说。如果不将此类的实例与 ComboBox 控件相关联,则不能创建该实例。
问题2:
在DataGrid里面如何定位一行记录。
就是怎样获取被选中的记录?
 
以下两个方法可以保存ID显示名称
procedure Tfrm_root.InitCombobox(comboboxname:TComboBox;Qurryname: TQuery;
strsql,fname,fid: string;hasall:boolean);
var
str:string;
i:integer;
begin
str:=strsql;
OpenQurry(Qurryname,str);
if Qurryname.RecordCount<=0 then
exit;
if hasall then
comboboxname.Items.AddObject('全部',TObject(0));
with Qurrynamedo
begin
First;
while not Eofdo
begin
comboboxname.Items.AddObject(fieldbyname(fname).AsString,TObject(fieldbyname(fid).AsInteger));
Next;
end;
end;

function Tfrm_root.getComboboxID(comboboxname: TComboBox): integer;
begin
if comboboxname.ItemIndex<0 then
begin
result:=-1;
exit;
end;
result:=integer(comboboxname.Items.Objects[comboboxname.ItemIndex]);
end;
comboboxname.ItemIndex:=0;
end;
 
楼上老兄,这个好像是delphi的实现方式吧
是不是定义一个myitem对象
myitem=combox.items.add()
再给myitem赋属性值
没有实现过,猜想的
 
没有必要重载去新写一个控件
你可以这样
COMBOBOX.ITEMS.ADD('要显示的值'+' $'+'要取得的值');
反正COMBOBOX显示不够长,看不到,
取值的时候用POS和COPY函数就可以了
至于第二个问题:
DBGRID.DATASOURCE.DATASET.FIELDBYNAME('FIELDSNAME').VALUE
 

Similar threads

回复
0
查看
988
不得闲
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
1K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
911
SUNSTONE的Delphi笔记
S
后退
顶部