可以使用AddObject(str1,TObject(str2))吗?解决思路
可以使用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]);//小四
在网上查到相关的资料,如果把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]);//小四