Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) События формы и КОП-наследник группового контекста (число прочтений - 15199 )
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
События формы и КОП-наследник группового контекста
18. Августа 2006 :: 14:55
Печать  
Народ, есть мысль добавить функционал перехвата в КОП-е, наследнике группового контекста, события формы контекста-предка.

Я вижу это так - либо
1) безусловный перехват любых методов базового контекста
Т.е. если в классе КОП-е есть метод с таким же названием, как в форме, будет вызван именно этот метод/событие, а не метод/событие формы.


Если в КОП метод ПриЗакрытии, будет вызван он при закрытии формы
Если в КОП и в форме есть метод МетодФормы, будет вызван метод из КОП

либо

2) в конструкторе происходит подписка на те методы/события, которые КОП будет перехватывать.
Т.е. Сам().ПерехватитьМетодГК(НаименованиеМетодаГК, НаименованиеСвоегоМетода);

Причем для обоих случаев можно обеспечить вызов и из 1С и из других модулей/контекстов.

А непосредственно к методу формы можно будет обратиться только из самого КОП
вызовом База.НужныйМетод() или База.НужноеСобытие()


Жду предложений

PS изучил исходники и ИМХО это довольно просто сделать с помощью средств ТурбоБЛ.
  

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #1 - 18. Августа 2006 :: 16:40
Печать  
Прежде всего хочется сказать, что этого очень не хватает...


По сути, удобней был бы первый вариант, но как будет это работать при наследовани...

Например делается наследование от Документа, дальше РасходняНакладная и т.д.
В каждом классе хотелось бы внести добавлять что-то специфическое. Какой метод тогда будет выполняться при возникновении события?




P.S. Вопрос снят, переклинило. Разговор идет про наследование от ГрупповогоКонтекста же...
  
Наверх
 
IP записан
 
steban
1c++ developer
Отсутствует


#define sizeof(x) rand()

Сообщений: 787
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #2 - 18. Августа 2006 :: 17:10
Печать  
Это было-бы здорово.
Мне больше нравится 1-й вариант.
только может сделать после вызова метода КОП метода ГК (если он есть).
  

