Форум: "Основная";
Текущий архив: 2003.10.16;
Скачать: [xml.tar.bz2];
ВнизSelectDirectory + CreateDirButton Найти похожие ветки
← →
kaif (2003-09-30 00:25) [0]Как высветить диалог выбора директории типа того, что дельфийская функция вызывает:
function SelectDirectory(const Caption: string; const Root: WideString; out Directory: string): Boolean; overload;
но так чтобы на окне диалога еще была кнопка "Создать директорию..."
Причем так, чтобы не сильно геморроиться. Есть какой-то стандартный вызов из API, скажем?
← →
Тих (2003-09-30 00:31) [1]SHBrowseForFolder, в MSDN. Там куча флагов. Можно даже callback функцию приделать. Только внимательней про совместимость этих флагов с shell32 почитай, а то я "удовольствия" с отладкой как-то раз поимел.. на полдня.
← →
kaif (2003-09-30 08:25) [2]2 Тих (30.09.03 00:31) [1]
Спасибо!
← →
kaif (2003-10-06 16:09) [3]Посмотрел SHBrowseForFolder, но так и не нашел опции с кнопкой "создать директорию". Теперь что, в callback бюытаться ловить Handle окна и сувать туда кнопку?
Может кто-то подскажет разумное решение? Или я что-то недопонял...
← →
ZEE (2003-10-06 16:28) [4]а может SelectDirectory + sdAllowCreate
если нет - то можно залезть в исходники SelectDirectory (файл FileCtrl.pas) она работает как раз на SHBrowseForFolder...
← →
Юрий Федоров (2003-10-06 16:40) [5]SHBrowseForFolder + BIF_NEWDIALOGSTYLE
соответственно с ограничниями по версии библиотек и с вызовом CoInitialize
← →
kaif (2003-10-06 20:45) [6]2 Юрий Федоров ©
Спасибо, попробую BIF_NEWDIALOGSTYLE.
Хотя то, что у меня в SDK написано:
ulFlags
BIF_BROWSEFORCOMPUTER
BIF_BROWSEFORPRINTER
BIF_DONTGOBELOWDOMAIN
BIF_RETURNFSANCESTORS
BIF_RETURNONLYFSDIRS
BIF_STATUSTEXT
больше никаких флагов у меня в SDK нет...
Может, от платформы зависит?
← →
Юрий Федоров (2003-10-06 21:49) [7]У тебя видимо старый SDK
BIF_NEWDIALOGSTYLE.
Version 5.0. Use the new user interface. Setting this flag provides the user with a larger dialog box that can be resized. The dialog box has several new capabilities including: drag and drop capability within the dialog box, reordering, shortcut menus, new folders, delete, and other shortcut menu commands. To use this flag, you must call OleInitialize or CoInitialize before calling SHBrowseForFolder.
← →
kaif (2003-10-07 02:54) [8]Я не нашел константы BIF_NEWDIALOGSTYLE в ShlObj.pas Delphi6, потом поискал в одноименном юните Delphi7 и нашел там: $0040.
Скопировал внутренности SelectDirectory к себе в проект и у меня все заработало под W2K и XP, однако под W"98SE остался старый диалог.
Странно, что и без CoInitialize все работает. Но может это особенности реализации вызова в SelectDirectory модуля FileCtrls. Там много еще каких-то COM-интерфейсов задействуется. может это и вызывает где-то CoInitialize или что-то подобное... Не знаю. Не вникал.
Жаль, что под W"98SE не работает. Даже не знаю, встраивать ли это в программу. Там всего одно место, где вообще нужен такой диалог с такой кнопкой. Может, вручную реализовать это окно с помощью TreeView и обычных обращений к файловой системе? Просто я уже однажды такое делал. Не очень это быстро работало. Конечно, SHBrowseForFolder быстрее работает.
Какие еще варианты есть?
Актуально, чтобы это в сети работало. Папка скорее всего может на другом компьютере создаваться. И еще важно, чтобы под 98 тоже работало. Если никак это невозможно, тогда я вообще откажусь от SHBrowseForFolder.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.10.16;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c