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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
1-51305
HarryP
2003-10-06 13:15
2003.10.16
array of byte -> longword Чето туплю


14-51440
Ua
2003-09-30 16:54
2003.10.16
Видимо общество желает объяснений.


3-51060
Smashich
2003-09-26 17:35
2003.10.16
Grant


3-51146
Дмитрий К.
2003-09-24 13:36
2003.10.16
Вопрос по работе c DBGridEh.


1-51160
_qq
2003-10-07 12:42
2003.10.16
Помогите с ООП