lexaltd
17:07:2008, 10:07
Мне надо сделать программу чтоб можно было найти в определённой папки .txt файлы , и чтоб они открылись как в Explorer , тоесть чтоб был список всех этих файлов находящихся в этой папке (не один файл , а все что находятся в этой папке) , чтоб я их мог открыть , печатать , редактировать .
Я незнаю что за компонет выбрать чтоб там файлы отображались как в Explorer , если выбираю Memo , то файлы получаются в в виде списка - пути файлов и нечего с ними сделать нельзя.
Я не сильно разбираюсь в программировании - подскажите как решить эту проблему , и что я не так делаю.
Зарание спасибо за помощь.
Извеняюсь но создалось две темы - удалите одну
Silver Wind
17:07:2008, 10:21
Смотри на закладке Samples компоненты ShellComboBox, ShellTreeView, ShellListView.
Пример использования Delphi7\Demos\Virtual Listview
Или такие же по функциональности, но устаревшие, на закладке Win 3.1 DriveComboBox, DirectoryListBox, FileListBox.
Пример здесь Delphi7\Demos\Doc\Filmanex
Хотя нет, извеняюсь, "Delphi7\Demos\Virtual Listview" - из другой оперы, просто похоже.
Есть неск-ко вариантов. Использовать FingFirst - FindNext - FindClose и самостоятельно заполнять ListView с нужными колонками. Либо использовать выше названный ShellListView. Ну а редактирование.. печать.. Мемо и РичЕдит Тебе в помощь.
ПС. Могу написать за символические 5-10$. vitalyhome@tut.by.
lexaltd
17:07:2008, 16:02
Цитата(Silver Wind @ 17:07:2008, 11:21 )

Пример использования Delphi7\Demos\Virtual Listview
Я конечно извеняюсь , но где найти этот пример - я не понял
Silver Wind
17:07:2008, 16:13
В каталоге установке Delphi ("C:\Program Files" - обычно), и данный пример немного не то что тебе нужно, смотри лучше связку из компонент ShellComboBox, ShellTreeView, ShellListView, там все тривиально.
Цитата(vital @ 17:07:2008 - 17:43)

Могу написать за символические 5-10$.
Что там писать, все уже написанно.
lexaltd
19:07:2008, 17:09
Теперь другая проблема
Пытаюсь из ShellListView открыть текстовый файл в Memo
Если например с FileListBox я окрываю так " Form1.Memo1.Lines.LoadFromFile(FileListBox1.Filename);"
То тут я пишу " Form1.Memo1.Lines.LoadFromFile(ShellListView1.Filename); " - при компилировании выдаёт ошибку - там надо наверно не " Filename " писать
Можете подсказать решение этой проблемы ?
Или через ShellListView открыть текстовый файл в Memo нельзя?
Цитата(lexaltd @ 19:07:2008 - 19:09)

ShellListView1.Filename
А откуда вы его там нашли?
У ТShellListView есть свойство SelectedFolder, ну а далее идите по свойствам SelectedFolder и найдете все что нужно.
lexaltd
19:07:2008, 18:09
Цитата(sax_ol @ 19:07:2008, 18:40 )

А откуда вы его там нашли?
У ТShellListView есть свойство SelectedFolder, ну а далее идите по свойствам SelectedFolder и найдете все что нужно.
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;
Можете написать , а то нечего не получается
Silver Wind
19:07:2008, 18:17
Это ведь другой компонент, верно, так почему у него должно быть свойство FileName?
Небольшое исследование класса ShellListView с помощью выпадающего списка свойств/методов и мы добираемся до искомого имени файла:
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;
lexaltd
19:07:2008, 18:31
Спасибо большое заработало - будем дальше строить
Цитата(lexaltd @ 19:07:2008 - 20:09)

1. Нашёл там только Selected
Цитата(lexaltd @ 19:07:2008 - 20:31)

Спасибо большое заработало
Вы сами то смотрели, или ждали код?
lexaltd
19:07:2008, 19:11
Цитата(sax_ol @ 19:07:2008, 19:57 )

Вы сами то смотрели, или ждали код?
Я же писал что не сильно разбираюсь в это , конечно смотрел - но как говорится смотрю в книгу , вижу ..
Вот соорудил короче код , на основании ваших ответов :
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. Ещё раз большое спасибо
lexaltd
23:07:2008, 09:08
Можно как то связать " ShellChangeNotifier " с "ShellComboBox"
Чтоб при нажатии на кнопку открывалось диалоговое окно " ShellChangeNotifier " я там выбрал корневой коталог , и он открылся в "ShellComboBox" и самое гланое чтоб при повторном запуске программы , в "ShellComboBox" открывался этот корневой каталог который я выбрал " ShellChangeNotifier " , и когда надо я мог сменить корневой каталог
Можно так сделать ?
Зарание спасибо
Можно.
Уф.. не помню уж точно названия св-в компонентов но примерно следующим образом
екзекьютишь какой-нить TDirectoryListBox в котором юзверь выбирает каталог, после чего его выбор пишешь в какую-нить пременную. Ну а потом ShellComboBox.directory(ну или там ShellComboBox.SelectedFolder.PathName)=твоя_пееменная. А дальше сохраняешь значение своей переменной куда-нить в ini. А при зауске проги читаешь это значение и снова ShellComboBox.SelectedFolder.PathName=твоя_пееменная. По поводу ini -IniFiles.TIniFile тебе в помощь.
lexaltd
24:07:2008, 10:44
Цитата(vital @ 23:07:2008, 19:25 )

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