Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
1-51236
Tommy
2003-10-03 15:25
2003.10.16
опять потоки....


1-51231
TButton
2003-10-03 17:32
2003.10.16
D5 Enviroment


9-51048
Арм
2003-04-15 03:57
2003.10.16
Беда с текстурами в OpeGL


1-51328
R
2003-10-06 02:29
2003.10.16
Процедура обработки сообщений в форме созданной динами-


1-51305
HarryP
2003-10-06 13:15
2003.10.16
array of byte -> longword Чето туплю





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский