Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.03;
Скачать: CL | DM;

Вниз

Виртуальный диск или ...   Найти похожие ветки 

 
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 вся ветка

Текущий архив: 2003.11.03;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.015 c
6-8574
DNT
2003-09-07 01:50
2003.11.03
Компонент FTP server а


8-8544
Freddy
2003-07-03 10:21
2003.11.03
Графическое отображение WAV-файла на экране


3-8286
Andrei
2003-10-14 17:40
2003.11.03
Access,MSSQL,Delphi


3-8259
Denisiy
2003-10-14 12:47
2003.11.03
Авторазмер столбцов в DBGrid - бывает?


1-8528
TRyaSS
2003-10-23 14:59
2003.11.03
Сообщение об открытии какой-либо программы