怎么得到 ShellListView 中被选中的文件的个数?(50分)

  • 主题发起人 主题发起人 caoliu
  • 开始时间 开始时间
C

caoliu

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么得到 ShellListView 中被选中的文件的个数?
谢谢!!!
 
跟tlistview一样的
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
j:integer;
listitem:Tlistitem;
begin
j:=0;
for i:=0 to ShellListView1.items.count-1 do
begin
listitem:=ShellListView1.items;

if listitem.selected=true then
j:=j+1;
end;
showmessage(inttostr(j))
end;
 
接受答案了.
 
procedure TForm1.FormCreate(Sender: TObject);
var
select1:Tlistitem;
i,j:integer;
begin
j:=0;
for i:=0 to ShellListView1.Items.Count-1 do
begin
select1:=ShellListView1.items;
if select1.selected=true then
begin
j:=j+1;
StatusBar1.Panels[0].Text:=inttostr(j)+'个对象';
end
else
[blue]StatusBar1.Panels[0].Text:=inttostr(i+1)+'个对象';[/blue]
end;
请看一下:不管我选不选中ShellListView中的文件,只执行else下的语句?

 
在formcreate事件中shelllistiview节点还没被选中(即select1.selected=false)
在循环语句中执行到i=ShellListView1.Items.Count-1 时 ,当然执行else下的语句。
改了代码如下(最好在ShellListView1的onChange事件中,不要在formcreate)
procedure TForm1.FormCreate(Sender: TObject);
var
select1:Tlistitem;
i,j:integer;
begin
j:=0;
if shelllistview1.selcount=0 then //如果没有选中
begin
// ShellListView1.selecteall;全部选择
StatusBar1.Panels[0].Text:=inttostr(ShellListView1.Items.Count)+'个对象';
end
else
for i:=0 to ShellListView1.Items.Count-1 do
begin
select1:=ShellListView1.items;
if select1.selected=true then
begin
j:=j+1;
StatusBar1.Panels[0].Text:=inttostr(j)+'个对象';
end
end;
end;
 
后退
顶部