Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Диалог "Открыть папку" 
:(
    Опции темы
artsb
  Дата 24.11.2007, 23:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Подскажите как открыть диалог выбора папки. Не TOpenDialog, а там маленькое окошко с деревом каталагов. Желательно, чтобы можно было создавать новую папку с помощью него. Ну и расскажите плиз как с ним работать.
Среди стандартных не нашёл (может плохо искал  smile ). 
Спасибо.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Fazil6
Дата 25.11.2007, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 11
Всего: 60



Код

SelectDirectory("C:\\",
        TSelectDirOpts() << sdAllowCreate << sdPerformCreate << sdPrompt
        ,0)

PM MAIL   Вверх
artsb
Дата 25.11.2007, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



А какой-нибудь компонент нужно кидать на форму?
Не мог бы объяснить то, что написал?
И куда сохраняется выбранный путь?
 smile 


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Fazil6
Дата 25.11.2007, 21:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 11
Всего: 60



Цитата(artsb @  25.11.2007,  21:52 Найти цитируемый пост)
И куда сохраняется выбранный путь?

сори, конечно первым параметром должна быть ссылка и это не скомпилится. В эту ссылку и сохранится.
В хэлпе билдера все что нужно про эту функцию написано. 
PM MAIL   Вверх
artsb
Дата 25.11.2007, 22:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Спасибо разобрался, но это не совсем, то, что нужно.
Посмотрите скрин. Это выбор папки с музыкой в винампе.


Присоединённый файл ( Кол-во скачиваний: 146 )
Присоединённый файл  open_folder.JPG 15,07 Kb


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Nat
Дата 26.11.2007, 08:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 45
Регистрация: 16.4.2007

Репутация: нет
Всего: нет



Попробуй RX компаненты, в частности RXDirectoryEdit и RXFilenameEdit.
PM MAIL   Вверх
artsb
Дата 26.11.2007, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Попробовал,то , что предлагал Nat, но это тоже самое о чём писал Fazil6. А мне нужно вызвать такое окно как на рисунке. Помогите плиз.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Fazil6
Дата 26.11.2007, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

Репутация: 11
Всего: 60



Цитата(artsb @  26.11.2007,  10:01 Найти цитируемый пост)
Попробовал,то , что предлагал Nat, но это тоже самое о чём писал Fazil6. А мне нужно вызвать такое окно как на рисунке. Помогите плиз.

плохо ты пробовал.
Код

DialogKind = dkWin32

PM MAIL   Вверх
artsb
Дата 26.11.2007, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Fazil6 спасибо, получилось. А как добавить поле "Создать папку"?


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
artsb
Дата 27.11.2007, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



На другом форуме подсказали, что можно с помощью API функции. 
Код

#include <FileCtrl.hpp>
...
AnsiString FolderIn;
if( SelectDirectory("Текст подсказки над окном" , "Caption_string" , FolderIn))
                {
                LabeledEdit1->Text=FolderIn;
                }

Это как раз то, что нужно. Только как сделать, чтобы отображалась кнопка для создания новой папки?


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
artsb
Дата 27.11.2007, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Так кто-нибудь знает или нет?


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
artsb
Дата 27.11.2007, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



На другом форуме советуют пользоваться функцией SHGetPathFromIDList. 
Код

  char FileName[MAX_PATH+1];
  BROWSEINFO bi;
  memcpy(FileName, "D:\\", 3);
      bi.hwndOwner = hWnd;
      bi.pidlRoot = NULL;
      bi.pszDisplayName = FileName;
      bi.lpszTitle = "Заголовок";
      bi.ulFlags = BIF_STATUSTEXT
                  |BIF_BROWSEFORCOMPUTER
                  |BIF_EDITBOX
                  |BIF_NEWDIALOGSTYLE
                  |BIF_NONEWFOLDERBUTTON;
                  //|BIF_BROWSEINCLUDEFILES;
      bi.lpfn = NULL;

   SHGetPathFromIDList(SHBrowseForFolder(&bi),FileName);

Но когда я пишу этот код, при запуске вылетают ошибки. Может нужно какие-то библиотеки или ещё что-то подключить?


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
artsb
Дата 27.11.2007, 23:36 (ссылка)   | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Народ ну помогите-е-е-е!
Странно?! Такое ощущение как-будто с этим никто и никогда не сталкивался. 
Может есть компонент какой-нибудь?
Вот картинка, того что мне нужно:



Присоединённый файл ( Кол-во скачиваний: 19 )
Присоединённый файл  open_folder.JPG 23,92 Kb


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
artsb
Дата 28.11.2007, 21:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



НУ помогите плиз. smile 


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Alca
Дата 29.11.2007, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



#include <shlobj.h>
Показать диалог выбора директории с кнопкой для создания новой
Код

    char FileName[MAX_PATH+1];
    BROWSEINFO bi;
    memcpy(FileName, "D:\\", 3);
    bi.hwndOwner = /*hWnd*/0;
    bi.pidlRoot = NULL;
    bi.pszDisplayName = FileName;
    bi.lpszTitle = "Заголовок";
    bi.ulFlags = BIF_STATUSTEXT
              |BIF_BROWSEFORCOMPUTER
              |BIF_EDITBOX
              |BIF_NEWDIALOGSTYLE
              /*|BIF_NONEWFOLDERBUTTON*/
              |BIF_USENEWUI;
              //|BIF_BROWSEINCLUDEFILES;
    bi.lpfn = NULL;


Это сообщение отредактировал(а) Alca - 29.11.2007, 12:00


--------------------
PM WWW ICQ Skype Jabber   Вверх
artsb
Дата 29.11.2007, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



На форме Edit1 и Button1.
Подключил shlobj.h
В обработчике нажатия кнопки написал:
Код

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    char FileName[MAX_PATH+1];
    BROWSEINFO bi;
    memcpy(FileName, "D:\\", 3);
    bi.hwndOwner = /*hWnd*/0;
    bi.pidlRoot = NULL;
    bi.pszDisplayName = FileName;
    bi.lpszTitle = "Заголовок";
    bi.ulFlags = BIF_STATUSTEXT
              |BIF_BROWSEFORCOMPUTER
              |BIF_EDITBOX
              |BIF_NEWDIALOGSTYLE
              /*|BIF_NONEWFOLDERBUTTON*/
              |BIF_USENEWUI;
              //|BIF_BROWSEINCLUDEFILES;
    bi.lpfn = NULL;
    SHGetPathFromIDList(SHBrowseForFolder(&bi),FileName);
    Edit1->Text=FileName;
}

При запуске вылетает:
  [C++ Error] shobjidl.h(2193): E2238 Multiple declaration for 'FOLDERSETTINGS'
  [C++ Error] shobjidl.h(8095): E2238 Multiple declaration for 'DESKBANDINFO'
  [C++ Error] shlobj.h(1422): E2238 Multiple declaration for 'FVSHOWINFO'
  [C++ Error] shlobj.h(3457): E2238 Multiple declaration for 'SHELLFLAGSTATE'

В чём может быть дело?


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Alca
Дата 29.11.2007, 19:25 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Я просто в shlobj.h переименовал:

FOLDERSETTINGS -> FOLDERSETTINGS_
DESKBANDINFO    -> DESKBANDINFO_
FVSHOWINFO       -> FVSHOWINFO_
SHELLFLAGSTATE -> SHELLFLAGSTATE_

Может какие-то ещё способы есть - я не парился, сделал так.

Это сообщение отредактировал(а) Alca - 29.11.2007, 19:28


--------------------
PM WWW ICQ Skype Jabber   Вверх
artsb
Дата 29.11.2007, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



Всё! Спасибо! То что нужно!

Интересно, а то что я в shlobj.h произвёл изменения как Alca советовал, не повлечёт за собой каких-нибудь последствий???

И  ещё, кто-нибудь может объяснить предназначение всех флагов?


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
dumb
Дата 30.11.2007, 21:46 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


sceloglauxalbifacies
****


Профиль
Группа: Экс. модератор
Сообщений: 2929
Регистрация: 16.6.2006

Репутация: 32
Всего: 158



Цитата(artsb @  29.11.2007,  22:55 Найти цитируемый пост)
а то что я в shlobj.h произвёл изменения как Alca советовал, не повлечёт за собой каких-нибудь последствий?
за такое в приличных домах клавиатурой по пальцам бьют. smile

http://forum.vingrad.ru/forum/topic-106576/index.html
PM MAIL   Вверх
Alca
Дата 30.11.2007, 22:28 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3993
Регистрация: 14.6.2006

Репутация: 25
Всего: 50



Цитата

за такое в приличных домах клавиатурой по пальцам бьют.

Шура не бейте!

Это сообщение отредактировал(а) Alca - 30.11.2007, 22:31


--------------------
PM WWW ICQ Skype Jabber   Вверх
artsb
Дата 1.12.2007, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2280
Регистрация: 17.7.2007
Где: центр Вселенной

Репутация: 39
Всего: 64



dumb спасибо.
Всем спасибо.


--------------------
Чем отличается умный человек от мудрого?
Умный - выпутается из любой ситуации.
Мудрый - просто в неё не попадёт.
PM MAIL   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0855 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.