Форум: "WinAPI";
Текущий архив: 2003.11.03;
Скачать: [xml.tar.bz2];
ВнизВиртуальный диск или ... Найти похожие ветки
← →
Glajik (2003-08-29 04:18) [0]Доброй ночи господа.
Вот пишу проект, частью которого должен быть телефонный справочник. Я не хочу создавать собственный интерфейс, а использовать окно проводника из под Окон. Справочник будет представлен ввиде папок с названием типа 322233 - Сидоров Николай Петрович . А внутри каждой папки будет в лежать дополнительная информация ввиде текстовых, звуковых, графических файлов. Этакая структура каталогов а-ля Linux. Мне кажется так будет удобнее юзать программу.
Интересуют следующие вопросы:
1. Как програмно открыть проводником каталог со справочником.
2. Как этот каталог сделать корневым - т.е. чтобы в эксплорере невозможно было подняться на уровень вверх, а в проводнике в древе отображалась только нужная мне структура каталогов.
Заранее благодарен.
← →
AlexRush (2003-08-29 17:25) [1]2Glajik © (29.08.03 04:18)
Идея с организацией инфы в дерево каталогов - прикольная. Но реализация ее будет слишком громоздкой. Действительно, нужен виртуальный диск (а это не "Хелоу Вёрлд" на desktop"е писать :).
IMHO, Гораздо меньше времени уйдет на создание собственной проги, которая будет имитировать explorer.
ответы:
1. Где-то так:
procedure TForm1.Button1Click(Sender: TObject);
var pinf :PROCESS_INFORMATION;
sinf :STARTUPINFO;
cmdLine :string;
curDir :string;
fileName :string;
const
SHELL_NAME = "\EXPLORER.EXE";
PATH_TO_SHOW = "c:\Documents and Settings\";
begin
ZeroMemory(@sinf,sizeof(sinf));
sinf.cb:=sizeof(sinf);
sinf.wShowWindow:=SW_MAXIMIZE;
sinf.dwFlags:=STARTF_USESHOWWINDOW;
SetLength(fileName,255);
GetWindowsDirectoryA(@fileName[1],254);
lstrcatA(@fileName[1],SHELL_NAME);
SetLength(fileName,lstrlen(@fileName[1]));
if 0<>pos(#32,PATH_TO_SHOW)
then cmdLine:=AnsiQuotedStr(PATH_TO_SHOW,""")
else cmdLine:=PATH_TO_SHOW;
cmdLine:=fileName+#32+cmdLine+#0;
fileName:=fileName+#0;
if not
CreateProcessA(@fileName[1],
@cmdLine[1],
nil,
nil,
TRUE,
0,
nil,
PATH_TO_SHOW,
sinf,
pinf)
then SystemErrorMsg("CreateProcessA");
end;
2. Дак если всё-таки иртуальный диск, то сам и решишь, что в корне показывать (но, всё-таки ВД - не вариант), ну а если прога своя - тогда и вопрос отпадает...
← →
Glajik (2003-08-29 18:59) [2]>AlexRush © (29.08.03 17:25)
Спасибо, но я нашёл выход полегче: на палитре компонентов я нашёл (во второй раз :]) вкладку "Samples" в которой есть такие компоненты как ShellTreeView и ShellListView. Кроме того, что из них я могу слепить окно Эксплорера, я могу задать путь к папке, которая будет корневой - это свойство Root: TRoot; Таким образом отпадает морока с виртуальным диском.
Может использование готовых компонентов кто-то считает ламерством, однако я:
- во-первых не кодер, и опыт работы с Делфями около полугода;
- во-вторых хороший художник не использует из принципа вместо кисти (а то и PhotoShop"a ;) скребок для наскальных рисунков.
Это я так ... в свою защиту.
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.11.03;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c