TListItem的问题求解 ( 积分: 50 )

  • 主题发起人 主题发起人 randyamis
  • 开始时间 开始时间
R

randyamis

Unregistered / Unconfirmed
GUEST, unregistred user!
function sFindFile(aPath:String;attr:DWORD):TListItems;
var FSearchRec, DSearchRec: TSearchRec;
FindResult: integer;
TL:TListItem
s:string;
begin
FindResult := FindFirst(APath + AFileName, attr, FSearchRec);
try
while FindResult = 0 do
begin
TL:=TListItem.Create(Result);
TL:=Result.Add; //这一段出错
if FSearchRec.Attr or faDirectory=FSearchRec.Attr then
TL.Caption:= 'A'
else
TL.Caption:= 'B'

end;


这只是代码的一部分,不是完整的,我的想法是查找文件,然后结果是TListitems,但是在
TL:=Result.Add;
这一句就出错了,问题是什么呢?

另外,把一个TlistItem加入到TListItems里面(假设A),然后把多个A添加到另一个TListItems里,(假设B),用什么方法呢?
 
function sFindFile(aPath:String;attr:DWORD):TListItems;
var FSearchRec, DSearchRec: TSearchRec;
FindResult: integer;
TL:TListItem
s:string;
begin
FindResult := FindFirst(APath + AFileName, attr, FSearchRec);
try
while FindResult = 0 do
begin
TL:=TListItem.Create(Result);
TL:=Result.Add; //这一段出错
if FSearchRec.Attr or faDirectory=FSearchRec.Attr then
TL.Caption:= 'A'
else
TL.Caption:= 'B'

end;


这只是代码的一部分,不是完整的,我的想法是查找文件,然后结果是TListitems,但是在
TL:=Result.Add;
这一句就出错了,问题是什么呢?

另外,把一个TlistItem加入到TListItems里面(假设A),然后把多个A添加到另一个TListItems里,(假设B),用什么方法呢?
 
我的问题很难吗?还是太幼稚了?
 
Result 没有赋值的?
 
應該事先創建吧
 
Delphi只是替你这样定义了result:
Result: TListItems;

但create这个对象还得你自己来做。
 
TL:=TListItem.Create(self);
 
这段代码还是出错的,不知道该怎么用。

procedure TForm1.Button1Click(Sender: TObject);
var tl:Tlistitem;tls:Tlistitems;
begin
tls:=TListItems.Create(nil);
tl:=TListitem.Create(tls);
tl:=tls.Add;
tl.Caption:='test';
tl.SubItems.Add('subtest');
listview1.Items.Assign(tls);
end;
 
你用的Tlistview吧
http://w2083.s4.come.com.cn/dispbbs.asp?boardID=16&ID=134
 
其实我想搞明白TListItem和TListItems该怎么配合用
 
调试通过:
var tl:Tlistitem;tls:Tlistitems;
begin
tls:=TListItems.Create(ListView1);//nil改为ListView1
//tl:=TListitem.Create(tls)
//注释此句
tl:=tls.Add;
tl.Caption:='test';
tl.SubItems.Add('subtest');
//listview1.Items.Assign(tls);//注释此句
end;
个人理解TListItems只能从属于TListView
 
你可以自己实现一个类似的Class
但TListItems确实是为TListView设计的
 
to tonmy:

Tlistitems可否单独使用?
我主要是不想直接操作listview,是想把tlistitem加到tlistitems之后做处理,然后再传listview
 
这是TListItems帮助上的原文:TListItems only lists the main items in the list view.

假如你一定要单独对Tlistitems进行操作,可以在后台动态创建一个TListView,处理之后,再传到外面的listview. 程序如下:
var
tl:Tlistitem;
tls: TListItems;
tlv:TListView;
begin
tlv := TListView.Create(nil);
tlv.Visible := False;
tlv.Parent := Self
//这句一定要,否则会出错
tls := tlv.Items;
tl := tls.Add;
tl.Caption:='test';
tl.SubItems.Add('subtest');
listview1.Items.Assign(tls);
tlv.Free;
end;
 
非常可笑的用法。
TL:=TListItem.Create(Result);
TL:=Result.Add
//这一段出错
你应该传入一个ListView对象,直接加到ListView.Items中不就得了?

TListItem、TListItems本来就是专门为TListView组件设计的,访问TListItem的属性、方法时,大多都是通过Windows API或ListView消息实现的,不和TListView组件配合使用,我实现看不出有任何使用它的目的、理由。
 
接受答案了.
 
后退
顶部