Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Файловая система
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 27.09.2011, 22:50
Аватар для Cheetos
Cheetos Cheetos вне форума
Прохожий
 
Регистрация: 27.09.2011
Адрес: Тульская область
Сообщения: 18
Версия Delphi: 7
Репутация: 10
Восклицание Аналог* проводника windows

Задача: есть массив PathDir с адресами директорий. Нужен аналог проводника windows, который отображает одновременно содержимое всех директорий и позволяет манипулировать их содержимым аналогично проводнику в windows. Для избежания неприятностей в случае, когда в двух разных директориях расположены файлы или директории с одинаковыми названиями, можно к каждому названию добавить префикс, например, порядковый номер в массиве PathDir.
Например: есть директория "c:\DirA" с вложенной директорией "DirA1" и файлом "A.txt", а так же директория "c:\DirB" с вложенной директорией "DirB1" и файлом "B.txt". Используя данный проводник пользователь видит содержимое "c:\DirA" и "c:\DirB", как если бы они находились в одной папке, например "C:\Dir", а именно: "1-DirA1", "2-DirB1", "1-A.txt", "2-B.txt". В случае, если пользователь заходит в директорию "1-DirA1", то он соответственно видит содержимое "DirA1", а при попытке открыть "1-A.txt" - запускается программа, ассоциированная в windows с расширением "txt", например, блокнот, в которую загружается "A.txt".
В общем-то как-то так...
Убил далеко не один день/ночь... Нужна помощь.
За готовое решение готов отблагодарить - пиво/сок/деньги.
Ответить с цитированием
  #2  
Старый 27.09.2011, 22:56
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Используйте ListView + TreeView.
__________________
Je venus de nulle part
55.026263 с.ш., 73.397636 в.д.
Ответить с цитированием
  #3  
Старый 28.09.2011, 06:55
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

Можно динамически для каждой папки создать свой Shelllistview
Ответить с цитированием
  #4  
Старый 28.09.2011, 07:06
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,015
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Маньяки.
Пишется все достаточно просто.
Только надо понять как это должно отображаться. Как я понял, должно быть видно все когда пользователь находится в корне списка. А вот что надо отображать, если пользователь вошел в одну из папок?
Ответить с цитированием
  #5  
Старый 28.09.2011, 09:42
Аватар для Cheetos
Cheetos Cheetos вне форума
Прохожий
 
Регистрация: 27.09.2011
Адрес: Тульская область
Сообщения: 18
Версия Delphi: 7
Репутация: 10
По умолчанию

В отношении TreeView и ListView - это я уже догадался - который день над этим бьюсь.
Дабы лишние вопросы не возникали по сути самой задачи, прилагаю структуру того, что есть в действительности и чего хотелось бы.

Слева на картинке - то, что есть, а справа- то, что должен видить пользователь в случае, если массив DirPath=('D:\Dir1', 'D:\Dir2').
Примечание:
1. названия файлов и папок могут быть любые
2. нумерация в примере введена только для того, чтобы ясно было какой файл/папка из какой директории.
Ответить с цитированием
  #6  
Старый 28.09.2011, 12:26
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

Как же можно, который день бьетесь, а кодом не поделились
Вобще идея заменить проводник интересная, но не в таком виде как на скрине
Ответить с цитированием
  #7  
Старый 28.09.2011, 13:17
Аватар для Cheetos
Cheetos Cheetos вне форума
Прохожий
 
Регистрация: 27.09.2011
Адрес: Тульская область
Сообщения: 18
Версия Delphi: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Pyro
Как же можно, который день бьетесь, а кодом не поделились
Вобще идея заменить проводник интересная, но не в таком виде как на скрине
1. Был бы рабочий код - я бы не просил помощи
2. Представленный скрин - это не "проводник" который нужен мне, а просто образец структуры того, что есть и того, что нужно. Внешний вид рабочей версии "проводника" должен быть очень схож с виндосовским
Ответить с цитированием
  #8  
Старый 28.09.2011, 13:59
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

А не проще диск D: подключить как папку в диске C: ?
Есть еще такая вещь как символические ссылки в NTFS, но с ними могут быть сюрпризы неприятные.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.

