Переключение на Главную Страницу Страницы: 1 ... 15 16 [17] 18 19 ... 32 ОтправитьПечать
Очень популярная тема (более 25 ответов) ТП: Прямое редактирование значений (число прочтений - 210332 )
Chieftain
Senior Member
****
Отсутствует


___

Сообщений: 498
Местоположение: Тула
Зарегистрирован: 15. Февраля 2007
Пол: Мужской
Re: ТП: Прямое редактирование значений
Ответ #240 - 22. Июля 2008 :: 05:21
Печать  
vandalsvq писал(а) 22. Июля 2008 :: 02:53:
Chieftain писал(а) 21. Июля 2008 :: 14:01:
Нашел маленький, но неприятный момент. Прилагаю тест на эту тему. Если при редактировании ячейки переключиться на другой реквизит формы, то редактирование не завершается. Как следствие, если ТП на форме справочника, в процедуре "ПриЗаписи" почему-то не видит значения некоторых реквизитов.


А ты прими для себя волевое решение называть Реквизит который редактируется всегда одинаково... и если кто-то жутко хочет отредактироваться сразу кучу значений просто "забивать" на его желание... по крайней мере я так и сделал и ни разу об этом не пожалел  Подмигивание

Ты, наверное, немного не в теме Подмигивание Реквизит и так называется одинаково, но когда активен именно он, можно мышкой переключиться на любой другой атрибут формы и при этом не происходит завершения редактирования ячейки

ЗЫ... при смене фокуса внутри ТП завершение редактирования проходит нормально
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТП: Прямое редактирование значений
Ответ #241 - 22. Июля 2008 :: 05:37
Печать  
kms писал(а) 21. Июля 2008 :: 15:40:
Это известная тема.

Способ отследить потерю фокуса контролом мне пока неизвестен.
Плюс надо отдельно ослеживать потерю фокуса при выборе значения для справочников, документов и т.п.
Так что пока так.

Общий виндовый хук (WH_CALLWNDPROCRET) на WM_KILLFOCUS позволяет отследить потерю фокуса.
А в обработчике этого хука можно сравнить переданный хендл окна с хендлом своего контрола.
Если они совпадают, значит, твой контрол потерял фокус и можно завершить редактирование.

ЗЫ только что в ФормЕкс проверил
  

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


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: ТП: Прямое редактирование значений
Ответ #242 - 22. Июля 2008 :: 05:39
Печать  
Chieftain писал(а) 22. Июля 2008 :: 05:21:
Ты, наверное, немного не в теме Подмигивание Реквизит и так называется одинаково, но когда активен именно он, можно мышкой переключиться на любой другой атрибут формы и при этом не происходит завершения редактирования ячейки

ЗЫ... при смене фокуса внутри ТП завершение редактирования проходит нормально


Да неее... я в теме, вот например
http://www.1cpp.ru/forum/YaBB.pl?num=1202765199/130#130
писал сто лет назад... однако же это тоже самое о том что и ты говоришь.

У меня есть одно предложение к Михаилу, подумать о том чтобы можно было принудительно для ТП заканчивать редактирование. Т.е. есть метод "РедактироватьЗначение", добавить и "ЗакончитьРедактирование" с передачей (или непередачей) дальнейшего управления в событие "ПриРедактированииЗначения".

Миша, по моему ТП в рамках самого себя контролирует созданный контрол для редактирования и рано или поздно его уничтожает, а значит и принудительно запустить процесс есть возможность. Оставим это на совесть программистов. В конце концов тут не дети собрались и за своими контролами уж проследят  Очень довольный
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТП: Прямое редактирование значений
Ответ #243 - 22. Июля 2008 :: 05:47
Печать  
vandalsvq писал(а) 22. Июля 2008 :: 05:39:
Миша, по моему ТП в рамках самого себя контролирует созданный контрол для редактирования и рано или поздно его уничтожает, а значит и принудительно запустить процесс есть возможность. Оставим это на совесть программистов. В конце концов тут не дети собрались и за своими контролами уж проследят  Очень довольный

Вот именно, что поздно, т.к. ИМХО при потере фокуса контрол будет уничтожен только при закрытии формы, т.е. событие завершения возникнет слишком поздно Печаль Вот это нас и не устраивает.

Вариант решения для разработчики я привел выше.
  

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


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: ТП: Прямое редактирование значений
Ответ #244 - 22. Июля 2008 :: 06:00
Печать  
artbear писал(а) 22. Июля 2008 :: 05:47:
Вариант решения для разработчики я привел выше.


Вам все таки виднее  Подмигивание
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ТП: Прямое редактирование значений
Ответ #245 - 22. Июля 2008 :: 06:02
Печать  
artbear писал(а) 22. Июля 2008 :: 05:37:
kms писал(а) 21. Июля 2008 :: 15:40:
Это известная тема.

Способ отследить потерю фокуса контролом мне пока неизвестен.
Плюс надо отдельно ослеживать потерю фокуса при выборе значения для справочников, документов и т.п.
Так что пока так.

Общий виндовый хук (WH_CALLWNDPROCRET) на WM_KILLFOCUS позволяет отследить потерю фокуса.
А в обработчике этого хука можно сравнить переданный хендл окна с хендлом своего контрола.
Если они совпадают, значит, твой контрол потерял фокус и можно завершить редактирование.

ЗЫ только что в ФормЕкс проверил

Вопрос тут шире.

Как отличить
- потерю фокуса при переключении на другую форму от
- потери формы при переходе на другую форму для выбора значения?
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ТП: Прямое редактирование значений
Ответ #246 - 22. Июля 2008 :: 06:04
Печать  
vandalsvq писал(а) 22. Июля 2008 :: 05:39:
У меня есть одно предложение к Михаилу, подумать о том чтобы можно было принудительно для ТП заканчивать редактирование. Т.е. есть метод "РедактироватьЗначение", добавить и "ЗакончитьРедактирование" с передачей (или непередачей) дальнейшего управления в событие "ПриРедактированииЗначения".

Я скоро вернусь к теме редактирования ТП, чтобы ее добить Улыбка
Думаю, и с завершением поиграем, по-крайней мере, можно будет потестировать.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: ТП: Прямое редактирование значений
Ответ #247 - 22. Июля 2008 :: 06:24
Печать  
Глобальный виндовый хук - это сильно, это в духе формекс Улыбка

А как отличить причину потери фокуса?.. А может быть не надо на это закладываться.
Я бы для начала посмотрел  в сторону CGetDoc7 :: OnActivateCtrl
  

1&&2&&3
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ТП: Прямое редактирование значений
Ответ #248 - 22. Июля 2008 :: 07:00
Печать  
trad писал(а) 22. Июля 2008 :: 06:24:
А как отличить причину потери фокуса?.. А может быть не надо на это закладываться.
Я бы для начала посмотрел  в сторону CGetDoc7 :: OnActivateCtrl

На мой взгляд, CGetDoc7 :: OnActivateCtrl не даст достаточно информации.

Предположим, активируется некая табличная часть на форме X2.
Как определить, надо ли закрывать редактирование ТП на форме X1?
А это зависит от того, производится ли выбор, или нет.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ТП: Прямое редактирование значений
Ответ #249 - 22. Июля 2008 :: 07:07
Печать  
Chieftain писал(а) 21. Июля 2008 :: 14:01:
Нашел маленький, но неприятный момент. Прилагаю тест на эту тему. Если при редактировании ячейки переключиться на другой реквизит формы, то редактирование не завершается. Как следствие, если ТП на форме справочника, в процедуре "ПриЗаписи" почему-то не видит значения некоторых реквизитов.

В "ПриЗаписи" и "ПриЗакрытии" окно редактирования еще открыто.
Оно закрывается (возникает событие "ТП::ПриРедактированииЗначения") после "ПриЗакрытии" и до "ТП::ПриУничтожении".
Т.е. обработать эту ситуацию все же можно, хотя согласен, что хотелось бы добиться стандартного поведения.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: ТП: Прямое редактирование значений
Ответ #250 - 22. Июля 2008 :: 07:13
Печать  
учти что Х1 и Х2 это разные экземпляры CGetDoc7
  

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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ТП: Прямое редактирование значений
Ответ #251 - 22. Июля 2008 :: 07:33
Печать  
trad писал(а) 22. Июля 2008 :: 06:24:
Глобальный виндовый хук - это сильно, это в духе формекс Улыбка

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

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


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ТП: Прямое редактирование значений
Ответ #252 - 22. Июля 2008 :: 07:34
Печать  
trad писал(а) 22. Июля 2008 :: 07:13:
учти что Х1 и Х2 это разные экземпляры CGetDoc7

Я понял, мы говорим немного о разных материях.

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

ОК, пока нет решения для моего варианта, можем сделать хотя бы решение для твоего.
  

De quelle planète es-tu?
Наверх
 
IP записан
 
kms
1c++ power user
1c++ moderator
Отсутствует


я хочу, чтоб сюда проложили
дорогу оттуда...

Сообщений: 4632
Зарегистрирован: 19. Мая 2006
Re: ТП: Прямое редактирование значений
Ответ #253 - 22. Июля 2008 :: 08:31
Печать  
== Тест ==

Ну, сделано, закрытие окна редактирования при смене реквизита в пределах формы.

При этом отменил установку фокуса на окно ТП после закрытия окна редактирования.
Я не помню, зачем я его сделал в свое время.

Короче, прошу тестировать и если что - стрелять из пушки.

P.S.
По поводу EV вообще - меня интересуют последовательности действий, которые приводят к падениям 1С.
Только что нашел одну такую.
Если у кого-то есть еще, рассказывайте.

===
Тест завершен.
« Последняя редакция: 22. Июля 2008 :: 17:58 - kms »  

De quelle planète es-tu?
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: ТП: Прямое редактирование значений
Ответ #254 - 22. Июля 2008 :: 08:32
Печать  
kms писал(а) 22. Июля 2008 :: 07:34:
А мне хотелось бы закрывать окно редактирования в том числе и при смене формы, в тех случаях, когда это не связано с выбором.

Озадачен а ты уверен что это правильно
считаю что активизированный прямой ввод должен оставаться таковым где бы я там не прыгал по другим формам
  

1&&2&&3
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 15 16 [17] 18 19 ... 32
ОтправитьПечать