有关ListView的问题(100分)

  • 主题发起人 主题发起人 康夫
  • 开始时间 开始时间

康夫

Unregistered / Unconfirmed
GUEST, unregistred user!

如何使ListView中的每一项与某一个值相关联,当DblClick的时候,我能够很容易的
得到对应的这个值
 
listview1.items.data

参见: TListItem.data
 
可否详细一些
 
TListItem.data:pointer;
是一个指针类型的变量,在添加一个item的时候可以将任何类型的数据赋值给
data成员属性,用的时候可以通过强制类型转换的方法,比如:

var ss:pchar;ll:tlistitem;cc:string;
//初始化,赋值
ll:=listview1.items.add;
ll.caption:='111';
ss:=stralloc(100);
strcopy(ss, '222');
ll.data:=ss;
...

//使用
if listview1.items.caption='111' then
cc:=strpas(pchar(listview1.items.data));

同样,你也可以对data赋其他的值,比如:
listview1.items[0].data:=form1;
listview1.items[1].data:=form2;
listview1.items[2].data:=form3;
在ondblclick中响应:
tform(listview1.selected.data).show;
 
其实 TListItem 有一个属性可以用来存放信息
SubItems ,这是一个TStrings;

//for example: write some infomation into a listitem

Var
Item: TListItem;
S: String;

begin
Item:=ListView.ItemFocused; //get the focused item;
..
..
Item.SubItems.clear;
Item.SubItems.add('DATA');
..
..
S:=Item.SubItems[0];//S='DATA';
..
..
end;




 

var
Num:integer;
begin
listView1.Items.Clear;
Num:=1;
Listview1.Items.BeginUpdate;
WHILE Not Dm1.Q_inf1.Eof DO BEGIN
listView1.Items.Add;

ListView1.Items[ListView1.Items.Count-1].SubItems.Add(inttostr(Num));
ListView1.Items[ListView1.Items.Count-1].SubItems.Add(dm1.Q_inf1.fieldbyname('StationID').asstring);
IF Dm1.Q_inf1.fieldbyname('NowDate').asString=''
then ListView1.Items[ListView1.Items.Count-1].SubItems.Add('')
else ListView1.Items[ListView1.Items.Count-1].SubItems.Add(FormatDateTime('YYYY-MM-DD',dm1.Q_inf1.fieldbyname('NowDate').asDateTime));

num:=num+1;
Dm1.Q_inf1.Next;
END;
Listview1.Items.EndUpdate;
 
接受答案了.
 
后退
顶部