Диссидент
Эксперт C
26711 / 16634 / 3648
Регистрация: 24.12.2010
Сообщений: 37,182
1

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

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

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

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

Добавлено через 1 минуту
Windows XP
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.03.2012, 15:07
Ответы с готовыми решениями:

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

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

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

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

7
1362 / 729 / 67
Регистрация: 28.01.2011
Сообщений: 2,058
18.03.2012, 19:25 2
Может это поможет...
1
Диссидент
Эксперт C
26711 / 16634 / 3648
Регистрация: 24.12.2010
Сообщений: 37,182
18.03.2012, 19:32  [ТС] 3
Samrisbe, Не, не помогло. Но все-равно спасибо за участие.
1
1362 / 729 / 67
Регистрация: 28.01.2011
Сообщений: 2,058
18.03.2012, 19:43 4
Вот так я настраиваю 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
26711 / 16634 / 3648
Регистрация: 24.12.2010
Сообщений: 37,182
18.03.2012, 19:57  [ТС] 5
Samrisbe, увы, в твоем замечательном примере нет ничего про смену папки.
Все-таки чует мое сердце, что эти делом должен управлять ofNoChangeDir, но тут видать бюльдеровский баг.
Ладно, сделаем сами. Не впервой.
0
return (true);
1976 / 1111 / 221
Регистрация: 19.04.2011
Сообщений: 2,345
19.03.2012, 09:45 6
При старте программы
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 7
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
26711 / 16634 / 3648
Регистрация: 24.12.2010
Сообщений: 37,182
19.03.2012, 16:32  [ТС] 8
Всем спасибо,
Но это значит, что у самого OpenDialog такой возможности нет.
Нелепо как-то. Флагов на пол-страницы. А самого казалось бы естественного - нет.
Ну чтож, будем иметь в виду...

Добавлено через 2 часа 36 минут
Кроме того куча услуг OpenDialog мне совершенно не нужна. Например, мне не нужно, чтобы пользователь мог скакать по директориям, щелкать правой мышью на файлах и "открывать" их. Просто выбор или отказ.
В итоге пришел к тому, что все это можно сделать простеньким ListBox-ом
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.03.2012, 16:32
Помогаю со студенческими работами здесь

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

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

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

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

Как узнать текущую директорию запущенного приложения?
Люди! Подскажите как я могу из моей VB программы узнать, в какой директории я нахожусь в данный...

Как при Process.Start() указать текущую директорию
Уже обращался сегодня по теме запуска сторонних приложений, но тут возникла другая проблема. Решил...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru