![]() |
◊ |
www.udomlya.ru | Медиа-Центр | Удомля КТВ | Старый форум |
|
![]() |
#1 |
Супер-Модератор
|
![]()
В общем мне необходим диалог выбора папки. Согласно документации это он и есть. Но при его отображении я наблюдаю абсолютно чистое диалоговое окно с парой кнопок.
Код: Код:
FolderBrowserDialog folderDialog = new FolderBrowserDialog(); folderDialog.ShowNewFolderButton = false; folderDialog.RootFolder = Environment.SpecialFolder.Personal; DialogResult result = folderDialog.ShowDialog(); |
![]() |
![]() |
#2 |
Местный
Регистрация: 20.09.2007
Сообщений: 4,226
Вы сказали Спасибо: 1
Поблагодарили 6,561 раз(а) в 1,660 сообщениях
|
![]()
А может так? Если title - заголовок диалога (поставить на свой вкус
![]() interface uses Windows, Messages, SysUtils, Classes, Controls, ShlObj; type TBrowseFolderDlg = class(TComponent) private { Private declarations } protected { Protected declarations } public { Public declarations } function BrowseFolder(title: PChar; h: hwnd): String; published { Published declarations } end; procedure Register; implementation procedure Register; begin RegisterComponents('Dialogs', [TBrowseFolderDlg]); end; function TBrowseFolderDlg.BrowseFolder(title: PChar; h: hwnd): String; var lpItemID: PItemIDList; path: array[0..Max_path] of char; //выбранная папка BrowseInfo: TBrowseInfo; //настройки диалога begin FillChar(BrowseInfo, sizeof(TBrowseInfo), #0); SHGetSpecialFolderLocation(h,csidl_desktop,BrowseI nfo.pidlRoot); //устанавливаем свойства диалогового окна with BrowseInfo do begin hwndOwner := h; //окно-владелец lpszTitle := title; //заголовок диалога //не показываем некоторые системные папки: "Корзина", "Панель управления" и т.д ulFlags := BIF_RETURNONLYFSDIRS+BIF_EDITBOX+BIF_STATUSTEXT; end; //выводим диалог lpItemID := SHBrowseForFolder(BrowseInfo); //папка, указанная юзером, существует? if lpItemId <> nil then begin SHGetPathFromIDList(lpItemID, Path); result:=path; GlobalFreePtr(lpItemID); //освобождаем ресурсы end; end; end. |
![]() |
![]() |
#3 |
Супер-Модератор
|
![]()
Кхе-кхе....на делфе с использованием Api я знаю как сделать
![]() |
![]() |
![]() |
#4 | |
Местный
Регистрация: 20.09.2007
Сообщений: 4,226
Вы сказали Спасибо: 1
Поблагодарили 6,561 раз(а) в 1,660 сообщениях
|
![]() Цитата:
![]() |
|
![]() |
![]() |
#5 |
Местный
Регистрация: 20.09.2007
Сообщений: 4,226
Вы сказали Спасибо: 1
Поблагодарили 6,561 раз(а) в 1,660 сообщениях
|
![]()
Так решился вопрос с диалогом? Это же если я правильно помню сам .NET Framework содержит класс System.Windows.Forms.FolderBrowserDialog?
|
![]() |
![]() |
#6 |
Местный
Регистрация: 26.04.2006
Адрес: Удомля, гдежещё
Сообщений: 1,986
Вы сказали Спасибо: 676
Поблагодарили 257 раз(а) в 167 сообщениях
|
![]()
Проверил, у меня в фреймворке 3.5 на висте работает без проблем.
Проверь, получает ли у тебя код доступ к это папке. Когда отображается диалог, есть ли там хотя бы сам листбокс (или тривью, как он в дельфе назывался). В студии не помню как этот компонент называется. Посмотри, может у тебя сам путь не существует (хотя парадокс, быть такого не могет). Может быть запускается от имени системы, поэтому и нет персонал. Но диалог в той форме как ты его запускаешь работает стопудово. Ща файлик приложу. <Файл в приложении.> Попробуй тестовый код написать из под юзера. Кстати, у Scream есть компонентик (самописный), который сам строит дерево. Не такой красивый, как системный, зато точно работает. В) правда ему надо скормить структуру папок. С вложением фигня какая-то - на диске файл нормально читабельный, 90 кб, как загружаю во вложение, он его нафига-то пережимает В( зачем, хздиалог.jpg
__________________
I never saw a wildthing sorring for itself. A small bird will drop frozen dead without ever felt sorry for itself. Последний раз редактировалось Pitty; 08.05.2008 в 23:16. |
![]() |
![]() |
#7 | |
Супер-Модератор
|
![]() Цитата:
|
|
![]() |
![]() |
#8 | |
Местный
|
![]() Цитата:
|
|
![]() |
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
|
|