Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Как совладать с ЭмулироватьКлавиатуру? (число прочтений - 4532 )
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Как совладать с ЭмулироватьКлавиатуру?
14. Апреля 2008 :: 07:48
Печать  
Как известно на скульных вариантах 1С некрасиво себя ведет при прокрутке мышой на журналах документов, т.е. подтормаживает.
Решил я поменять поведение:

Код
Выбрать все
Процедура ПриПрокруткеКолесаМыши(Сост, Лево, Верх, ФСО, Градусы) Экспорт
	ФСО = 0;
	Если Градусы > 0 Тогда
		Сервис.ЭмулироватьКлавиатуру("PGUP", 0, );
	ИначеЕсли Градусы < 0 Тогда
		Сервис.ЭмулироватьКлавиатуру("PGDN", 0, );
	КонецЕсли;
КонецПроцедуры
 



При срабатывании процедуры срабатывает PGDN и PGUP, но при этом появляется окошко поиска, как если бы я ввел с клавиатуры обычные символы.
Типа почему так?
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Как совладать с ЭмулироватьКлавиатуру?
Ответ #1 - 14. Апреля 2008 :: 08:04
Печать  
Arta писал(а) 14. Апреля 2008 :: 07:48:
Как известно на скульных вариантах 1С некрасиво себя ведет при прокрутке мышой на журналах документов, т.е. подтормаживает.
Решил я поменять поведение:

Код
Выбрать все
Процедура ПриПрокруткеКолесаМыши(Сост, Лево, Верх, ФСО, Градусы) Экспорт
	ФСО = 0;
	Если Градусы > 0 Тогда
		Сервис.ЭмулироватьКлавиатуру("PGUP", 0, );
	ИначеЕсли Градусы < 0 Тогда
		Сервис.ЭмулироватьКлавиатуру("PGDN", 0, );
	КонецЕсли;
КонецПроцедуры
 



При срабатывании процедуры срабатывает PGDN и PGUP, но при этом появляется окошко поиска, как если бы я ввел с клавиатуры обычные символы.
Типа почему так?


1. Наверное, не "PGUP", а "{PGUP}". У меня срабатывает без всякого окошка поиска.
2. На сборке artbear'a #84 beta, эта процедура вообще не работает.
3. Есть подозрение, что Артур в своей сборке куда-то глобально влез.
Так как изменилось поведение и других методов (см. http://www.forum.mista.ru/topic.php?id=334074 пост 7.
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как совладать с ЭмулироватьКлавиатуру?
Ответ #2 - 14. Апреля 2008 :: 09:24
Печать  
vip писал(а) 14. Апреля 2008 :: 08:04:
2. На сборке artbear'a #84 beta, эта процедура вообще не работает.
3. Есть подозрение, что Артур в своей сборке куда-то глобально влез.
Так как изменилось поведение и других методов (см. http://www.forum.mista.ru/topic.php?id=334074 пост 7.

Тут бы поподробнее Улыбка и в багзиллу Улыбка
  

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как совладать с ЭмулироватьКлавиатуру?
Ответ #3 - 14. Апреля 2008 :: 09:30
Печать  
vip писал(а) 14. Апреля 2008 :: 08:04:
1. Наверное, не "PGUP", а "{PGUP}". У меня срабатывает без всякого окошка поиска.

Мать-перемать. Совсем я старый стал Печаль
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Как совладать с ЭмулироватьКлавиатуру?
Ответ #4 - 14. Апреля 2008 :: 09:43
Печать  
artbear писал(а) 14. Апреля 2008 :: 09:24:
vip писал(а) 14. Апреля 2008 :: 08:04:
2. На сборке artbear'a #84 beta, эта процедура вообще не работает.
3. Есть подозрение, что Артур в своей сборке куда-то глобально влез.
Так как изменилось поведение и других методов (см. http://www.forum.mista.ru/topic.php?id=334074 пост 7.

Тут бы поподробнее Улыбка и в багзиллу Улыбка

Может рановато в багзиллу? Это ж просто еще твоя рабочая сборка.
А навскидку...
ПриПрокруткеКолесаМыши(Сост, Лево, Верх, ФСО, Градусы)
Градусы в твоей сборке всегда возвращает 0.
  
Наверх
ICQ  
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как совладать с ЭмулироватьКлавиатуру?
Ответ #5 - 14. Апреля 2008 :: 09:49
Печать  
vip писал(а) 14. Апреля 2008 :: 09:43:
artbear писал(а) 14. Апреля 2008 :: 09:24:
vip писал(а) 14. Апреля 2008 :: 08:04:
2. На сборке artbear'a #84 beta, эта процедура вообще не работает.
3. Есть подозрение, что Артур в своей сборке куда-то глобально влез.
Так как изменилось поведение и других методов (см. http://www.forum.mista.ru/topic.php?id=334074 пост 7.

Тут бы поподробнее Улыбка и в багзиллу Улыбка

Может рановато в багзиллу? Это ж просто еще твоя рабочая сборка.
А навскидку...
ПриПрокруткеКолесаМыши(Сост, Лево, Верх, ФСО, Градусы)
Градусы в твоей сборке всегда возвращает 0.

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

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



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как совладать с ЭмулироватьКлавиатуру?
Ответ #6 - 14. Апреля 2008 :: 09:58
Печать  
Ниче что я со своими проблемами буду дальше? Улыбка

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

Код
Выбрать все
Для Индекс = 1 По Метаданные.Документ(ПредставлениеВида).РеквизитТабличнойЧасти() Цикл
  Если тор = Форма.АктивныйЭлемент() Тогда
    РеквизитТабличнойЧасти = Да;
    Прервать;
  КонецЕсли;
КонецЦикла; 



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


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как совладать с ЭмулироватьКлавиатуру?
Ответ #7 - 14. Апреля 2008 :: 10:03
Печать  
Arta писал(а) 14. Апреля 2008 :: 09:58:
Теперь хочу определить что фокус в табличной части.
Код
Выбрать все
Если Идентификатор = Форма.АктивныйЭлемент() Тогда
 



Но в данном случае это не сработает для текстовых реквизитов.

А разве так можно сравнивать? Ид и сам реквизит? Улыбка
  

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



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Как совладать с ЭмулироватьКлавиатуру?
Ответ #8 - 14. Апреля 2008 :: 10:03
Печать  
Цитата:
Все равно нужно в багзиллу, т.к. моя сборка имеет очень большие шансы попасть в основную сборку

Написал в багзиллу.
А то что, перестало зависать при установки обоев окна MDI из несуществующего файла, писать не стал, т.к. это скорее улучшение.
Но на душе как-то неспокойно стало. Если выловлю еще что-нибудь, напишу.
  
Наверх
ICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как совладать с ЭмулироватьКлавиатуру?
Ответ #9 - 14. Апреля 2008 :: 10:06
Печать  
artbear писал(а) 14. Апреля 2008 :: 10:03:
Но в данном случае это не сработает для текстовых реквизитов.
А разве так можно сравнивать? Ид и сам реквизит? Улыбка


Форма.АктивныйЭлемент();
Синтаксис:
Форма.АктивныйЭлемент()
Назначение:
Возвращает строковое значение -  идентификатор активного элемента диалога.


Что не так?
  
Наверх
 
IP записан
 
vip
1c++ power user
Отсутствует



Сообщений: 1570
Зарегистрирован: 19. Мая 2006
Re: Как совладать с ЭмулироватьКлавиатуру?
Ответ #10 - 14. Апреля 2008 :: 10:55
Печать  
Arta писал(а) 14. Апреля 2008 :: 09:58:
Ниче что я со своими проблемами буду дальше? Улыбка

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

Код
Выбрать все
Для Индекс = 1 По Метаданные.Документ(ПредставлениеВида).РеквизитТабличнойЧасти() Цикл
  Если тор = Форма.АктивныйЭлемент() Тогда
    РеквизитТабличнойЧасти = Да;
    Прервать;
  КонецЕсли;
КонецЦикла; 



Но в данном случае это не сработает для текстовых реквизитов.

А может, Форма.ТекущаяКолонка() использовать?
Хотя это не гарантирует, что фокус именно на МногострочнойЧасти.
  
Наверх
ICQ  
IP записан
 
АЛьФ
FormEx developer
1c++ developer
Отсутствует



Сообщений: 1538
Местоположение: Санкт-Петербург
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как совладать с ЭмулироватьКлавиатуру?
Ответ #11 - 14. Апреля 2008 :: 10:58
Печать  
Может быть в этой задаче поможет свойство АтрибутФормы::Фокус?
  

FormEx developer
Наверх
www  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как совладать с ЭмулироватьКлавиатуру?
Ответ #12 - 14. Апреля 2008 :: 11:06
Печать  
Цитата:
Может быть в этой задаче поможет свойство АтрибутФормы::Фокус?

Итишкин пистолет, оно!
Только я в описании нигде вроде не видел про Фокус Улыбка
  
Наверх
 
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как совладать с ЭмулироватьКлавиатуру?
Ответ #13 - 14. Апреля 2008 :: 11:13
Печать  
Теперь я счастлив Улыбка

В перехватчике делаю:
Код
Выбрать все
Если РасширениеФормы.ТипОбъекта() = "Журнал" Тогда
	Реквизит = РасширениеФормы.ПолучитьАтрибут("МНОГОСТРОЧНАЯЧАСТЬ");
	Если Реквизит.Фокус = 1 Тогда
		Если Градусы > 0 Тогда
			Сервис.ЭмулироватьКлавиатуру("{PGUP}", 0, );
		ИначеЕсли Градусы < 0 Тогда
			Сервис.ЭмулироватьКлавиатуру("{PGDN}", 0, );
		КонецЕсли;
		ФСО = 0;
	КонецЕсли;
КонецЕсли;
 



теперь прокрутка меня больше не бесит ни в одном журнале Улыбка

P.S. Жаль, что нельзя послать половину или треть PgDn или PgUp Улыбка
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как совладать с ЭмулироватьКлавиатуру?
Ответ #14 - 14. Апреля 2008 :: 11:19
Печать  
Ага, без перехватчика никуда Улыбка
ЗЫ это ОФФ
  

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