读书人

可以使用AddObject(str1,TObject(str2

发布时间: 2012-03-08 13:30:13 作者: rapoo

可以使用AddObject(str1,TObject(str2))吗?
在网上查到相关的资料,如果把ID,CAPTION加入到ComboBox中,可以采用 ComboBox1.Item.AddObject(ID, TObject(CAPTION))方式操作.但是如果使用下面的代码showmessage(String(ComboBox1.Items.Objects[ComboBox1.ItemIndex]))
我却获取不到CAPTION值.或者是空值,或者出现错误提示.

为了解决问题,自定义了一个的类:

type
TInfo = class(TObject)
ID:String;
end;
然后加入代码改为:

AInfo := TInfo.Create;
AInfo.ID := 'xxxx';
ComboBox1.Items.AddObject(ID, AInfo);
上面三行代码放到一个循环体内.

获得所选的ID值
showmessage(TInfo(ComboBox1.Items.Objects[ComboBox1.ItemIndex]).ID)
这种方式可以获得所选的ID值.

不过由于加入了对象,还需要释放它们.
在FORM的OnDestroy中加入:

for i := 0 to ComboBox1.Items.Count - 1 do ComboBox1.Items.Objects[i].Destroy;

我现在想问, ComboBox1.Items.AddObject(str1, TObject(Str2)) 这种方式可行不?

[解决办法]
不可行,除非Str2是全局的
[解决办法]
var
sList:TStringList;

//添加值
ComboBox1.Items.Clear;
sList:=TStringList.Create;
slist.add('小三');
sList.Add('小四');
ComboBox1.Items.AddObject('小五',sList);//显示的是小五,还有小三,小四在背后

//取值:
slist:=TStringList(ComboBox1.Items.Objects[ComboBox1.ItemIndex]);
showmessage(ComboBox1.Text); //小五
showmessage(sList.Strings[0]);//小三
showmessage(sList.Strings[1]);//小四

读书人网 >.NET

热点推荐