给150分!!菜鸟想问一下listview控件的data属性的事情,请会listview的高手帮忙啊!! ( 积分: 150 )

  • 主题发起人 主题发起人 xiaoxiami0
  • 开始时间 开始时间
X

xiaoxiami0

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TForm1.Button1Click(Sender: TObject);
var
listitem:tlistitem;
begin
listitem:=listview1.Items.Add;
listitem.Caption:='刘德华';
listitem.SubItems.Add('男');
listitem.Data:=pchar(edit1.text); //这个data值是看不到的,等于edit1.text的值
end;

procedure TForm1.ListView1Click(Sender: TObject);
begin
edit2.text:=string(listview1.Selected.data);
end;

触发ListView1Click点击事件时却在edit2里得不到所选中的data值,但如果这么写却可以:
procedure TForm1.Button1Click(Sender: TObject);
var
listitem:tlistitem;
begin
listitem:=listview1.Items.Add;
listitem.Caption:='刘德华';
listitem.SubItems.Add('男');
listitem.Data:=pchar('888'); //这么写,再去触发ListView1Click事件就可以得到data值了
end;

上帝啊,这是为什么啊?
 
Data只能保存integer即指针,所以你输入的是integer就可以正常显示.

解决方法:
private
abc:array [0..100] of string;
var
样你可以显示文字了


procedure TForm1.Button1Click(Sender: TObject);
var
listitem:tlistitem;
begin
listitem:=listview1.Items.Add;
listitem.Caption:='刘德华';
listitem.SubItems.Add('男');
abc[listitem.Index]:=edit1.text;
listitem.Data:=pchar(abc[listitem.Index]);
end;
 
高手,给分了!!
 
后退
顶部