ИМХО: "гладко" и естественно реализуемо шаблоном, подключаемым во Frame и в каждом контролируемом окне.
Keycode() не работает в IDLE процедуре
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
- Губин Игорь
- ✯ Ветеран ✯
- Сообщения: 2335
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Поблагодарили: 18 раз
Keycode() не работает в IDLE процедуре
Это я только кажусь дураком! На самом деле я полный идиот!
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4629
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 7 раз
- Поблагодарили: 37 раз
Keycode() не работает в IDLE процедуре
Неа, не все. Некоторые вещи отрабатываются внутри accept. Поэтому и сабклассинг придумали, чтобы обойти.
C6/C11, ШВС, tps/btrieve.
- Губин Игорь
- ✯ Ветеран ✯
- Сообщения: 2335
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Поблагодарили: 18 раз
Keycode() не работает в IDLE процедуре
Умный, да?!
Мы не говорим сейчас о всякой экзотике типа Windows API и всего, что с этим связано. Мы говорим сейчас о работе мышки и клавиатуры в окнах задачи.
Это я только кажусь дураком! На самом деле я полный идиот!
Keycode() не работает в IDLE процедуре
А я и не спорю, я и говорил, что это самый простой путь. Но прежде я упомянул хуки, но на это нуль реакции. Если ТС-у сильно нужно - SetWindowsHookExA. Будет сложновато.Губин Игорь писал(а): ↑20 Ноябрь 2019, 14:09ИМХО: "гладко" и естественно реализуемо шаблоном, подключаемым во Frame и в каждом контролируемом окне.
C10, Win10x64
-
- ✯ Ветеран ✯
- Сообщения: 4990
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Keycode() не работает в IDLE процедуре
Губин Игорь, предложите вариант гладкой и естественной обработки набора текста в поле TEXT. ИМХО, здесь уже некая колизия.
We are hard at work… for you.
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4629
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 7 раз
- Поблагодарили: 37 раз
Keycode() не работает в IDLE процедуре
Игорь Маркович тогда уж, будет еще торжественнее...
C6/C11, ШВС, tps/btrieve.
- Губин Игорь
- ✯ Ветеран ✯
- Сообщения: 2335
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Поблагодарили: 18 раз
Keycode() не работает в IDLE процедуре
У меня был подобный случай. Я сотворил шаблон с буферными переменными, в которые считывал постоянно содержимое и сравнивал. Аналогично тому, что показывал Юрий. Варианты для RTF и обычного различались. Но, поскольку шаблон делаем один раз...
Это я только кажусь дураком! На самом деле я полный идиот!
- Губин Игорь
- ✯ Ветеран ✯
- Сообщения: 2335
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Поблагодарили: 18 раз
Keycode() не работает в IDLE процедуре
Вах, перед форумом и бутылкой равны все!
Это я только кажусь дураком! На самом деле я полный идиот!
- finsoftrz
- ✯ Ветеран ✯
- Сообщения: 4629
- Зарегистрирован: 06 Ноябрь 2014, 12:48
- Благодарил (а): 7 раз
- Поблагодарили: 37 раз
Keycode() не работает в IDLE процедуре
А что, когда молоденькие девушки все чаще начали меня на Вы называть и по имени-отчеству, вначале было непривычно, а потом даже понравилось. Причем я сам как-то на восприятие особо не различаю, что 10-20 лет назад с такими же общался, что сейчас. А потом приходит мысль, твои ровесницы с палочками под окнами гуляют, а ты все их бабульками древними воспринимаешь, кобелина... Ну, не до такой степени пока, конечно, но все к тому постепенно движется.
C6/C11, ШВС, tps/btrieve.
- Губин Игорь
- ✯ Ветеран ✯
- Сообщения: 2335
- Зарегистрирован: 16 Сентябрь 2005, 16:35
- Откуда: Москва
- Поблагодарили: 18 раз
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 ) сразу не скажу, окна и поля создаются динамически.
-
- ✯ Ветеран ✯
- Сообщения: 4990
- Зарегистрирован: 28 Май 2009, 15:54
- Откуда: Москва
- Благодарил (а): 7 раз
- Поблагодарили: 21 раз
Keycode() не работает в IDLE процедуре
Тоже не совсем то. А если пользователь ничего не меняет? А список просматривает? Или кнопки нажимает?
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() в снимок. Но это мне не кажется правильным