Переключение на Главную Страницу Страницы: 1 [2] 3 4 ... 9 ОтправитьПечать
Очень популярная тема (более 25 ответов) Перехват диалога открытия/сохранения файла (число прочтений - 83517 )
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #15 - 01. Июня 2009 :: 13:30
Печать  
Спасибо за работу. Надеюсь, что кому-нибудь еще кроме меня пригодится.
metaeditor писал(а) 01. Июня 2009 :: 11:06:
Функция отключения контекстного меню будет позже.

А пункт 3 - нереально?
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #16 - 02. Июня 2009 :: 10:58
Печать  
blindvic писал(а) 01. Июня 2009 :: 13:30:
Спасибо за работу. Надеюсь, что кому-нибудь еще кроме меня пригодится.
metaeditor писал(а) 01. Июня 2009 :: 11:06:
Функция отключения контекстного меню будет позже.

А пункт 3 - нереально?

Реально. Думаю сделать так:
делаем УстановитьНачальныйКаталог(), открываем диалог в котором все элементы для перемещения в другие папки будут недоступны.
« Последняя редакция: 02. Июня 2009 :: 12:17 - metaeditor »  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #17 - 04. Июня 2009 :: 10:25
Печать  
Готово.

Код
Выбрать все
ЗагрузитьВнешнююКомпоненту("OpenFileDialogsManager.dll")
менеджерДиалогов = СоздатьОбъект("AddIn.OpenFileDialogsManager");
менеджерДиалогов.УстановитьНачальныйКаталог("c:\111\"); //диалог будет открываться в указанном каталоге
менеджерДиалогов.БлокироватьДиалоги(1); //запретить открытие любых диалогов сохранения/выбора файла
менеджерДиалогов.ЗапретитьФайловыеОперации(1); //отключает в диалоге операции копирования, удаления, перемещения, контекстное меню
менеджерДиалогов.ЗапретитьИзменениеТекущегоКаталога(1); //запретить в диалоге перемещение в другие папки
менеджерДиалогов.ЗапретитьВставкуОбъектовВТаблицы(1); //отключает возможность вставки OLE-объектов в таблицы  



файл находится ниже
« Последняя редакция: 06. Июня 2009 :: 10:36 - metaeditor »  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #18 - 04. Июня 2009 :: 12:03
Печать  
Круто!
Проверю позже.
Вопрос:
менеджерДиалогов.ЗапретитьИзменениеТекущегоКаталога(1); //запретить в диалоге перемещение в другие папки

Можно ли запретить подниматься выше указанной папки, а внутри премещаться свободно. Т.е. назначить пользователю папку внутри к-й он может делать что хочет - и открывать и сохранять, а выше подняться - нельзя было?
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #19 - 04. Июня 2009 :: 13:07
Печать  
blindvic писал(а) 04. Июня 2009 :: 12:03:
Можно ли запретить подниматься выше указанной папки, а внутри премещаться свободно. Т.е. назначить пользователю папку внутри к-й он может делать что хочет - и открывать и сохранять, а выше подняться - нельзя было?

Думаю, можно. Оставить доступной только кнопку "Назад" и запретить кнопку "Вверх". Позже сделаю.
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #20 - 04. Июня 2009 :: 13:23
Печать  
Backspace наверное сработает
Или в поле "Имя файла" ввести ".." или полный путь к нужной директории.
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #21 - 04. Июня 2009 :: 13:27
Печать  
blindvic писал(а) 04. Июня 2009 :: 13:23:
Backspace наверное сработает

я не дам ему это сделать )

Цитата:
Или в поле "Имя файла" ввести ".." или полный путь к нужной директории


А вот это сработает...  тут я незнаю как бы получше это ограничить.
Но это нужен "особо грамотный" юзер, не каждый об этом знает.
Да и пусть лазиет, сделать то с папками и файлами всеравно ничего не сможет.
  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #22 - 04. Июня 2009 :: 13:51
Печать  
менеджерДиалогов.ЗапретитьИзменениеТекущегоКаталога(1); //запретить в диалоге перемещение в другие папки
не могу выбрать файл - только если вручную ввести имя файла

