(1) integer 于 Object
cmbBox.Items.AddObject(A_Value,pointer(I_Value));
I_Ret:=cmbBox.itemindex;
I_perID:=integer(cmbBox.Items.Objects[I_Ret]);
(2) string 于 Object
A_Code:='custID';
ComboBox1.Items.AddObject('客户ID',TObject(A_Code));
A_Value:=string(ComboBox1.Items.Objects[ComboBox1.ItemIndex]);
上面的情况在一般下使用是可以的。但是当A_Code不是直接赋值,而是通过其他途径,比如数据库中取出或者其他任意函数构成的,比如A_Code:='a'+'b';这样就得不到A_Value了,或者是得到一串乱码。这是什么原因呢?
之所以出现那种情况,可能是因为在TObject( 某对象)时,该对象要是实体,不能是地址指针或虚对象。所以可以使用如下解决方法。
SL:= TStringList.Create;
SL.Add(inttostr(i 3));
combobox1.Items.AddObject('中国',TObject(SL[0]));
SL.Add(inttostr(i 6));
combobox1.Items.AddObject('美国',TObject(SL[1]));
SL.Add(inttostr(i 6))
combobox1.Items.AddObject('德国',TObject(SL[2]));
这样,在combox1中就可以得到正确的值了。直接使用
A_Value:=string(ComboBox1.Items.Objects[ComboBox1.ItemIndex]);就可以得到值了。