Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Еще хотелки для форм... (число прочтений - 5549 )
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Еще хотелки для форм...
02. Июня 2007 :: 18:44
Печать  
Вопрос в АЛьФу.

Возможно ли создать новую "предопределенную" процедуру типа "OnCloseQuery" в VCL?
Вопрос возникает очень часто и не только у меня одного...
  
Наверх
ICQ  
IP записан
 
КилоГрамм
Senior Member
****
Отсутствует


Таити, Таити...

Сообщений: 434
Зарегистрирован: 14. Июня 2006
Пол: Мужской
Re: Еще хотелки для форм...
Ответ #1 - 03. Июня 2007 :: 08:26
Печать  
Код
Выбрать все
Перем Спросить;
//_____________________________________________________________________________
Процедура ПриЗакрытии() //предопределенная
	Если Спросить = 1
	Тогда
	    Если Вопрос("Это точно ?","Да+Нет") = "Нет"
	    Тогда
		  СтатусВозврата(0);
	    КонецЕсли;
	КонецЕсли;
КонецПроцедуры //ПриЗакрытии
 

Просто никак нельзя?
Или при закрытии из другого контекста
Код
Выбрать все
Конт.Форма.Закрыть(1); 

  

Константин
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Еще хотелки для форм...
Ответ #2 - 03. Июня 2007 :: 11:19
Печать  
Chieftain писал(а) 02. Июня 2007 :: 18:44:
Вопрос в АЛьФу.

Возможно ли создать новую "предопределенную" процедуру типа "OnCloseQuery" в VCL?
Вопрос возникает очень часто и не только у меня одного...

Воспользуйся механизмом перехвата событий 1С в классе "Перехватчик" из 1С++, т.е. добавь универсальный механизм - при открытии формы добавляй объект КОП-обработчик событий 1С и/или ФормЕкс, перехватывай в нем ПриЗакрытии, и добавляй необходимый тебе функционал.
ЗЫ для подобных универсальных схем мной и был создан Перехватчик Улыбка
И не нужно модернизировать ФормЕкс Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: Еще хотелки для форм...
Ответ #3 - 03. Июня 2007 :: 22:28
Печать  
Это все конечно радостно, но... есть одна особенность для контекстов форм документов и справочников.
Если контекст был модифицирован, то при нажатии на кнопку закрытия окна выдается системный вопрос сохранения.

Его обойти вышеперечисленными методами не получится.
Альтернативные методы закрытия окна обойти можно (нажатие кнопок Esc,Ctrl+F4) - через событие клавиатуры FormEx.
Даже действия системного меню можно обойти с помощью RWidjets.
Но найти, как перехватить нажатие кнопки закрытия я не смог.

Единственное предложение в этом плане - заблокировать кнопку закрытия окна, но этот вариант ломает стандартное поведение окон.

Вот и прошу рассмотреть возможность решения этого вопроса...

ЗЫ.. И еще интересная мысль - возможно при нажатии кнопки закрытия окна 1С просто устанавливает строку действия формы... Если да, то наверняка можно найти процедуру, отвечающую за это)))
Что скажете?
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Еще хотелки для форм...
Ответ #4 - 04. Июня 2007 :: 05:36
Печать  
Chieftain писал(а) 03. Июня 2007 :: 22:28:
Это все конечно радостно, но... есть одна особенность для контекстов форм документов и справочников.
Если контекст был модифицирован, то при нажатии на кнопку закрытия окна выдается системный вопрос сохранения.
Что скажете?


Ну сбрось модифицированность формы... Только может получиться что не сохранятся нужные изменения.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Еще хотелки для форм...
Ответ #5 - 04. Июня 2007 :: 06:04
Печать  
Chieftain писал(а) 03. Июня 2007 :: 22:28:
Это все конечно радостно, но... есть одна особенность для контекстов форм документов и справочников.
Если контекст был модифицирован, то при нажатии на кнопку закрытия окна выдается системный вопрос сохранения.

А ты проверял, что этот вопрос задается ДО вызова ПриЗакрытии? а вдруг уже после вызова?
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: Еще хотелки для форм...
Ответ #6 - 04. Июня 2007 :: 08:29
Печать  
Arta писал(а) 04. Июня 2007 :: 05:36:
Chieftain писал(а) 03. Июня 2007 :: 22:28:
Это все конечно радостно, но... есть одна особенность для контекстов форм документов и справочников.
Если контекст был модифицирован, то при нажатии на кнопку закрытия окна выдается системный вопрос сохранения.
Что скажете?


Ну сбрось модифицированность формы... Только может получиться что не сохранятся нужные изменения.


А не подскажешь - когда его сбрасывать? Постоянно? И отдельно хранить флаг изменения?
  
Наверх
ICQ  
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: Еще хотелки для форм...
Ответ #7 - 04. Июня 2007 :: 08:30
Печать  
artbear писал(а) 04. Июня 2007 :: 06:04:
Chieftain писал(а) 03. Июня 2007 :: 22:28:
Это все конечно радостно, но... есть одна особенность для контекстов форм документов и справочников.
Если контекст был модифицирован, то при нажатии на кнопку закрытия окна выдается системный вопрос сохранения.

А ты проверял, что этот вопрос задается ДО вызова ПриЗакрытии? а вдруг уже после вызова?


Вообще-то до вызова. Причем если подтверждается запись, то сначала идет вызов "ПриЗаписи", т.е. стандартное поведение типа СтрокаДействияФормы="#Записать Закрыть"
  
Наверх
ICQ  
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: Еще хотелки для форм...
Ответ #8 - 04. Июня 2007 :: 08:36
Печать  
Хотя по поводу сброса модифицированности - это мысль.
Надо всего-лишь:
1. Установить обработку ожидания для формы с  помощью FormEx
2. В классе-перехватчике определить процедуру ожидания (она тоже перехватывается как и предопределеные процедуры)
3. В процедуре анализировать модифицированность, сохранять ее в переменную класса, сбрасывать модифицированность формы, добавлять * в заголовок формы
4. В процедуре "ПриЗакрытии" задавать вопросы в зависимости от переменной класса, в которой храним модифицированность.

Тока будет ли обеспечена стабильность периодического сброса модифицированности???
  
Наверх
ICQ  
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: Еще хотелки для форм...
Ответ #9 - 04. Июня 2007 :: 09:21
Печать  
Попробовал - на первый взгляд по такой схеме работает. Единственное - когда происходит обновление окна в форме документа в типовой срабатывает функция "ЗаголовокФормы", которая устанавливает заголовок без *, а потом по таймеру она добавляется...

Буду тестить дальше
  
Наверх
ICQ  
IP записан
 
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: Еще хотелки для форм...
Ответ #10 - 04. Июня 2007 :: 11:44
Печать  
А вот и первый косячок методики Злой

Если в перехваченной процедуре "ПриЗакрытии" флаг модифицированности в классе установлен в 1 выполняется попытка записи объекта.
Все бы хорошо, но если перед записью выдается диалог типа "Вопрос" или "Предупреждение", то выдает ошибку "Данная команда не может выполняться в формуле элемента диалога!"
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать