Размер шрифта
-
+

Delphi. Трюки и эффекты - стр. 37

Листинг 2.29. Удаление структуры ItemlDList

procedure DeletePIDL(pidl: PItemIDList);

var

pMalloc: IMalloc;

begin

SHGetMalloc(pMalloc);

if (pMalloc <> nil) then

begin

pMalloc.Free(pidl);

pMalloc._Release();

end;

end;

Примечание

Освобождение памяти, занимаемой данными структуры ItemlDList, можно выполнить и более простым способом: использовать API-функцию CoTaskMemFree, передав ей адрес структуры в качестве следующего параметра: CoTaskMemFree(pidl).

Вообще функцию SHBrowseForFolder (листинг 2.28) можно использовать и для указания принтеров или компьютеров. Для этого достаточно установить флаги BIF_BROWSEFORCOMPUTERH BIF_BROWSEFORPRINTER соответственно:

choose.ulFlags := BIF_BROWSEFORCOMPUTER;

или

choose.ulFlags := BIF_BROWSEFORPRINTER;

Чтобы в окне отображались еще и значки файлов, необходимо установить флаг BIF_BROWSEINCLUDEFILES.

Окна подключения и отключения сетевого ресурса

Часто бывает удобно осуществлять доступ к сетевым папкам как к локальным дискам компьютера (с использованием того же принципа построения пути). Окна подключения и отключения сетевого ресурса позволяют дать пользователю возможность выбрать, какие папки считать сетевыми дисками и какие сетевые диски можно отключить.

Окно подключения сетевого ресурса в Windows ХР выглядит так, как показано на рис. 2.6.

Рис. 2.6. Окно подключения сетевого диска


Для вызова диалогового окна подключения сетевого ресурса можно использовать функцию, приведенную в листинге 2.30.

Листинг 2.30. Окно подключения сетевого ресурса

function ShowConnection(): BOOL;

begin

ShowConnection :=

WNetConnectionDialog(hParentWnd, RESOURCETYPE_DISK) = NO_ERROR;

end;

Функция ShowConnection возвращает True в случае удачного подключения и False в противном случае.

Окно отключения сетевого диска приведено на рис. 2.7.

Рис. 2.7. Отключение сетевого ресурса


Функция, показывающая окно отключения сетевого диска, приведена в листинге 2.31.

Листинг 2.31. Окно отключения сетевого ресурса

function ShowDisconnect(): BOOL;

begin

ShowDisconnect :=

WNetDisconnectDialog(hParentWnd, RESOURCETYPE_DISK) = NO_ERROR;

end;

Аналогично ShowConnection функция ShowDisconnect возвращает True, если отсоединен хотя бы один диск, и False в противном случае.

Системное окно «О программе»

Этот последний и довольно экзотичный пример приведен на случай, если возникнет желание или необходимость использовать красивое окно О программе, которое выводится для самой операционной системы Windows и ее компонентов. Процедура выведения этого окна приведена в листинге 2.32.

Листинг 2.32. Окно «О программе»

procedure ShowAbout(strAppName: string; strInfo: string);

Страница 37