Удомельский форум   ◊
www.udomlya.ru | Медиа-Центр | Удомля КТВ | Старый форум

Вернуться   Удомельский форум > Hard&Soft > Программирование
Справка Пользователи Календарь Сообщения за день
 
 
Опции темы Опции просмотра
Старый 07.05.2008, 18:48   #1
Troll
Супер-Модератор
 
Аватар для Troll
 
Регистрация: 26.04.2006
Адрес: Удомля
Сообщений: 1,454
Вы сказали Спасибо: 70
Поблагодарили 536 раз(а) в 332 сообщениях
Отправить сообщение для Troll с помощью ICQ
Вопрос С# FolderBrowserDialog

В общем мне необходим диалог выбора папки. Согласно документации это он и есть. Но при его отображении я наблюдаю абсолютно чистое диалоговое окно с парой кнопок.
Код:
Код:
FolderBrowserDialog folderDialog = new FolderBrowserDialog();
folderDialog.ShowNewFolderButton = false;
folderDialog.RootFolder = Environment.SpecialFolder.Personal;
DialogResult result = folderDialog.ShowDialog();
Мб...кто знает что за нафиг?
Troll вне форума  
Старый 07.05.2008, 20:22   #2
Messiah
Местный
 
Аватар для Messiah
 
Регистрация: 20.09.2007
Сообщений: 4,226
Вы сказали Спасибо: 1
Поблагодарили 6,561 раз(а) в 1,660 сообщениях
По умолчанию

Цитата:
Сообщение от Troll Посмотреть сообщение
..кусь...Мб...кто знает что за нафиг?
А может так? Если title - заголовок диалога (поставить на свой вкус ), h - хэндл окна-владельца (то есть программы).

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.
Messiah вне форума  
Старый 08.05.2008, 12:05   #3
Troll
Супер-Модератор
 
Аватар для Troll
 
Регистрация: 26.04.2006
Адрес: Удомля
Сообщений: 1,454
Вы сказали Спасибо: 70
Поблагодарили 536 раз(а) в 332 сообщениях
Отправить сообщение для Troll с помощью ICQ
По умолчанию

Кхе-кхе....на делфе с использованием Api я знаю как сделать Вся загвозка в том, что под дотнет у мну приложение. Просмотрел кучу примеров, вроде усе правильно, да и ошибится там негде то. Во я и хз...
Troll вне форума  
Старый 08.05.2008, 13:48   #4
Messiah
Местный
 
Аватар для Messiah
 
Регистрация: 20.09.2007
Сообщений: 4,226
Вы сказали Спасибо: 1
Поблагодарили 6,561 раз(а) в 1,660 сообщениях
По умолчанию

Цитата:
Сообщение от Troll Посмотреть сообщение
Кхе-кхе....на делфе с использованием Api я знаю как сделать Вся загвозка в том, что под дотнет у мну приложение. Просмотрел кучу примеров, вроде усе правильно, да и ошибится там негде то. Во я и хз...
Мдя..вот и мне навскидку ничё в голову не приходит. Однако порассуждать да подумать надо...вроде как и ошибки нет.
Messiah вне форума  
Старый 08.05.2008, 21:20   #5
Messiah
Местный
 
Аватар для Messiah
 
Регистрация: 20.09.2007
Сообщений: 4,226
Вы сказали Спасибо: 1
Поблагодарили 6,561 раз(а) в 1,660 сообщениях
По умолчанию

Цитата:
Сообщение от Troll Посмотреть сообщение
...кусь...Вся загвозка в том, что под дотнет у мну приложение. Просмотрел кучу примеров, вроде усе правильно, да и ошибится там негде то. Во я и хз...
Так решился вопрос с диалогом? Это же если я правильно помню сам .NET Framework содержит класс System.Windows.Forms.FolderBrowserDialog?
Messiah вне форума  
Старый 08.05.2008, 23:09   #6
Pitty
Местный
 
Регистрация: 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.
Pitty вне форума  
Старый 09.05.2008, 16:53   #7
Troll
Супер-Модератор
 
Аватар для Troll
 
Регистрация: 26.04.2006
Адрес: Удомля
Сообщений: 1,454
Вы сказали Спасибо: 70
Поблагодарили 536 раз(а) в 332 сообщениях
Отправить сообщение для Troll с помощью ICQ
По умолчанию

Цитата:
Сообщение от Pitty Посмотреть сообщение
Проверил, у меня в фреймворке 3.5 на висте работает без проблем.
Проверь, получает ли у тебя код доступ к это папке.
Когда отображается диалог, есть ли там хотя бы сам листбокс (или тривью, как он в дельфе назывался). В студии не помню как этот компонент называется.
Посмотри, может у тебя сам путь не существует (хотя парадокс, быть такого не могет). Может быть запускается от имени системы, поэтому и нет персонал.
Вложение 13488
В том то и дело, что нету даже лист бокса, вообще ни чего нету, кроме окна и кнопок ))) Пока эксперементировать времени небыло, найду в чем проблемма отпишусь!
Troll вне форума  
Старый 10.05.2008, 22:59   #8
Ruble
Местный
 
Аватар для Ruble
 
Регистрация: 26.04.2006
Сообщений: 467
Вы сказали Спасибо: 57
Поблагодарили 52 раз(а) в 23 сообщениях
Отправить сообщение для Ruble с помощью ICQ
По умолчанию

Цитата:
Сообщение от Troll Посмотреть сообщение
В общем мне необходим диалог выбора папки. Согласно документации это он и есть. Но при его отображении я наблюдаю абсолютно чистое диалоговое окно с парой кнопок.
Код:
Код:
FolderBrowserDialog folderDialog = new FolderBrowserDialog();
folderDialog.ShowNewFolderButton = false;
folderDialog.RootFolder = Environment.SpecialFolder.Personal;
DialogResult result = folderDialog.ShowDialog();
Мб...кто знает что за нафиг?
было у меня такое, это не ошибка в прграммировании, это ошибка самой библиотеки - мне помогла тупо переустановка фрэймворков и студии.
Ruble вне форума  
 


Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 21:56. Часовой пояс GMT +3.


Для улучшения работы сайта и его взаимодействия с пользователями мы используем файлы cookie. Продолжая работу с сайтом, Вы разрешаете использование cookie-файлов. Вы всегда можете отключить файлы cookie в настройках Вашего браузера.
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. Перевод: zCarot