C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Работа с директорией, Диалог выбора директ./вывод длин. имени
Schumi
Отправлено: 16.06.2004, 13:56


Машинист паровоза

Группа: Участник
Сообщений: 206



Подскажите,как вызвать стандартный диалог выбора папки,а то,что-то не найду.
И еще:есть длинное имя папки.Как его красиво обрезать на заданное число символов.Типа: С:\Program Files\..\Include\
Valdemar
Отправлено: 16.06.2004, 14:21


Мастер участка

Группа: Участник
Сообщений: 433



Может вас устроит функция MinimizeName, правда она сокращает путь не до нужного количества символов, а до определенной длины в пикселях для последующего вывода на Canvas.
_must_die
Отправлено: 16.06.2004, 15:26


Ученик-кочегар

Группа: Участник
Сообщений: 9



Если нужно работать только с каталогом то можно использовать

BROWSEINFO bi;
char WDir[MAX_PATH];
char FolderName[MAX_PATH];
LPITEMIDLIST ItemID;
memset(&bi, 0, sizeof(BROWSEINFO));
memset(WDir, 0, MAX_PATH);
bi.hwndOwner = Handle;
bi.pszDisplayName = FolderName;
bi.ulFlags = BIF_USENEWUI | BIF_RETURNFSANCESTORS;
bi.lpszTitle = "Select Working Directory!";
ItemID = SHBrowseForFolder(&bi);
SHGetPathFromIDList(ItemID, WDir);
GlobalFreePtr(ItemID);

в переменной WDir будет путь к каталогу

Отредактировано _must_die — 16/06/2004, 16:30
Gedeon
Отправлено: 16.06.2004, 16:11


Ветеран

Группа: Модератор
Сообщений: 1742



QUOTE (Schumi @ 16/06/2004, 14:58)
Подскажите,как вызвать стандартный диалог выбора папки,а то,что-то не найду.

CODE

void __fastcall TForm1::Button1Click(TObject *Sender)
{
 AnsiString Dir = "C:\\Program Files\\MyApp";
 if (SelectDirectory(Dir, TSelectDirOpts() << sdAllowCreate << sdPerformCreate << sdPrompt,SELDIRHELP))
   Label1->Caption = Dir;
}
Schumi
Отправлено: 17.06.2004, 14:22


Машинист паровоза

Группа: Участник
Сообщений: 206



Есть такая функция SHBrowseForFolder,но она почему-то недоступна
_must_die
Отправлено: 17.06.2004, 17:06


Ученик-кочегар

Группа: Участник
Сообщений: 9



Попробуй подключить
WindowsX.h
MSDN они описаны в shlobj.h

Отредактировано _must_die — 17/06/2004, 18:09
Gedeon
Отправлено: 17.06.2004, 17:41


Ветеран

Группа: Модератор
Сообщений: 1742



QUOTE
Подскажите,как вызвать стандартный диалог выбора папки,а то,что-то не найду.

Это именно SelectDirectory.
Schumi
Отправлено: 18.06.2004, 11:50


Машинист паровоза

Группа: Участник
Сообщений: 206



Еще такой вопрос:в пакета RXlib есть компонент TDirectoryEdit,совмещенный edit и иконка,которая позволяет выбирать папку.При этом,когда кликается кнопка выбора директории,там можно выбрать представление диалога в двух форматах:vcl и win32.Я посмотрел в pas файле компонента было указаны команды: SelectDirectory (vcl) и BrowseDirectory (win32).Раз пакет создается,значит же должна быть и Билдере такая команда — BrowseDirectory.
Но такую команду он не знает и в хелпе про нее не сказано.Почему так может быть?

Я бы использовал и SelectDirectory,но там надписи на англ.,а мне надо чтобы все было по русски

Вернуться в Вопросы программирования в C++Builder