Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/30: Рейтинг темы: голосов - 30, средняя оценка - 4.63
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978

OpenDialog - восстановить текущую директорию

18.03.2012, 15:07. Показов 5847. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Использую OpenDialog для выбора файла. Так вот он никак не хочет восстанавливать текущую директорию. Кроме того, если ничего не предпринимать, показывает не текущую директорию, а "Мои документы"
Сделал в коде
C++
1
2
 OpenDialog1->InitialDir = ".\\";
 OpenDialog1->Execute()...
Со свойством Options - ofNoChangeDir игрался.
Все равно. При отказе от выбора в следующий раз показывает последнюю директорию, в которой происходил выбор.
При выборе файла делает текущей ту директорию, откуда родом выбранный файл.
Соответственно ломается вся работа программы, т.к. она рассчитывает на файлы в своей директории.
Лечится ли это как-то?
Или руками придется запоминать и восстанавливать текущую директорию ?
Или это болезнь не Бюльдера, а Виндоуса?
Странно как-то. Хочу то я вещей вполне естественных

Добавлено через 33 секунды
Builder - 6

Добавлено через 1 минуту
Windows XP
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.03.2012, 15:07
Ответы с готовыми решениями:

Как открыть текущую директорию? Как извлечь имя файла?
1) Как в OpenDialog1 использовать при открытии текущую директорию? Привязывалось на OnClick кнопки при ...

Вывести текущую директорию
Вывести текущую директорию. Как?

Как в консольном приложении узнать текущую директорию?
Пишу в Visual C++ 2008.

7
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
18.03.2012, 19:25
Может это поможет...
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
18.03.2012, 19:32  [ТС]
Samrisbe, Не, не помогло. Но все-равно спасибо за участие.
1
 Аватар для Samrisbe
1365 / 732 / 67
Регистрация: 28.01.2011
Сообщений: 2,069
18.03.2012, 19:43
Вот так я настраиваю FontDialog я подозреваю они с одной оперы с OpenDialog думаю уважаемый Байт найдет чтонибудь полезное с примера:
C++
1
2
3
4
5
6
7
8
9
if (FileExists("c:\\Windows\\Temp\\Font.txt")){
TStringList *list = new TStringList;
list->LoadFromFile("c:\\Windows\\Temp\\Font.txt");
FontDialog1->Font->Color = TColor(StrToInt(list->Strings[0]));
FontDialog1->Font->Size = StrToInt(list->Strings[1]);
FontDialog1->Font->Name = list->Strings[2];
const AnsiString sFontStyle = list->Strings[3];
SetPropValue(FontDialog1->Font,"Style",sFontStyle);
delete list; }
Миниатюры
OpenDialog - восстановить текущую директорию  
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
18.03.2012, 19:57  [ТС]
Samrisbe, увы, в твоем замечательном примере нет ничего про смену папки.
Все-таки чует мое сердце, что эти делом должен управлять ofNoChangeDir, но тут видать бюльдеровский баг.
Ладно, сделаем сами. Не впервой.
0
return (true);
 Аватар для mimicria
1977 / 1112 / 221
Регистрация: 19.04.2011
Сообщений: 2,346
19.03.2012, 09:45
При старте программы
C++
1
CD=GetCurrentDir(); //CD - глобальный AnsiString
Перед запуском диалога
C++
1
2
 OpenDialog1->InitialDir=CD;
 OpenDialog1->Execute();
1
Now I Matrix
137 / 134 / 28
Регистрация: 01.03.2010
Сообщений: 223
19.03.2012, 11:10
C++
1
2
3
4
5
6
AnsiString dir = GetCurrentDir(); //Запоминаем тек. директорию 
OpenDialog1->InitialDir=CD; //Устанавливаем её OpenDialog'y
//операции с opendialog...
//В конце:
SetCurrentDir(dir.c_str()); //Возвращаем программе старую директорию
//(или SetCurrentDirectory(dir.c_str()), не помню точно)
1
Диссидент
Эксперт C
 Аватар для Байт
27714 / 17332 / 3810
Регистрация: 24.12.2010
Сообщений: 38,978
19.03.2012, 16:32  [ТС]
Всем спасибо,
Но это значит, что у самого OpenDialog такой возможности нет.
Нелепо как-то. Флагов на пол-страницы. А самого казалось бы естественного - нет.
Ну чтож, будем иметь в виду...

Добавлено через 2 часа 36 минут
Кроме того куча услуг OpenDialog мне совершенно не нужна. Например, мне не нужно, чтобы пользователь мог скакать по директориям, щелкать правой мышью на файлах и "открывать" их. Просто выбор или отказ.
В итоге пришел к тому, что все это можно сделать простеньким ListBox-ом
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
19.03.2012, 16:32
Помогаю со студенческими работами здесь

Нужно вывести на экран информацию про системную директорию и директорию windows
Помогите плз!Нужно написать прогу которая выводит на екран такую инфу:Computer name,user name,system directory,windows directory.windows...

OpenDialog меняет текущую директорию
Что делать что бы OpenDialog не менял текущую директорию, из-за этого приложение не может найти файл

OpenDialog не освобождает директорию
Доброго всем времени суток. Есть программа, в которой, среди всего прочего, используется OpenDialog. Так вот после OpenDialog.Execute,...

Не отображает текущую директорию BASH
Возникла проблема с bash при запуске не отображает текущую директорию, после Ctrl+С всё нормально работает.Помогите пожалуйста понять что...

Как определить текущую директорию?
Подскажите как определить путь к текущему каталогу из которого я запущен? Нагуглил только argv, но он дает путь к exe, а мне нужно к...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru