ИМХО: "гладко" и естественно реализуемо шаблоном, подключаемым во Frame и в каждом контролируемом окне.
Keycode() не работает в IDLE процедуре
Модератор: Дед Пахом
					Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
	При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Губин Игорь
 - Шубуршун
 - Сообщения: 2680
 - Зарегистрирован: 16 Сентябрь 2005, 16:35
 - Откуда: Москва
 - Благодарил (а): 5 раз
 - Поблагодарили: 29 раз
 
Keycode() не работает в IDLE процедуре
Это я только кажусь дураком! На самом деле я полный идиот!
			
						- finsoftrz
 - ✯ Ветеран ✯
 - Сообщения: 5567
 - Зарегистрирован: 06 Ноябрь 2014, 12:48
 - Благодарил (а): 18 раз
 - Поблагодарили: 78 раз
 
Keycode() не работает в IDLE процедуре
Неа, не все.Губин Игорь писал(а): 20 Ноябрь 2019, 12:45Всё в ОКНЕ можно контролировать сразу после ACCEPTvic7tar писал(а): 19 Ноябрь 2019, 20:14Так всё-таки, из одного места можно контролировать нажатие клавиш и клики мыши?
C6/C12, ШВС, tps/btrieve.
			
						- Губин Игорь
 - Шубуршун
 - Сообщения: 2680
 - Зарегистрирован: 16 Сентябрь 2005, 16:35
 - Откуда: Москва
 - Благодарил (а): 5 раз
 - Поблагодарили: 29 раз
 
Keycode() не работает в IDLE процедуре
Умный, да?!finsoftrz писал(а): 20 Ноябрь 2019, 14:11Неа, не все.Некоторые вещи отрабатываются внутри accept. Поэтому и сабклассинг придумали, чтобы обойти.
Мы не говорим сейчас о всякой экзотике типа Windows API и всего, что с этим связано. Мы говорим сейчас о работе мышки и клавиатуры в окнах задачи.
Это я только кажусь дураком! На самом деле я полный идиот!
			
						Keycode() не работает в IDLE процедуре
А я и не спорю, я и говорил, что это самый простой путь. Но прежде я упомянул хуки, но на это нуль реакции. Если ТС-у сильно нужно - SetWindowsHookExA. Будет сложновато.Губин Игорь писал(а): 20 Ноябрь 2019, 14:09ИМХО: "гладко" и естественно реализуемо шаблоном, подключаемым во Frame и в каждом контролируемом окне.
C10, Win10x64
			
						- 
				kreator
 - ✯ Ветеран ✯
 - Сообщения: 5235
 - Зарегистрирован: 28 Май 2009, 15:54
 - Откуда: Москва
 - Благодарил (а): 11 раз
 - Поблагодарили: 26 раз
 
Keycode() не работает в IDLE процедуре
Губин Игорь, предложите вариант гладкой и естественной обработки набора текста в поле TEXT. ИМХО, здесь уже некая колизия.
			
			
									
						We are hard at work… for you.   
			
						- finsoftrz
 - ✯ Ветеран ✯
 - Сообщения: 5567
 - Зарегистрирован: 06 Ноябрь 2014, 12:48
 - Благодарил (а): 18 раз
 - Поблагодарили: 78 раз
 
Keycode() не работает в IDLE процедуре
Игорь Маркович тогда уж, будет еще торжественнее... 
			
			
									
						C6/C12, ШВС, tps/btrieve.
			
						- Губин Игорь
 - Шубуршун
 - Сообщения: 2680
 - Зарегистрирован: 16 Сентябрь 2005, 16:35
 - Откуда: Москва
 - Благодарил (а): 5 раз
 - Поблагодарили: 29 раз
 
Keycode() не работает в IDLE процедуре
У меня был подобный случай. Я сотворил шаблон с буферными переменными, в которые считывал постоянно содержимое и сравнивал. Аналогично тому, что показывал Юрий. Варианты для RTF и обычного различались. Но, поскольку шаблон делаем один раз...kreator писал(а): 20 Ноябрь 2019, 14:54ариант гладкой и естественной обработки набора текста в поле TEXT. ИМХО, здесь уже некая колизия
Это я только кажусь дураком! На самом деле я полный идиот!
			
						- Губин Игорь
 - Шубуршун
 - Сообщения: 2680
 - Зарегистрирован: 16 Сентябрь 2005, 16:35
 - Откуда: Москва
 - Благодарил (а): 5 раз
 - Поблагодарили: 29 раз
 
Keycode() не работает в IDLE процедуре
Вах, перед форумом и бутылкой равны все!
Это я только кажусь дураком! На самом деле я полный идиот!
			
						- finsoftrz
 - ✯ Ветеран ✯
 - Сообщения: 5567
 - Зарегистрирован: 06 Ноябрь 2014, 12:48
 - Благодарил (а): 18 раз
 - Поблагодарили: 78 раз
 