int getRandomNumber()&&{&&  return 4; //chosen by fair dice roll&&         //guaranteed to be random&&}
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #3 - 19. Августа 2006 :: 06:39
Печать  
steban писал(а) 18. Августа 2006 :: 17:10:
Мне больше нравится 1-й вариант.
только может сделать после вызова метода КОП метода ГК (если он есть).

Не совсем понял, о чем ты говоришь Печаль
После вызова метода КОП нужно вызывать метод ГК? Это необязательно.
ИМХО наиболее гибкий вариант - когда КОП сам определяет, в какой момент вызывать "родной" метод ГК и вызывать ли его вообще.

Но здесь возникает вопрос наследования в следующих подклассах -
например, вполне возможна иерархия КОПДокНакладная - КОПДок - КОПФорма - ГрупповойКонтекст
Если использовать метод 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 записан
 
sedmin
1c++ developer
Отсутствует


I Hate Fat YaBB 2!

Сообщений: 862
Зарегистрирован: 24. Мая 2006
Re: События формы и КОП-наследник группового конте
Ответ #4 - 19. Августа 2006 :: 07:58
Печать  
Погодите, не так быстро.

Перехват методов/событий. Что такое перехват событий, я еще понимаю. А что такое перехват методов?

Варианты перехвата. Как вы собираетесь перехватывать события? Нужно будет написать примерно такой код:
Код
Выбрать все
КОПДок=СоздатьОбъект("КОПДок");
КОПДок.ЗаменитьБазовыйОбъект(Контекст); 



Перехват произойдет при ЗаменитьБазовыйОбъект()? Почему бы тогда не сделать два отдельных метода?

Код
Выбрать все
КОПДок.ПерехватитьВсеСобытия(Контекст);
КОПДок.ПерехватитьСобытие(Контекст, "ПриЗаписи"); 



В принципе, возможно, стоит сделать автоперехват в ЗаменитьБазовыйОбъект(), но только по настройке.

А в каком контексте будет храниться созданный объект КОПДок? И когда он будет уничтожаться?

Может быть кто-нибудь напишет 3-5 строк кода, как бы он хотел использовать эту возможность? Тогда все станет более понятно и ему и другим.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #5 - 19. Августа 2006 :: 08:19
Печать  
Можно сделать любой из 3-вариантов.
Если будет включена спец.настройка, перехват всех методов будет идти сразу в методе ЗаменитьБазовыйОбъект.

Код примерно такой.
1. Создание КОП.
КОП = СоздатьОбъект("ЛюбойКОПФормыГК");
КОП.ЗаменитьБазовыйОбъект("ГрупповойКонтекст", Конт);
// или
КОП.ЗаменитьГК(Конт); // можно добавить этот метод

И в общем, больше ничего делать не нужно.
Все зависит от варианта использования.

КОП может быть создан в любом контексте.
Важно помнить, что его существование не гарантирует существование реального контекста, т.к. форма может быть просто закрыта пользователем.

Удаление КОП - еще один непростой вопрос.
По идее отследить закрытие формы легко и получить это событие в КОП также просто.
Сложнее решить, что делать в этом случае.

ИМХО нужно любой вызов метода подобного КОП-а либо предварять конструкцией типа
  Если КОПФормыГК.КонтекстЖив() = 1 Тогда
либо
  в методах КОП, если форма уже закрыта, выбрасывать спец.исключение.
либо
  можно отправлять спец. сообщение модулю-хозяину КОП (т.е. контексту, в котором он создан), что форма закрыта, через уже встроенный метод КОП::ОтправитьСообщениеМодулюХоз
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #6 - 19. Августа 2006 :: 09:58
Печать  
Я за второй вариант. За подписку на перехваты. За тот пример, который предложил sedmin.

Причин несколько:
1. В модуле самой формы остается явный след о том, что в ней перехвачены какие-то предопределенные события. Количество потенциальных граблей резко сокращается.
2. В таком случае, как мне кажется, можно вообще не наследовать класс-перехватчик событий от группового контекста. Все равно Контекст мы передаем в качестве параметра метода .ПерехватитьСобытие() - пусть будет агрегат.
3. Агрегирование вместо наследования упрощает диагностику закрытой формы. Ибо решается внутри класса простой проверкой типа значения.
  
Наверх
www  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #7 - 19. Августа 2006 :: 10:05
Печать  
fez писал(а) 19. Августа 2006 :: 09:58:
Я за второй вариант. За подписку на перехваты. За тот пример, который предложил sedmin.

Причин несколько:
1. В модуле самой формы остается явный след о том, что в ней перехвачены какие-то предопределенные события. Количество потенциальных граблей резко сокращается.

Неа, подобные грабли ты никак не обойдешь. Они возможны в любом случае.
Я же специально привел пример с глобальным методом ПослеОткрытия. И в итоге форма может ничего не знать о том, что ее методы/события перехватывают.
Как уже писал, я готов на это пойти, мне такой способ наиболее нравится, резко упрощается изменение форм в типовых конфигурациях.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
fez
Forum Administrator
1c++ power user
Отсутствует


I wanted to cry, but the
tears wouldn't come

Сообщений: 2712
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #8 - 19. Августа 2006 :: 10:50
Печать  
Тогда надо реализовать оба варианта.
  
Наверх
www  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #9 - 28. Августа 2006 :: 09:38
Печать  
В общем, удалось получить нужный результат по перехвату событий группового контекста, а также перехвата событий формы от FormEx !!
Исполняем примерный код по перехвату событий (например, в ПриОТкрытии или ПослеОткрытия в форме или ПослеОткрытия даже в глобальнике)
Код
Выбрать все
КОП = СоздатьОбъект("ЛюбойКОП");
// возможно, этот вызов будет сделан по-другому
КОП.ПерехватитьСобытияГК(КонтекстФормы);
 


В КОП, например, есть функция (обязательно объявленная с  Экспорт)
Код
Выбрать все
Процедура ПриНачалеВыбораЗначения(ИдентификаторЭлемента, Флаг) Экспорт
	Сообщить("КОП::ПриНачалеВыбораЗначения");
КонецПроцедуры
 


Независимо от наличия в форме контекста процедуры "ПриНачалеВыбораЗначения" (т.е. в форме этой процедуры может и не быть) при работе в форме и начале выбора какого-нибудь значения выходит нужное сообщение
Цитата:
КОП::ПриНачалеВыбораЗначения


Возможно перехватить любые события, направляемые в форму 1С или ФормЕкс.

Данный функционал будет включен в ночную сборку после выпуска релиза 2.0.3 (что произойдет сегодня-завтра)

ЗЫ для нетерпеливых Улыбка могу выложить тестовую сборку 1cpp.dll где описанный перехват можно пощупать руками Улыбка
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #10 - 28. Августа 2006 :: 10:11
Печать  
Добавлю, что реализация несколько отличается от того замысла, что изложен в начале ветки.
Сейчас перехватываются только события формы, которые инициируются самой 1С или FormEx, а не любые произвольные методы модуля формы.
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #11 - 28. Августа 2006 :: 10:16
Печать  
И еще: КОП-перехватчик не обязательно должен быть наследником от ГрупповогоКонтекста !
  

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #12 - 28. Августа 2006 :: 11:45
Печать  
Меня прет!  Смех


Наконец-то! Большущее спасибо!
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #13 - 01. Сентября 2006 :: 10:44
Печать  
Данный функционал в описанном ранее виде с сегодняшнего дня включен в ночную сборку релиза 2.5.

Внимание
Возможно, главный метод ПерехватитьСобытияГК будет перенесен из КОП в отдельный класс "Перехватчик"
  

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #14 - 02. Сентября 2006 :: 12:00
Печать  
artbear писал(а) 28. Августа 2006 :: 09:38:
Код
Выбрать все
КОП = СоздатьОбъект("ЛюбойКОП");
// возможно, этот вызов будет сделан по-другому
КОП.ПерехватитьСобытияГК(КонтекстФормы);
 





Артур, не срабатывает на 2.5.0, типа "Поле агрегатного объекта не обнаружено". Где грабли?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #15 - 04. Сентября 2006 :: 09:36
Печать  
Версия 1С++? Ночная сборка от какого числа?
только что пришел на работу, специально закачал ночную сборку и проверил.
Все работает.
  

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #16 - 04. Сентября 2006 :: 10:00
Печать  
artbear писал(а) 04. Сентября 2006 :: 09:36:
Версия 1С++? Ночная сборка от какого числа?
только что пришел на работу, специально закачал ночную сборку и проверил.
Все работает.


Хмм... сборка от 03.09.06. В исходниках вижу этот метод, но у меня не срабатывает.

Сейчас буду еще раз пробовать.
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #17 - 04. Сентября 2006 :: 10:47
Печать  
Похоже я понял в чем проблема. Я скачал по привычке nightbuild-2.5.alpha.zip
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #18 - 04. Сентября 2006 :: 10:48
Печать  
Да, сейчас нужно качать обычную ночную сборку.
Релиз 2.5 там.
  

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #19 - 06. Сентября 2006 :: 23:38
Печать  
Хотелось бы уточнить, можно ли использовать этот метод в теле модуля формы, но вне процедур?
Или только, как было описано, в ПриОткрытии или ПослеОткрытия...
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #20 - 07. Сентября 2006 :: 07:34
Печать  
Честно говоря, эта мысль в голову не приходила.
Попробуй, вроде должно получиться Улыбка

А для себя я планировал устанавливать перехват в глобальном методе ПослеОткрытия или ПередОткрытиемФормы.
  

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



Сообщений: 39
Местоположение: Москва
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #21 - 07. Сентября 2006 :: 09:50
Печать  
artbear писал(а) 07. Сентября 2006 :: 07:34:
Честно говоря, эта мысль в голову не приходила.
Попробуй, вроде должно получиться Улыбка

А для себя я планировал устанавливать перехват в глобальном методе ПослеОткрытия или ПередОткрытиемФормы.


artbear, не пояснишь, что ты имеешь ввиду - ПередОткрытиемФормы?
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #22 - 07. Сентября 2006 :: 09:53
Печать  
Возможно, я ошибаюсь, но имхо есть в ФормЕкс подобная процедура - почитай хелп на ФормЕкс.
  

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



Сообщений: 39
Местоположение: Москва
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #23 - 07. Сентября 2006 :: 10:02
Печать  
Недавно у меня была дискуссия с АЛьФом по этому поводу.

Так он начал с того, что сказал, что это событие вроде есть в 1С++  Улыбка.

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #24 - 07. Сентября 2006 :: 10:15
Печать  
Извини, но ты все напутал, я читал твой диалог с АльФ-ом об этом Улыбка

1) Эта тема как раз о перенаправлении событий формы в класс/КОП, который будет выступать в качестве обработчика этих событий (как от 1С, так и от ФормЕкс).
Об этом и говорил АльФ - эта фича реализована в 2.5

