如题。。
在D7环境下,响应双击事件时,跟踪了下,在获取文件名的时候出错,接下来后面的处理就不能做了
试了几种方法无解中。。
//ItemIndex = -1...
ShellListView1.Folders[ShellListView1.ItemIndex].PathName;//selected 无效错误
if not shelllistview1.Folders[ShelllistView1.Selected.index].IsFolder then 。ShellListView1.SelectedFolder.PathName;这个也不行
在D7环境下,响应双击事件时,跟踪了下,在获取文件名的时候出错,接下来后面的处理就不能做了
试了几种方法无解中。。
//ItemIndex = -1...
ShellListView1.Folders[ShellListView1.ItemIndex].PathName;//selected 无效错误
if not shelllistview1.Folders[ShelllistView1.Selected.index].IsFolder then 。ShellListView1.SelectedFolder.PathName;这个也不行
第二次就出现异常了貌似网上说ShellListView这个组件好像不咋的。。
先吃饭,回来再接着问。。
而对不是exe文件,如txt需要进行双击时,运行了notepad在后台,而不是打开该文本文件
我个人认为呢,在单击到文件时seletefolder.pathname其实应该有值的,不过事实非我所想。。
嗯,再就是帮助文件中查不到ShellListView等组件的帮助信息,就弄的一塌糊涂了。。PS:我没有说一定要取itemindex,而是说用到这方法时边界异常了,用其他方法则是内存错误。。
begin
ShowMessage(IntToStr(i));
end;procedure TForm1.ShellListView1MouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if ShellListView1.Selected = nil then
i := -1
else
i := ShellListView1.ItemIndex;
end;
取文件是行了,不过如果双击在取到文件时,txt文件直接双击则启动了notepad而不是打开这个文本文件
我下面处理也不行,跟没做处理一样的都是后台启动notepad,而不是打开文本文件。。procedure TForm1.ShellListView1DblClick(Sender: TObject);
begin
//当双击时文件夹时,shelltreeview.path会发生改变,
//则将地址栏的路径重新显示
cbbAddrUsed.Text := ShellTreeView1.Path;
if i<> -1 then
if not ShellListView1.Folders[i].IsFolder then
begin
ShellExecute(handle,'open ',PChar(ShellListView1.Folders[i].PathName),nil,nil,SW_SHOW);
//ShowMessage(ShellListView1.Folders[i].PathName);
end;
end;
ps:谢谢你的热心。。