关于ListBox1.Items.AddObject()的问题,会用的进来看看!! ( 积分: 100 )

  • 主题发起人 主题发起人 aijpccjcy
  • 开始时间 开始时间
A

aijpccjcy

Unregistered / Unconfirmed
GUEST, unregistred user!
在数据库中有ID,NAME俩个字段,我想在一个ListBox中添加这条数据,一个显示数据Name,一个在后台保存ID,想用到ListBox1.Items.AddObject()的属性~
该怎么写?各位大侠帮着解答一下~谢谢~~
 
可以定义一个继承自TObject的类,其中加上些你要的属性,然后就可以用AddObject了。
 
如果你ID是Integer,可以如下使用

with Table1 do
ListBox1.Items.AddObject(FieldByName('NAME').AsString,TObject(FieldByName('ID').AsInteger));

读出:
Integer(ListBox1.Items.Objects[0])
 
2楼那位兄弟,我还想问一下,我把ID存到Tobject中,我想用Showmessage()显示出来,可是总是提示错误,我可以看到存在里面的数据
showmessage(string(listbox1.items.objects[0]));
这样写总提示错误,有什么方法可以看到那里面的数据吗?
 
string(listbox1.items.objects[0])这种用法不对,因为listbox1.items.objects[0]只是一个指针,存Integer是可以的,但怎么可能存的下string那么长的数据呢。
正确的做法
TMyObj=Object
Id: Integer;
Name: String;
end;
var
MyObj: TMyObj;
begin
MyObj := TMyObj.Create;
MyObj.Name := 'a';
ListBox1.Items.AddObject(MyObj.Name,MyObj);
ShowMessage(TMyObj(listbox1.items.objects[0]).Name);
end;
 
3楼的仁兄 请问一下 TMyObj=Object
在什么地方定义???
 
showmessage(IntToStr(Integer((listbox1.items.objects[0]))));
 
先定义一个结构
tmpr = record
ID: string;
Name: string
end; ptmp = ^tmpr;

p: ptmp;
new(p);
p.ID := 'ID';
p.Name := 'Name';

listbox1.items.addobject(p.ID,TObject(p));

使用之后记得dispose(p);
 
不好意思,笔误
type
TMyObj=class
Id: Integer;
Name: String;
end;
 
多人接受答案了。
 
后退
顶部