2) А АльФ подобным способом хочет сделать перенаправление событий в глобальник для тех, кто не хочет/не может/не умеет/не любит использовать 1С++ или для тех, кто пользуется только ФормЕкс.
  

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



Сообщений: 39
Местоположение: Москва
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #25 - 07. Сентября 2006 :: 11:41
Печать  
Могу ли я с помощью тех средств, которые описаны в этой теме сделать следующее:

при открытии любой формы проверять её на возможность открытия, и в случае необходимости, отменить открытие формы.
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #26 - 07. Сентября 2006 :: 12:32
Печать  
По-моему это самая малость что можно сделать...
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #27 - 07. Сентября 2006 :: 13:14
Печать  
Arta писал(а) 07. Сентября 2006 :: 12:32:
По-моему это самая малость что можно сделать...

Ага, прав на 100%
  

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



Сообщений: 39
Местоположение: Москва
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #28 - 08. Сентября 2006 :: 06:37
Печать  
К сожалению, я не совсем корректно поставил вопрос.

Имелось ввиду, чтобы при открытии формы до вызова предопределенной процедуры ПриОткрытии вызывался некий код, результатом выполнения которого, в частности, мог бы быть запрет открытия формы. Некий аналог ФормЕксовского ПослеОткрытия(Контекст), типа ПередОткрытием(Контекст). При этом никаких изменений в процедуры ПриОткрытии всех форм вносить не нужно.

Если этого достичь с помощью "перенаправления событий формы в класс/КОП" не получится, то придется ждать решения от АЛьФа.

Естественно, сама проблема как таковая решена вызовом глобальной функции в каждой нужной процедуре ПриОткрытии, но всё же, имхо, было бы неплохо иметь возможность написать код в одном месте, а не в каждой форме.

Конечно, можно переписать "всё" с использованием классов, и тогда всё получится, по это "совсем другая песня".
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #29 - 08. Сентября 2006 :: 08:48
Печать  
В качестве решения я планирую использовать добавленную мной методику в 1С++ и события от ФормЕкс.

У ФормЕкс есть несколько подходящих событий -
ПриЗагрузкеФормы
ПослеСозданияФормы
ПриЗагрузкеМодуляФормы
ПриЗагрузкеВнешнегоОтчета

Посмотри, какое из них подойдет для твоих целей.
  

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



Сообщений: 39
Местоположение: Москва
Зарегистрирован: 30. Августа 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #30 - 08. Сентября 2006 :: 09:35
Печать  
К сожалению, в процедуры ПриЗагрузкеФормы и ПриЗагрузкеМодуляФормы
не передается контекст.

А, процедура ПослеСозданияФормы вызывается после процедуры ПриОткрытии.

Вообщем, сейчас такой порядок вызова процедур:
    1. ПриЗагрузкеФормы
    2. ПриЗагрузкеМодуляФормы
    3. ПриОткрытии
    4. ПослеСозданияФормы
    5. ПослеОткрытия

Ну, а моё предложение - добавить ещё одну процедуру:
    1. ПриЗагрузкеФормы
    2. ПриЗагрузкеМодуляФормы
    3. ПередОткрытием
    4. ПриОткрытии
    5. ПослеСозданияФормы
    6. ПослеОткрытия

И это должно быть сделано, имхо, (если это вообще возможно) в ФормЕксе.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: События формы и КОП-наследник группового конте
Ответ #31 - 25. Сентября 2006 :: 17:27
Печать  
По перехвату событий ГК известны два бага
1 http://www.1cpp.ru/bugs/show_bug.cgi?id=2610
2 http://www.1cpp.ru/bugs/show_bug.cgi?id=2609
Скоро будут исправлены
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать