powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / CommonDialog и папка. Баг или нет?
16 сообщений из 16, страница 1 из 1
CommonDialog и папка. Баг или нет?
    #36551189
TpaBka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть у меня программка для работы с файлами. Пользователь выбирает нужный ему файл, нажимает сохранить и файл переносится на сервер,
а в БД сохраняется новый путь к файлу и т.д. Затем из программы можно открыть это файл, переименовать или удалить.

Так вот использую я в своей программе CommonDialog и заметил такой баг:
Юзер в проге нажимает кнопку добавить файл открывается CommonDialog
Допустим на рабочем столе есть папка с именем «Папка 1» в этой папке есть файлик с именем «Файл 1»
он выбирает этот файл нажимает сохранить дальше происходит то,
что я описал выше.
Допустим, дальше я захочу переименовать папку, которая осталась на рабочем столе с
«Папка 1» в «Папка 2» или вообще удалить её.
Если я буду делать это через винду, то увижу сообщение «Объект используется другим пользователем или программой ……»
У меня такое впечатление что CommonDialog не закрывается, а просто делается невидимым и из за него невозможно
работать с последней папкой в которой он брал файл.
Да чуть не забыл по умолчанию CommonDialog1.InitDir – не прописан.
Может, кто знает, что нужно установить в настройках CommonDialog чтобы такой ситуации не было?
А может это и не CommonDialog виноват, но вроде кроме его больше некому
Работаю с файлами через FSO и есть еще Shell
...
Рейтинг: 0 / 0
CommonDialog и папка. Баг или нет?
    #36551242
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если форма, на которой коммондиалог не закрыта, то, видимо, он продолжает держать текущий путь.
Так что после его закрытия очистите ему свойства типа Filename, Initdir и т.п., а перед следующим использованием вновь инициализируйте.
...
Рейтинг: 0 / 0
CommonDialog и папка. Баг или нет?
    #36551290
TpaBka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProЕсли форма, на которой коммондиалог не закрыта, то, видимо, он продолжает держать текущий путь.
Так что после его закрытия очистите ему свойства типа Filename, Initdir и т.п., а перед следующим использованием вновь инициализируйте.
Я как раз этим сейчас и занимаюсь, но прикол в том, что если хоть раз использовать CommonDialog
а затем закрыть все формы перейти в режим программирования проекта то он всё равно зараза не хочет отпускать папку.
...
Рейтинг: 0 / 0
CommonDialog и папка. Баг или нет?
    #36551316
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TpaBkaЯ как раз этим сейчас и занимаюсь, но прикол в том, что если хоть раз использовать CommonDialog
а затем закрыть все формы перейти в режим программирования проекта то он всё равно зараза не хочет отпускать папку.

А если закрыть среду - отпускает?

Можно попробовать перевести его на какую-нить нейтральную папку (на корень, например), только неясно, получится ли это без запуска диалога....
...
Рейтинг: 0 / 0
CommonDialog и папка. Баг или нет?
    #36551345
TpaBka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProА если закрыть среду - отпускает?.
Да

На счет нейтральной папки тоже вариант,
но я сейчас задумался над тем, а можно ли его добавлять динамически,
а затем уничтожать
Случайно не знаете, как его добавить?
Все-таки не совсем приятно знать, что у тебя в программе висит без надобности окно и закроется оно тогда когда закроется проект
...
Рейтинг: 0 / 0
CommonDialog и папка. Баг или нет?
    #36551347
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TpaBkaСлучайно не знаете, как его добавить?
Все-таки не совсем приятно знать, что у тебя в программе висит без надобности окно и закроется оно тогда когда закроется проект

Попробуйте через Controls.Add
...
Рейтинг: 0 / 0
CommonDialog и папка. Баг или нет?
    #36551352
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProTpaBkaСлучайно не знаете, как его добавить?
Все-таки не совсем приятно знать, что у тебя в программе висит без надобности окно и закроется оно тогда когда закроется проект

Попробуйте через Controls.Add

Только вы же говорите, что при закрытии ФОРМЫ на которой он находится, папку не отпускает. То есть динамическое добавление может не помочь.
...
Рейтинг: 0 / 0
CommonDialog и папка. Баг или нет?
    #36551362
TpaBka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
Dim WithEvents ctlCommandDialog As CommonDialog

Private Sub Command1_Click()
Set ctlCommandDialog = Controls.Add("CommonDialog", "ctlCommandDialog1", Me)
End Sub

Ошибка Недопустимій ряд Class

короче неможет найти "CommonDialog"
...
Рейтинг: 0 / 0
CommonDialog и папка. Баг или нет?
    #36551369
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо полностью специфицировать путь:

MSComDlg.CommonDialog
...
Рейтинг: 0 / 0
CommonDialog и папка. Баг или нет?
    #36551392
TpaBka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо добавить получилось, значит получится и уничтожить
но времени уже нет уборщица гонит домой
с дома отпишусь получилось или нет
...
Рейтинг: 0 / 0
CommonDialog и папка. Баг или нет?
    #36551394
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TpaBkaно времени уже нет уборщица гонит домой

Controls.Remove("Уборщица")
...
Рейтинг: 0 / 0
CommonDialog и папка. Баг или нет?
    #36551617
TpaBka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProControls.Remove("Уборщица")


Не динамика ничего не дала
Думаю нужно покопаться в API ответ наверняка где-то там
...
Рейтинг: 0 / 0
CommonDialog и папка. Баг или нет?
    #36551813
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я думаю, что у среды выполнения есть понятие "текущий путь" и соммондиалог его меняет. И этот текущий путь используется если вы не задали InitDir. То есть надо найти способ узнать текущий путь.

Кстати, а не пробовали скомпилить exe-шник и проверить оттуда?
...
Рейтинг: 0 / 0
CommonDialog и папка. Баг или нет?
    #36551860
ZVI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема возникает из-за того, что диалог устанавливает текущий путь для приложения.
Аналогичную ситуацию можно получить если в Word-е или в Excel-е воспользоваться любым файловым диалогом (открыть/сохранить и т.п.), выбрать папку, закрыть диалог и не закрывать офисное приложение. Пока это приложение не будет закрыто, его текущий каталог будет залочен от переименования и переноса. Чтобы избавиться от проблемы достаточно сменить текущий каталог, напримре, на корневой.
Пример кода:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Sub Main()
  With CreateObject("MSComDlg.CommonDialog")  ' или  New CommonDialog - если есть ссылка на Comdlg32.ocx
    .DialogTitle = "Open File Dialog"
    .Filter = "All files (*.*) | *.*"
    .ShowOpen
    If Len(.FileName) Then MsgBox .FileName
  End With
  'Вот это изменит текущий путь к папке на корневой
  ChDir "\"
End Sub
...
Рейтинг: 0 / 0
CommonDialog и папка. Баг или нет?
    #36551968
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProТо есть надо найти способ узнать текущий путь.

Разумеется, я имел ввиду не "узнать", а "изменить"

ZVI
Код: plaintext
ChDir "\"


точно, как я мог забыть про эту команду... спасибо
...
Рейтинг: 0 / 0
CommonDialog и папка. Баг или нет?
    #36552156
TpaBka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо действительно работает: ChDir "\"
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / CommonDialog и папка. Баг или нет?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]