我试着写了一段,好使的。
var a , b: integer;
begin
a := 10;
ListView1.Columns.Add;
ListView1.Columns[0].Caption := 'aa';
ListView1.Columns.Add;
ListView1.Columns[1].Caption := 'bb';
ListView1.Items.Add;
ListView1.Items[0].Caption := 'dfdfdf';
ListView1.Items[0].SubItems.Append('sdfsdfs');
ListView1.Items[0].Data := @a;
b := integer(ListView1.Items[0].Data^);
showmessage(inttostr(b))
end;
我想会不会这样,你循环增加的item,就应该给每个item.data赋相应的值。
看看用for循环如何?每次循环给a赋值;
ListView1.Items[i].Data := @a;//这样;
var a , b: integer;
begin
a := 10;
ListView1.Columns.Add;
ListView1.Columns[0].Caption := 'aa';
ListView1.Columns.Add;
ListView1.Columns[1].Caption := 'bb';
ListView1.Items.Add;
ListView1.Items[0].Caption := 'dfdfdf';
ListView1.Items[0].SubItems.Append('sdfsdfs');
ListView1.Items[0].Data := @a;
b := integer(ListView1.Items[0].Data^);
showmessage(inttostr(b))
end;
我想会不会这样,你循环增加的item,就应该给每个item.data赋相应的值。
看看用for循环如何?每次循环给a赋值;
ListView1.Items[i].Data := @a;//这样;
解决方案 »
- 还是关于令人头疼的托盘:
- 各位大哥,一个考勤问题,小弟非常迷茫,在此请教!(有比较好的答案就揭贴)
- 两路输入视频采集卡的问题,急!!
- 在internet通过udp协议通讯,拔号,宽带间没有问题,当采用移动无线上网时,存在问题...详情请进
- 关于socket的无知,请大家指教
- 寻找高手!!一个有难度的问题。事务处理!
- 保存选中的文件到数据库
- 数据库与delphi相结合的问题
- 为了实现检查网络上是否还有打开的计算机,我想通过ping命令来实现.但不知道怎样实现.敬请各位相告.或是友什么其他的好办法解决??请详细点!!!!
- 我是菜鸟牛虻,我又碰到问题了,我用query查询paradox,但除了主键可以查询外,别的都提示:invalid field name 字段名 ,怎么回事呀?
- 如何设置treeview中右键显示popupmenu.
- 进行合法的数据验证
pData: PInteger;
begin
New(pData);
ListView1.Items[i].Data := pData;
end;在 ListView 的 OnDeletion 事件中别忘了释放它:
procedure ListView1Deletion(Sender: TObject; Item: TListItem);
var
pData: PInteger;
begin
if Assigned(Item.Data) then
begin
pData := Item.Data;
Item.Data := Nil;
Dispose(pData);
end;
end;
Item.SubItems.Add(Adodataset1.FieldByName('爱号').Value);
假设填写的为3,则以后取ListView1.Items[3].Data 便行。
pData: PInteger;// ... ...//从表中取数后
with ListView1 do
begin
Item:=Items.Add;
Item.Caption:=Adodataset1.FieldByName('姓名').Value;
Item.SubItems.Add(Adodataset1.FieldByName('年龄').Value);
Item.SubItems.Add(Adodataset1.FieldByName('爱号').Value); New(pData);
pData^ := Adodataset1.FieldByName('学号').Value
Item.Data := pData;
end;当单击时取出的学号不对
procedure TForm1.ListView1Change(Sender: TObject; Item: TListItem;
Change: TItemChange);
var
pData: PInteger;
begin
pData := Item.Data;
Application.MessageBox(Pchar(inttostr(pData^)),'',mb_ok);
end;这样改即可,别忘了在 OnDeletion 事件中加释放数据的过程。