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,но там надписи на англ.,а мне надо чтобы все было по русски
|
|