Keycode() не работает в IDLE процедуре
А что, когда молоденькие девушки все чаще начали меня на Вы называть и по имени-отчеству, вначале было непривычно, а потом даже понравилось. Причем я сам как-то на восприятие особо не различаю, что 10-20 лет назад с такими же общался, что сейчас. А потом приходит мысль, твои ровесницы с палочками под окнами гуляют, а ты все их бабульками древними воспринимаешь, кобелина... Ну, не до такой степени пока, конечно, но все к тому постепенно движется.
C6/C12, ШВС, tps/btrieve.
			
						- Губин Игорь
 - Шубуршун
 - Сообщения: 2680
 - Зарегистрирован: 16 Сентябрь 2005, 16:35
 - Откуда: Москва
 - Благодарил (а): 5 раз
 - Поблагодарили: 29 раз
 
Keycode() не работает в IDLE процедуре
Мужику столько лет, сколько его самой молодой любовнице не на содержании!finsoftrz писал(а): 20 Ноябрь 2019, 15:47А что, когда молоденькие девушки все чаще начали меня на Вы называть и по имени-отчеству, вначале было непривычно, а потом даже понравилось. Причем я сам как-то на восприятие особо не различаю, что 10-20 лет назад с такими же общался, что сейчас. А потом приходит мысль, твои ровесницы с палочками под окнами гуляют, а ты все их бабульками древними воспринимаешь, кобелина... Ну, не до такой степени пока, конечно, но все к тому постепенно движется.
Т.е. жёны сюда не входят!
Это я только кажусь дураком! На самом деле я полный идиот!
			
						Keycode() не работает в IDLE процедуре
Сабклассинг есть в FreeABC. В своё время исправлял переключение языка в CW6. 
А всё-таки вариант с проверкой изменений Prop:ScreenText для каждого из полей текущего окна у меня катит. Одна Idle-процедура на приложение с MDI или повесить на таймер её же ( только без SetTarget() ) в однозадачном.
Ещё раз проверил
Внутри Idle-процедуры
Если ничего не трогаешь, растёт Wait, тронул - сбрасывается в 0.
Недостаток - не у всех видов полей есть Prop:ScreenText, на Checkbox пришлось выкрутиться,
Entry и Text нормально. Ещё полезно, наверное, отловить переключение тредов и смену заголовка,
а так - работает...
Свойства окон и полей ( IMM ) сразу не скажу, окна и поля создаются динамически.
			
			
									
						А всё-таки вариант с проверкой изменений Prop:ScreenText для каждого из полей текущего окна у меня катит. Одна Idle-процедура на приложение с MDI или повесить на таймер её же ( только без SetTarget() ) в однозадачном.
Ещё раз проверил
Внутри Idle-процедуры
Код: Выделить всё
Loc:OldString  Cstring(10000),STATIC
Loc:NewString  CString(10000),STATIC
Loc:OldTime    LONG(0),STATIC 
    .... 
           Thread# = System{ Prop:Active } 
           Loc:NewString = '' 
           IF Thread#<>1 
               SetTarget( ,Thread# ) 
               Key# = KeyCode() 
               LOOP Field# = FIRSTFIELD() TO LASTFIELD()
                   CASE Field#{Prop:Type} 
                   OF 0 
                   OF Create:Check 
                     Loc:Use = Field#{Prop:Use}
                     Loc:NewString = Clip(Loc:NewString) & CLIP( Loc:Use ) 
                  ELSE 
                     Loc:NewString = Clip(Loc:NewString) & CLIP(Field#{ PROP:ScreenText}) 
                  END    
             END
             IF Loc:OldString <> Loc:NewString 
                Loc:OldTime = CLOCK() 
             END
             Loc:OldString = Loc:NewString 
             0{Prop:Text} = 'Modified ' & Format( Loc:OldTime,'@t4') |
               & ' Wait=' & Format( CLOCK() - Loc:OldTime, '@t4') 
             SetTarget() 
           END  
... 
Недостаток - не у всех видов полей есть Prop:ScreenText, на Checkbox пришлось выкрутиться,
Entry и Text нормально. Ещё полезно, наверное, отловить переключение тредов и смену заголовка,
а так - работает...
Свойства окон и полей ( IMM ) сразу не скажу, окна и поля создаются динамически.
- 
				kreator
 - ✯ Ветеран ✯
 - Сообщения: 5235
 - Зарегистрирован: 28 Май 2009, 15:54
 - Откуда: Москва
 - Благодарил (а): 11 раз
 - Поблагодарили: 26 раз
 
Keycode() не работает в IDLE процедуре
Тоже не совсем то. А если пользователь ничего не меняет? А список просматривает? Или кнопки нажимает?Yufil писал(а): 20 Ноябрь 2019, 16:13 А всё-таки вариант с проверкой изменений Prop:ScreenText для каждого из полей текущего окна у меня катит.
We are hard at work… for you.   
			
						Keycode() не работает в IDLE процедуре
Если кнопки нажимает, то содержимое экрана изменяется. Иначе зачем их нажимать ? 
Для списка можно добавить в снимок ?List{ Prop:Selected } вместо ?List{Prop:Text}.
Или извлечь запись через Prop:From - варианты есть.
А для мышки, само собой, MouseX() и Mousey() в снимок. Но это мне не кажется правильным
			
			
									
						Для списка можно добавить в снимок ?List{ Prop:Selected } вместо ?List{Prop:Text}.
Или извлечь запись через Prop:From - варианты есть.
А для мышки, само собой, MouseX() и Mousey() в снимок. Но это мне не кажется правильным
