Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Получить путь к выделенному файлу в TShellListView

Delphi , Компоненты и Классы , TListView

Получить путь к выделенному файлу в TShellListView

Оформил: DeeCo
Автор: http://www.swissdelphicenter.ch

// These two solutions don't work: 
// Diese zwei Losungen funktionieren nicht wie erwartet: 

{ 1. }

 Label1.Caption := TShellFolder(ShellListView1.RootFolder).PathName;

 { 2. }

 var
   p: TPoint;
   item: TListItem;
 begin
   GetCursorPos(p);
   p := ShellListView1.ScreenToClient(p);
   item := ShellListView1.GetItemAt(p.X, p.Y);
   if item <> nil then
     Caption := item.Caption
 end;


 // But this works: 
// Aber so geht's: 

Label1.Caption := ShellListView1.Folders[ShellListView1.ItemIndex].PathName

 {**************************************************************}

 { 
  To retrieve full paths to each file selected files: 
}

 var
   path: string;
 begin
   for i:=0 to ShellListView1.SelCount-1 do
   begin
     path := ShellListView1.Folders[ShellListView1.GetNextItem(ShellListView1.Selected,
               sdAll,[isSelected]).Index+i-1].PathName;
     // ... 
  end;
 end

Проблема в том, что TShellFolder и TShellListView не предназначены для совместной работы в этом виде.

В Delphi, когда вы используете TShellListView, она предоставляет свой собственный представление иерархии папок. Вы не можете напрямую доступаться к underlying Windows shell namespace через контролл ListView.

Однако есть некоторые способы получить путь выбранного элемента:

  1. Используя свойства ItemIndex и Folders:
Label1.Caption := ShellListView1.Folders[ShellListView1.ItemIndex].PathName;

Это даст вам путь текущего выбранного элемента.

  1. Итерация над выбранными элементами с помощью методов SelCount и GetNextItem:
var
  path: string;
begin
  for i := 0 to ShellListView1.SelCount - 1 do
  begin
    path := ShellListView1.Folders[ShellListView1.GetNextItem(ShellListView1.Selected, sdAll, [isSelected]).Index + i - 1].PathName;
    // ... 
  end;
end;

Это даст вам пути всех выбранных элементов. Метод GetNextItem используется для получения элемента из списка, который соответствует указанным критериям выбора.

Обратите внимание: вам нужно обработать случай, когда не выбраны ни один элемент, проверив свойство SelCount перед итерацией над выбранными элементами.

В статье описывается несколько способов получения пути к выделенному файлу в TShellListView, включая ошибочные подходы и корректный метод с использованием свойства ItemIndex.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: TListView ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 01:46:56/0.0031640529632568/0