|
Определить реакцию на нажатие клавиши когда элемент в фокусе
|
|||
---|---|---|---|
#18+
Добрый день всем! Необходимо реализовать реакцию на нажатие определенных клавиш, когда курсор стоит в поле text_box На данный момент есть следующий код в событии keypress формы. Срабатывает независимо от нахождения фокуса в форме, а нужно как я описал выше. Код: plaintext 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 16:30 |
|
Определить реакцию на нажатие клавиши когда элемент в фокусе
|
|||
---|---|---|---|
#18+
Tohan_ORAДобрый день всем! Необходимо реализовать реакцию на нажатие определенных клавиш, когда курсор стоит в поле text_box На данный момент есть следующий код в событии keypress формы. Срабатывает независимо от нахождения фокуса в форме, а нужно как я описал выше. Код: plaintext 1. 2. 3. 4. 5. 6. 7.
Попробуй так (для перехвата Shift + ">" и Shift + "<"): KeyPress: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
P.S. Не забудь у формы установить KeyPreview = .T. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 16:47 |
|
Определить реакцию на нажатие клавиши когда элемент в фокусе
|
|||
---|---|---|---|
#18+
А почему не прописать код непосредственно в KeyPress этого text_box? Если подразумевается, что на форме много таких "text_box" и в случае нахождения фокуса в любом из них нужно выполнять одно и тоже, то можно определить класс text_box в KeyPress которого и написать нужные действия. А потом их ложить на форму. Сбивает с толку формулировка " когда курсор стоит в поле text_box" Может это поле курсора с неудачным названием text_box в Грид? :-) ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 17:06 |
|
Определить реакцию на нажатие клавиши когда элемент в фокусе
|
|||
---|---|---|---|
#18+
Aleksey-K Алексей, не получилось. Вот код прописанный в событии keypress formset.myform Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Код: plaintext
При нахождении в отладчике вижу что возращают: Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 17:15 |
|
Определить реакцию на нажатие клавиши когда элемент в фокусе
|
|||
---|---|---|---|
#18+
Поправил на Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 17:36 |
|
Определить реакцию на нажатие клавиши когда элемент в фокусе
|
|||
---|---|---|---|
#18+
Tohan_ORAПоправил на Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 17:37 |
|
Определить реакцию на нажатие клавиши когда элемент в фокусе
|
|||
---|---|---|---|
#18+
То что метод func_move_contract() находится в formset замечательно! А то что Вы пытаетесь отловить кто там активный на какой форме не совсем правильно. Вызывайте Thisformset.func_move_contract() НЕПОСРЕДСТВЕННО из контрола [text_contract] и не будет никаких трудностей. Образно: гражданин "text_contract" идет к чиновнику Thisformset и просит его решить вопрос "func_move_contract" Procedure text_contract.KeyPress LPARAMETERS nkeycode, nshiftaltctrl Do case CASE nkeycode = 62 nodefault thisformset.func_move_contract(1) case nkeycode=60 nodefault thisformset.func_move_contract(-1) EndCase EndProc ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 17:45 |
|
Определить реакцию на нажатие клавиши когда элемент в фокусе
|
|||
---|---|---|---|
#18+
И к тому же: UPPER(THISFORM.ActiveControl.Name) ни при каких обстоятелсвах не буде равен "text_contract" ( маленькими буквами ) Тогда уже либо lower(THISFORM.ActiveControl.Name) = "text_contract" либо == "TEXT_CONTRACT" ... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 17:57 |
|
Определить реакцию на нажатие клавиши когда элемент в фокусе
|
|||
---|---|---|---|
#18+
1. Не обратил внимание на то, что вы используете FormSet (сам я никогда этот объект не использую). 2. Название активного объекта я перевожу в верхний регистр и, следовательно, сравнивать его надо с именами объектов в верхнем регистре. 3. Всю обработку "горячих" клавишь я размещаю в одном месте: в KeyPress формы. Мне так удобнее. Вы можете выбрать иной вариант. Если методы у вас находятся в formset, а KeyPress, разумеется, только в форме, то ссылайтесь на методы formset из формы через относительную ссылку вида: THIS.Parent.func_move_contract(-1). KeyPress: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.01.2009, 20:12 |
|
|
start [/forum/topic.php?fid=41&fpage=137&tid=1586842]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
38ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
52ms |
get tp. blocked users: |
2ms |
others: | 325ms |
total: | 463ms |
0 / 0 |