Я же говорил, что будет сложнее  Смущённый

Между прочим Ctrl-C работает, хоть ты отключил Ctrl-V

Улыбка Ctrl-Insert и Shift-Insert работают.

Я не знаю, как это работает, но, наверное, надо идти по пути событий - типа, при попытке смена каталога проверять путь, при файловой операции - отрубать
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #23 - 04. Июня 2009 :: 20:18
Печать  
Надо идти по пути Active Directory и не будет таких проблем/задач Подмигивание
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #24 - 06. Июня 2009 :: 10:32
Печать  
blindvic
Код
Выбрать все
менеджерДиалогов.ЗапретитьИзменениеТекущегоКаталога(1);
//если параметр равен 1, нельзя перейти ни в какой другой каталог
//если параметр равен 2, тогда аналогично 1, кроме подкаталогов текущего каталога 



плюс добавил исправление бага про 63 символа в имени файла

надеюсь, больше ни к чему не придерешься)

файл находится ниже
« Последняя редакция: 14. Июня 2009 :: 12:38 - metaeditor »  

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #25 - 06. Июня 2009 :: 16:29
Печать  
Слушай, мужик - большее человеческое тебе спасибо. Я не придираюсь - просто баги вылавливаю.
Потестим и это...
  
Наверх
 
IP записан
 
blindvic
Senior Member
****
Отсутствует



Сообщений: 486
Местоположение: Moldova
Зарегистрирован: 23. Июня 2008
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #26 - 10. Июня 2009 :: 12:24
Печать  
Хе-хе, работает!
Косметическое замечание (если будет настроение у тебя исправить). Когда запрещено выходить из текущего каталога, но разрешено входить в подкаталоги, кнопка Назад активируется, но кнопка Вверх и клавиша Backspace не работают.
Буду внедрять.  Очень довольный

ЗЫ Пожалуй, можно ветку переместить в репозиторий
  
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехватить диалог открытия/сохранения файла
Ответ #27 - 14. Июня 2009 :: 12:37
Печать  
Настроение появилось, исправил.
Также доделал компоненту, чтобы работала и с восьмерочными (юникодными) диалогами.
  

OpenFileDialogsManager_1003.zip ( 23 KB | Загрузки )

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
metaeditor
1c++ power user
Отсутствует


are you nuts?

Сообщений: 564
Зарегистрирован: 04. Июля 2006
Пол: Мужской
Re: Перехват диалога открытия/сохранения файла
Ответ #28 - 29. Июня 2009 :: 12:44
Печать  
по просьбе с инфостарта добавил ещё пару методов

Код
Выбрать все
менеджерДиалогов.ПоказыватьПанельНавигации(1); //отображать слева диалога панель с кнопками
менеджерДиалогов.УстановитьФильтр("Файлы Excel (*.xls)|*.xls|Текстовые файлы (*.txt)|*.txt|Все файлы (*.*)|*.*");
менеджерДиалогов.УстановитьНомерФильтра(3); 


  

OpenFileDialogsManager_1004.zip ( 24 KB | Загрузки )

Регистр.EAX.СводныйОстаток()
Наверх
 
IP записан
 
infossa
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 53
Зарегистрирован: 29. Мая 2006
Re: Перехват диалога открытия/сохранения файла
Ответ #29 - 29. Июля 2009 :: 08:03
Печать  
Замечательная компонента.
Работает именно так, как нужно!
Но один ньюанс. Если вдруг у автора появиться время и желание.  Подмигивание
Штатно в окнах диалога при открытии или сохранении файлов запоминается последний открытый каталог.  
Возможно ли сделать так , чтобы каталог запоминался и при открытии открывался, но пользователь не мог выйти за установленный ему каталог ( менеджерДиалогов.УстановитьНачальныйКаталог("c:\111\"); )

Смысл в том, что пользователи работают в своих каталогах, которые имеют достаточно большую иерархию и им не совсем удобно каждый раз открывать нужную папку в иерархии.

А в целом очень удобная вещь!
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 4 ... 9
ОтправитьПечать