|
|
|
CommonDialog и папка. Баг или нет?
|
|||
|---|---|---|---|
|
#18+
Есть у меня программка для работы с файлами. Пользователь выбирает нужный ему файл, нажимает сохранить и файл переносится на сервер, а в БД сохраняется новый путь к файлу и т.д. Затем из программы можно открыть это файл, переименовать или удалить. Так вот использую я в своей программе CommonDialog и заметил такой баг: Юзер в проге нажимает кнопку добавить файл открывается CommonDialog Допустим на рабочем столе есть папка с именем «Папка 1» в этой папке есть файлик с именем «Файл 1» он выбирает этот файл нажимает сохранить дальше происходит то, что я описал выше. Допустим, дальше я захочу переименовать папку, которая осталась на рабочем столе с «Папка 1» в «Папка 2» или вообще удалить её. Если я буду делать это через винду, то увижу сообщение «Объект используется другим пользователем или программой ……» У меня такое впечатление что CommonDialog не закрывается, а просто делается невидимым и из за него невозможно работать с последней папкой в которой он брал файл. Да чуть не забыл по умолчанию CommonDialog1.InitDir – не прописан. Может, кто знает, что нужно установить в настройках CommonDialog чтобы такой ситуации не было? А может это и не CommonDialog виноват, но вроде кроме его больше некому Работаю с файлами через FSO и есть еще Shell ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2010, 17:38 |
|
||
|
CommonDialog и папка. Баг или нет?
|
|||
|---|---|---|---|
|
#18+
Если форма, на которой коммондиалог не закрыта, то, видимо, он продолжает держать текущий путь. Так что после его закрытия очистите ему свойства типа Filename, Initdir и т.п., а перед следующим использованием вновь инициализируйте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2010, 17:58 |
|
||
|
CommonDialog и папка. Баг или нет?
|
|||
|---|---|---|---|
|
#18+
Shocker.ProЕсли форма, на которой коммондиалог не закрыта, то, видимо, он продолжает держать текущий путь. Так что после его закрытия очистите ему свойства типа Filename, Initdir и т.п., а перед следующим использованием вновь инициализируйте. Я как раз этим сейчас и занимаюсь, но прикол в том, что если хоть раз использовать CommonDialog а затем закрыть все формы перейти в режим программирования проекта то он всё равно зараза не хочет отпускать папку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2010, 18:16 |
|
||
|
CommonDialog и папка. Баг или нет?
|
|||
|---|---|---|---|
|
#18+
TpaBkaЯ как раз этим сейчас и занимаюсь, но прикол в том, что если хоть раз использовать CommonDialog а затем закрыть все формы перейти в режим программирования проекта то он всё равно зараза не хочет отпускать папку. А если закрыть среду - отпускает? Можно попробовать перевести его на какую-нить нейтральную папку (на корень, например), только неясно, получится ли это без запуска диалога.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2010, 18:25 |
|
||
|
CommonDialog и папка. Баг или нет?
|
|||
|---|---|---|---|
|
#18+
Shocker.ProА если закрыть среду - отпускает?. Да На счет нейтральной папки тоже вариант, но я сейчас задумался над тем, а можно ли его добавлять динамически, а затем уничтожать Случайно не знаете, как его добавить? Все-таки не совсем приятно знать, что у тебя в программе висит без надобности окно и закроется оно тогда когда закроется проект ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2010, 18:39 |
|
||
|
CommonDialog и папка. Баг или нет?
|
|||
|---|---|---|---|
|
#18+
TpaBkaСлучайно не знаете, как его добавить? Все-таки не совсем приятно знать, что у тебя в программе висит без надобности окно и закроется оно тогда когда закроется проект Попробуйте через Controls.Add ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2010, 18:39 |
|
||
|
CommonDialog и папка. Баг или нет?
|
|||
|---|---|---|---|
|
#18+
Shocker.ProTpaBkaСлучайно не знаете, как его добавить? Все-таки не совсем приятно знать, что у тебя в программе висит без надобности окно и закроется оно тогда когда закроется проект Попробуйте через Controls.Add Только вы же говорите, что при закрытии ФОРМЫ на которой он находится, папку не отпускает. То есть динамическое добавление может не помочь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2010, 18:40 |
|
||
|
CommonDialog и папка. Баг или нет?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. Ошибка Недопустимій ряд Class короче неможет найти "CommonDialog" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2010, 18:44 |
|
||
|
CommonDialog и папка. Баг или нет?
|
|||
|---|---|---|---|
|
#18+
Надо полностью специфицировать путь: MSComDlg.CommonDialog ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2010, 18:46 |
|
||
|
CommonDialog и папка. Баг или нет?
|
|||
|---|---|---|---|
|
#18+
Спасибо добавить получилось, значит получится и уничтожить но времени уже нет уборщица гонит домой с дома отпишусь получилось или нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2010, 18:53 |
|
||
|
CommonDialog и папка. Баг или нет?
|
|||
|---|---|---|---|
|
#18+
TpaBkaно времени уже нет уборщица гонит домой Controls.Remove("Уборщица") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2010, 18:55 |
|
||
|
CommonDialog и папка. Баг или нет?
|
|||
|---|---|---|---|
|
#18+
Shocker.ProControls.Remove("Уборщица") Не динамика ничего не дала Думаю нужно покопаться в API ответ наверняка где-то там ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.03.2010, 21:31 |
|
||
|
CommonDialog и папка. Баг или нет?
|
|||
|---|---|---|---|
|
#18+
Я думаю, что у среды выполнения есть понятие "текущий путь" и соммондиалог его меняет. И этот текущий путь используется если вы не задали InitDir. То есть надо найти способ узнать текущий путь. Кстати, а не пробовали скомпилить exe-шник и проверить оттуда? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2010, 01:21 |
|
||
|
CommonDialog и папка. Баг или нет?
|
|||
|---|---|---|---|
|
#18+
Проблема возникает из-за того, что диалог устанавливает текущий путь для приложения. Аналогичную ситуацию можно получить если в Word-е или в Excel-е воспользоваться любым файловым диалогом (открыть/сохранить и т.п.), выбрать папку, закрыть диалог и не закрывать офисное приложение. Пока это приложение не будет закрыто, его текущий каталог будет залочен от переименования и переноса. Чтобы избавиться от проблемы достаточно сменить текущий каталог, напримре, на корневой. Пример кода: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2010, 05:07 |
|
||
|
CommonDialog и папка. Баг или нет?
|
|||
|---|---|---|---|
|
#18+
Shocker.ProТо есть надо найти способ узнать текущий путь. Разумеется, я имел ввиду не "узнать", а "изменить" ZVI Код: plaintext точно, как я мог забыть про эту команду... спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.03.2010, 09:27 |
|
||
|
|

start [/forum/topic.php?fid=60&tid=2159987]: |
0ms |
get settings: |
5ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
41ms |
get topic data: |
7ms |
get forum data: |
1ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 193ms |
| total: | 305ms |

| 0 / 0 |
