Удомельский форум   ◊
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 вне форума  
Старый 09.05.2008, 17:23   #8
Pitty
Местный
 
Регистрация: 26.04.2006
Адрес: Удомля, гдежещё
Сообщений: 1,986
Вы сказали Спасибо: 676
Поблагодарили 257 раз(а) в 167 сообщениях
По умолчанию

Цитата:
Сообщение от Troll Посмотреть сообщение
В том то и дело, что нету даже лист бокса, вообще ни чего нету, кроме окна и кнопок ))) Пока эксперементировать времени небыло, найду в чем проблемма отпишусь!
а какой фреймворк? и студия. У меня работает без проблем. И ты под вистой или ХП проверял? может фреймворк глючный.
Кстати, жестоко что даже листбокса нет. Похоже действительно глючный FCL.
__________________
I never saw a wildthing sorring for itself.
A small bird will drop frozen dead without ever felt sorry for itself.
Pitty вне форума  
Старый 10.05.2008, 11:09   #9
Troll
Супер-Модератор
 
Аватар для Troll
 
Регистрация: 26.04.2006
Адрес: Удомля
Сообщений: 1,454
Вы сказали Спасибо: 70
Поблагодарили 536 раз(а) в 332 сообщениях
Отправить сообщение для Troll с помощью ICQ
По умолчанию

Цитата:
Сообщение от Pitty Посмотреть сообщение
а какой фреймворк? и студия. У меня работает без проблем. И ты под вистой или ХП проверял? может фреймворк глючный.
Кстати, жестоко что даже листбокса нет. Похоже действительно глючный FCL.
XP, фреймворк 2.0, SharpDevelop 2.1.

З.Ы. Ни хотит кушать ни какие из стандартных папок в качесте точки отправления. Вероятен глюк системы или внутренняя реализация класса. Больше на ум ни чего не приходит.

Последний раз редактировалось Troll; 10.05.2008 в 11:46.
Troll вне форума  
Старый 10.05.2008, 13:26   #10
Pitty
Местный
 
Регистрация: 26.04.2006
Адрес: Удомля, гдежещё
Сообщений: 1,986
Вы сказали Спасибо: 676
Поблагодарили 257 раз(а) в 167 сообщениях
По умолчанию

Цитата:
Сообщение от Troll Посмотреть сообщение
XP, фреймворк 2.0, SharpDevelop 2.1.

З.Ы. Ни хотит кушать ни какие из стандартных папок в качесте точки отправления. Вероятен глюк системы или внутренняя реализация класса. Больше на ум ни чего не приходит.
попробуй поставить сервиспак для фреймворка, попробуй откомпилить программу и выложить ее - я попробуй у себя запустить (фреймворк 3.5), попробуй поставить виртуал бокс и попробуй разные фреймворки. Кстати, с шарпдевелопом ни разу не работал. Я пробовал в студии 2008. Посмотри, что договорит дизасм, что там пишут на IL - правильно ли выполняются вызовы.
Для эксперимента, попробуй вызвать какие-нибудь другие диалоги, может глобальный глюк.
__________________
I never saw a wildthing sorring for itself.
A small bird will drop frozen dead without ever felt sorry for itself.
Pitty вне форума  
 


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

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

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

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


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


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