Открыть дерево файлов как в Explorer

Тема в разделе "Delphi - Система", создана пользователем lexaltd, 17 июл 2008.

Наш партнер Genesis Hackspace
  1. lexaltd

    lexaltd Гость

    Мне надо сделать программу чтоб можно было найти в определённой папки .txt файлы , и чтоб они открылись как в Explorer , тоесть чтоб был список всех этих файлов находящихся в этой папке (не один файл , а все что находятся в этой папке) , чтоб я их мог открыть , печатать , редактировать .

    Я незнаю что за компонет выбрать чтоб там файлы отображались как в Explorer , если выбираю Memo , то файлы получаются в в виде списка - пути файлов и нечего с ними сделать нельзя.

    Я не сильно разбираюсь в программировании - подскажите как решить эту проблему , и что я не так делаю.

    Зарание спасибо за помощь.

    Извеняюсь но создалось две темы - удалите одну
     
  2. Silver Wind

    Silver Wind Гость

    Смотри на закладке Samples компоненты ShellComboBox, ShellTreeView, ShellListView.
    Пример использования Delphi7\Demos\Virtual Listview

    Или такие же по функциональности, но устаревшие, на закладке Win 3.1 DriveComboBox, DirectoryListBox, FileListBox.
    Пример здесь Delphi7\Demos\Doc\Filmanex

    Хотя нет, извеняюсь, "Delphi7\Demos\Virtual Listview" - из другой оперы, просто похоже.
     
  3. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.433
    Симпатии:
    31
    Есть неск-ко вариантов. Использовать FingFirst - FindNext - FindClose и самостоятельно заполнять ListView с нужными колонками. Либо использовать выше названный ShellListView. Ну а редактирование.. печать.. Мемо и РичЕдит Тебе в помощь.

    ПС. Могу написать за символические 5-10$. vitalyhome@tut.by.
     
  4. lexaltd

    lexaltd Гость


    Я конечно извеняюсь , но где найти этот пример - я не понял
     
  5. Silver Wind

    Silver Wind Гость

    В каталоге установке Delphi ("C:\Program Files" - обычно), и данный пример немного не то что тебе нужно, смотри лучше связку из компонент ShellComboBox, ShellTreeView, ShellListView, там все тривиально.
     
  6. lexaltd

    lexaltd Гость

    Теперь другая проблема

    Пытаюсь из ShellListView открыть текстовый файл в Memo
    Если например с FileListBox я окрываю так " Form1.Memo1.Lines.LoadFromFile(FileListBox1.Filename);"
    То тут я пишу " Form1.Memo1.Lines.LoadFromFile(ShellListView1.Filename); " - при компилировании выдаёт ошибку - там надо наверно не " Filename " писать

    Можете подсказать решение этой проблемы ?

    Или через ShellListView открыть текстовый файл в Memo нельзя?
     
  7. lexaltd

    lexaltd Гость

    1. Нашёл там только Selected
    2. Смотрите мне нужно открыть файл .txt из ShellListView в Memo

    C FileListBox я открываю так :

    procedure TForm1.FileListBox1DblClick(Sender: TObject);
    begin
    Form2.Memo1.Lines.LoadFromFile(FileListBox1.Filename);
    end;

    Как мне открыть с ShellListView?

    procedure TForm1.FileListBox1DblClick(Sender: TObject);
    begin
    ?????????
    end;

    Можете написать , а то нечего не получается
     
  8. Silver Wind

    Silver Wind Гость

    Это ведь другой компонент, верно, так почему у него должно быть свойство FileName?
    Небольшое исследование класса ShellListView с помощью выпадающего списка свойств/методов и мы добираемся до искомого имени файла:

    Код (Text):
    procedure TForm1.ShellListView1Click(Sender: TObject);
    var
    SelectedFolder:TShellFolder;
    FileName:string;
    begin
    SelectedFolder:=ShellListView1.SelectedFolder;
    if Assigned(SelectedFolder)
    then begin
    FileName:=SelectedFolder.PathName;
    if FileExists(FileName) and (ExtractFileExt(FileName)='.txt')
    then Memo1.Lines.LoadFromFile(FileName);
    end;
    end;
     
  9. lexaltd

    lexaltd Гость

    Спасибо большое заработало - будем дальше строить
     
  10. lexaltd

    lexaltd Гость


    Я же писал что не сильно разбираюсь в это , конечно смотрел - но как говорится смотрю в книгу , вижу ..

    Вот соорудил короче код , на основании ваших ответов :

    procedure TForm1.Button1Click(Sender: TObject);
    begin
    Form1.Memo1.Lines.LoadFromFile(ShellListView1.SelectedFolder.PathName);
    end;


    А фильтр делается добавлением в OnAddFolder

    CanAdd := AFolder.IsFolder or (ExtractFileExt(AFolder.PathName) = '.txt');


    Может кому то пригодится

    P.S. Ещё раз большое спасибо
     
  11. lexaltd

    lexaltd Гость

    Можно как то связать " ShellChangeNotifier " с "ShellComboBox"
    Чтоб при нажатии на кнопку открывалось диалоговое окно " ShellChangeNotifier " я там выбрал корневой коталог , и он открылся в "ShellComboBox" и самое гланое чтоб при повторном запуске программы , в "ShellComboBox" открывался этот корневой каталог который я выбрал " ShellChangeNotifier " , и когда надо я мог сменить корневой каталог

    Можно так сделать ?

    Зарание спасибо
     
  12. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.433
    Симпатии:
    31
    Можно.

    Уф.. не помню уж точно названия св-в компонентов но примерно следующим образом
    екзекьютишь какой-нить TDirectoryListBox в котором юзверь выбирает каталог, после чего его выбор пишешь в какую-нить пременную. Ну а потом ShellComboBox.directory(ну или там ShellComboBox.SelectedFolder.PathName)=твоя_пееменная. А дальше сохраняешь значение своей переменной куда-нить в ini. А при зауске проги читаешь это значение и снова ShellComboBox.SelectedFolder.PathName=твоя_пееменная. По поводу ini -IniFiles.TIniFile тебе в помощь.
     
  13. lexaltd

    lexaltd Гость

    Мне нужно чтоб программа состояла из одного файла
    А что нельзя сделать чтоб компонент " ShellChangeNotifier " работал с "ShellComboBox" ???
     
  14. vital

    vital Больной Компом Детектед

    Регистрация:
    29 янв 2006
    Сообщения:
    2.433
    Симпатии:
    31
    Можно, просто я не совсем тебя понял и написал к примеру. Все можно)
     
Загрузка...

Поделиться этой страницей