Последний раз редактировалось Страдалецъ, 28.09.2011 в 14:06.
Ответить с цитированием
  #9  
Старый 28.09.2011, 14:17
Pyro Pyro вне форума
Так проходящий
 
Регистрация: 18.07.2011
Сообщения: 805
Версия Delphi: 7Lite
Репутация: 6063
По умолчанию

Как я понял автор хочет чтобы сами файлы были в одном окне
Я сам подумываю о таком, но это не будет похоже на проводник

Самый примитивный вариант:
PHP код:
uses ShellCtrl;
var
  
inInteger;
begin
  n 
:= memo1.Lines.Count;
  for 
:= 0 to n do
    
with TShellListView.Create(Form1)  do
    
begin
      Parent 
:= Form1;
      
Root := memo1.Lines.Strings[i];
      
Width := Form1.ClientWidth;
      
Left := 0;
      
Height := Form1.ClientHeight div n;
      
Top :=  Form1.ClientHeight div n *i;
    
end;
end

можно сделать круче, если пройтись по нужным папкам и создать на все файлы ярлыки во временную папку, а её открыть в проводнике, но тогда проблема их сгруппировать
Ответить с цитированием
  #10  
Старый 28.09.2011, 14:30
Аватар для PhoeniX
PhoeniX PhoeniX вне форума
Always hardcore!
 
Регистрация: 04.03.2009
Адрес: СПб
Сообщения: 3,239
Версия Delphi: GCC/FPC/FASM
Репутация: 62149
По умолчанию

Напиши в ICQ в подписи. Решение не предоставлю (ибо на Delphi больше не пишу), но алгоритм и пару подсказок дам, и помогу при написании (если что)
__________________
Оставайтесь хорошими людьми...
VK id2634397, ds [at] phoenix [dot] dj
Ответить с цитированием
  #11  
Старый 28.09.2011, 18:27
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Можно сделать обыкновенный ListView, который будет рисовать файлы и папки. Просто делаешь картинки, загружаешь в ImageList, ставишь в Caption элемента название папки/файла, при двойном тыке открываешь файл (че-то типа shellexecute вроде).
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием
  #12  
Старый 28.09.2011, 19:41
Аватар для Cheetos
Cheetos Cheetos вне форума
Прохожий
 
Регистрация: 27.09.2011
Адрес: Тульская область
Сообщения: 18
Версия Delphi: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от Bargest
Можно сделать обыкновенный ListView, который будет рисовать файлы и папки. Просто делаешь картинки, загружаешь в ImageList, ставишь в Caption элемента название папки/файла, при двойном тыке открываешь файл (че-то типа shellexecute вроде).
Пожалуй, это и есть то, что мне нужно.
Осталось дело за малым:
1. Загрузить в ImageList значки для зарегистрированных в Windows расширений
2. Перебрать содержимое PathDir с целью заполнить ListView содержимым необходимых папок
3. Организовать запуск/открытие файлов и папок.
Ответить с цитированием
  #13  
Старый 28.09.2011, 19:49
einstein einstein вне форума
Начинающий
 
Регистрация: 02.09.2010
Адрес: Город
Сообщения: 143
Репутация: -4653
По умолчанию

за 1000 готов написать готовую программу.
Ответить с цитированием
  #14  
Старый 28.09.2011, 19:49
Аватар для Cheetos
Cheetos Cheetos вне форума
Прохожий
 
Регистрация: 27.09.2011
Адрес: Тульская область
Сообщения: 18
Версия Delphi: 7
Репутация: 10
По умолчанию

Вариант с сетевым диском и его аналоги - не вариант, поскольку содержимое массива PathDir постоянно меняется
Ответить с цитированием
  #15  
Старый 28.09.2011, 19:52
Аватар для Cheetos
Cheetos Cheetos вне форума
Прохожий
 
Регистрация: 27.09.2011
Адрес: Тульская область
Сообщения: 18
Версия Delphi: 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от einstein
за 1000 готов написать готовую программу.
icq: 171999991
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:37.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter