Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Delphi > Lazarus, Free Pascal, CodeTyphon
Регистрация

Восстановить пароль
Повторная активизация e-mail


Донат для форума - использовать для поднятия настроения себе и модераторам

А ещё здесь можно купить рекламу за 25 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru

Ответ
 
Опции темы
Старый 11.01.2013, 21:41   #1
B_TpaHce
 
Регистрация: 05.05.2011
Сообщений: 9
Репутация: 10
По умолчанию Lazarus ShellTreeView и ShellListView

На форме есть 2 ShellTreeView и 2 ShellListView. У каждого ShellListView в свойстве ShellTreeView указан свой ShellTreeView.
Программа запускается и показывает структуру файловой системы.
Хочу сделать копирование, удаление и переименование файлов выделенных в одном ShellListView в другой.
Нашел функции CopyFile, DeleteFile, RenameFile.
Подскажите, как передать из ShellListView путь выделенного файла в параметры этих функций?
Нашел пример для Delphi, но он не работает:
Код:
ShellListView1.Folders[ShellListView1.ItemIndex].PathName
Система Ubuntu 12.04, Lazarus 0.9.30
B_TpaHce вне форума   Ответить с цитированием
Старый 11.01.2013, 22:53   #2
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,841
Репутация: 6850
По умолчанию

ИМХО
ShellListView1.GetPathFromItem(Shel lListView1.Selected)
ShellTreeView1.GetPathFromNode(Shel lTreeView1.Selected);

P.S. Исправил пост...
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 11.01.2013, 23:53   #3
B_TpaHce
 
Регистрация: 05.05.2011
Сообщений: 9
Репутация: 10
По умолчанию

Спасибо большое! Реализовал копирование:
Код:
CopyFile(ShellListView1.GetPathFromItem(ShellListView1.Selected), ShellTreeView1.GetPathFromNode(ShellTreeView2.Selected)+'/'+ShellListView1.Selected.Caption);
Но появились 2 проблемы. Нужно обновлять содержимое ShellListView2 после копирования, т.к. иначе скопированный файл в нем не показывается.
Пробовал так:
Код:
  ShellTreeView2.Refresh;
  ShellListView2.Refresh;
, но не помогло.
Вторая проблема в том что нужно проверять ShellListView1 на предмет того, выбран файл или нет. Т.е. нужно сделать условие если файл в ShellListView1 выбран, то разрешить копирование, иначе нет.
B_TpaHce вне форума   Ответить с цитированием
Старый 12.01.2013, 01:07   #4
B_TpaHce
 
Регистрация: 05.05.2011
Сообщений: 9
Репутация: 10
По умолчанию

С проверкой вроде разобрался. Сделал так:
Код:
 if (ShellListView1.Selected<>nil) then
 CopyFile(ShellListView1.GetPathFromItem(ShellListView1.Selected), ShellTreeView1.GetPathFromNode(ShellTreeView2.Selected)+'/'+ShellListView1.Selected.Caption)
Осталось разобраться с обновлением ShellListView2
B_TpaHce вне форума   Ответить с цитированием
Старый 12.01.2013, 14:46   #5
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,841
Репутация: 6850
По умолчанию

Думаю проще будет чтоб особо долго не парится сделать смену каталога куда нить в Темр, а потом назад, чтоб он перечитал каталог.
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 12.01.2013, 20:01   #6
B_TpaHce
 
Регистрация: 05.05.2011
Сообщений: 9
Репутация: 10
По умолчанию

Посоветовали заменить ShellListView на FileListBox. В итоге копирование сделал так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
  CopyFile(FileListBox1.FileName,ShellTreeView2.GetPathFromNode(ShellTreeView2.Selected)+'/'+ExtractFileName(FileListBox1.FileName));
  FileListBox2.UpdateFileList;
end;
B_TpaHce вне форума   Ответить с цитированием
Старый 12.01.2013, 22:33   #7
B_TpaHce
 
Регистрация: 05.05.2011
Сообщений: 9
Репутация: 10
По умолчанию

Подскажите, а какой функцией можно сменить каталог в ShellTreeView?
И как называется функция копирования каталога? Нашел только CreateDir и DeleteDirectory.
B_TpaHce вне форума   Ответить с цитированием
Старый 12.01.2013, 22:44   #8
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,841
Репутация: 6850
По умолчанию

Цитата:
какой функцией можно сменить каталог в ShellTreeView?
Не функцией а свойством. Path кажись называется.
Цитата:
И как называется функция копирования каталога?
Нет такой. Используй SHFileOperation для винды. Для Линуха не знаю.
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Старый 12.01.2013, 23:08   #9
B_TpaHce
 
Регистрация: 05.05.2011
Сообщений: 9
Репутация: 10
По умолчанию

К сожалению, свойство Path у ShellTreeView не нашел
B_TpaHce вне форума   Ответить с цитированием
Старый 13.01.2013, 00:14   #10
Stilet
Белик Виталий :)
Профессионал
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Адрес: Украина, Донецкая область, г. Краматорск
Сообщений: 57,841
Репутация: 6850
По умолчанию

Мдя... А похожее поискать не додумался?
__________________
I'm learning to live...
Stilet вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перекомпиляция программы(простой) Win Lazarus в Linux Lazarus Toxifer Фриланс 0 27.11.2012 22:46
ShellTreeView где ты? Прик Компоненты Delphi 5 16.06.2011 21:39
Копировать строки из ShellListView, ShellTreeView и передать их в ListView, TreeView? Denutrror Общие вопросы Delphi 0 01.04.2011 12:36
Shelltreeview и DBGrid Stian БД в Delphi 1 04.03.2011 01:12
checkbox in ShellTreeView SergGhost Помощь студентам 1 31.08.2009 17:51


12:28.


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.