0 / 0 / 0
Регистрация: 10.04.2007
Сообщений: 96
|
|
1 | |
Enter вместо Tab01.06.2007, 02:24. Показов 2555. Ответов 15
Метки нет (Все метки)
HI АLL
Не подскажет ли кто где ошибка? Или может, кто подскажет, как сделать так чтобы при нажатии на Enter из поля Text1 осуществлялся переход в Text1?
0
|
01.06.2007, 02:24 | |
Ответы с готовыми решениями:
15
По Enter как по Tab? (одним махом) Переход между полями при нажатии ENTER, также как по TAB? Tab вместо Enter (FireFox) Enter вместо Tab при работе с Datagridview |
VladK
|
||||||
01.06.2007, 05:00 | 2 | |||||
|
0 / 0 / 0
Регистрация: 10.04.2007
Сообщений: 96
|
|
01.06.2007, 11:18 [ТС] | 3 |
Большое спасибо VladK! Сильно помогло!
P.S. Очепятался: осуществлялся переход в Text2?
0
|
VladK
|
|
01.06.2007, 21:32 | 4 |
Да, репеход должен быть в Text2
|
Foxtrot
|
||||||
02.06.2007, 04:21 | 5 | |||||
А не проще было порядок фокусов расставить?
Пример:
|
Foxtrot
|
|||||||||||
02.06.2007, 04:23 | 6 | ||||||||||
ё! Большие сорьки! В строке
|
VladK
|
|
02.06.2007, 07:46 | 7 |
Конечно проще. Но просьба была найти ошибку в приведенном коде.
|
VladK
|
||||||
02.06.2007, 08:26 | 8 | |||||
Большие сорьки тоже. Ваш пример был необходим. Кстати, если на форме много текстовых окон, то следует действовать несколько иначе. Пример с 4 текстовыми окнами Text1,Text2,Text3,Text4:
|
Mavr
|
|
03.06.2007, 08:13 | 9 |
Способ с SendKeys'ом лучше, не надо городить Select Case (а если 20 контролов), фокус автоматом перейдет на следующий в последовательности перехода контрол.
|
0 / 0 / 0
Регистрация: 26.03.2007
Сообщений: 238
|
|
03.06.2007, 11:12 | 10 |
Насчёт Sendkey'я - есть о чём не согласиться.
А так, я тоже этой проблемой занимался - и вот к какому выводу пришёл ('концептуально' :-))): 1. Необходимо на форме установить KeyPreview = true (об этом уже писали) 2. В Form'е сделать приватный массив элементов из названий контролей. В Form_Load'e - заполнить Например : aСontrl = ('Text1','Tex2',...) И тут же загнать табиндекс - циклом. (Согласно порядка в массиве) 3. В Form_KeyDown универсальный обработчик (пример, в жизни несколько отличается, в зависимости от желаний и требований.... ): if KeyCode = 13 Then dl = 0 dl = Screen.ActiveControl.TabIndex If dl < UBound(aСontrl) - 1 Then dl = dl + 1 Else dl = 0 Me.Controls(aСontrl(dl)).SetFocus end if В Form_KeyPress можно добавить код if KeyAscii = 13 then keyascii=0 Этим 'убивается' дальнейшее реагирование контроля на нажатый энтер. Плюс во всём этом в том, что не надо обрабатывать событие в каждом контроле, соответственно для приложение можно сделать паблик саб или фанкшион и передавать туда форму и там обрабатывать. Мнения.....pls.
0
|
0 / 0 / 0
Регистрация: 09.05.2007
Сообщений: 130
|
|
03.06.2007, 15:10 | 11 |
To Ian
Ne sovsem uveren, no, po mojemu, _KeyDown budet proishodit' ne dlja formy, a dlja togo controla, na kotorom Fokus. Moschet ja ne prav, kone4no. No v4era mne prischlos' 'u4it'' formu 'uznavat'' knopki dlja upravlenija kursorom (37,38,39,40) i dlja Form'y sobytije 'KeyDown' ne nastupalo. A kogda ja povesil sootvetstvujuschij makros na otdel'nyje control'y - vse stalo OK. Esli ja ne prav - please, skaschite v 4em. A to esli by forma byla na 40 controlov, to nazna4at' etu proceduru kaschdomy bylo by tosklivo...
0
|
0 / 0 / 0
Регистрация: 26.03.2007
Сообщений: 238
|
|
03.06.2007, 15:39 | 12 |
2Похомов. Если установить проперть на Form'e KeyPreView=True. То при нажатии клавиши в контроле события происходят примерно так (для всех 'буквенных' контролей form_keydown,form_updown,form_keypress ну и дальше на контроль). И то, что я написал - это работает и не в одном приложеннии
0
|
0 / 0 / 0
Регистрация: 09.05.2007
Сообщений: 130
|
|
03.06.2007, 15:51 | 13 |
Spasibo! Vesch' o4en' dlja menja poleznaja.
0
|
VladK
|
|
03.06.2007, 16:08 | 14 |
To pakhomov_a:
Cобытие _KeyDown наступает СНАЧАЛА для формы и ПОТОМ для контроля если Form.KeyPreview = TRUE. Убедитесь, что вы установили это свойство корректно. То Mavr: Способ с SendKeys в каждом контроле для передачи фокуса наиболее НЕУДАЧЕН. Он длинен: сравните количество кода на контроль у Foxtrot и avtoman. Да и ни к чему как то эмулировать переход фокуса. Положено делать напрямую: через SetFocus. Но главное, делать это надо именно в Sub Form_KeyPress, а не в контролях, если их таких больше 2. Вы серьезно хотите повторять код? Как минимум это противоречит сертификационным требованиям Microsoft для VB6. То lan: Я согласен с вами абсолютно. |
Mavr
|
|
04.06.2007, 06:19 | 15 |
2VladK, в каждом контроле и не надо ставить обработчик, то же самое KeyPreview = True, и ставишь SendKeys в Form_KeyDown, и фокус сам будет скакать на след. контрол.
|
0 / 0 / 0
Регистрация: 09.05.2007
Сообщений: 130
|
|
05.06.2007, 15:28 | 16 |
KeyPreview
(dlja UserForm) ja v Excele ne naschel (( Ego tam net? Ili ono ina4e nazyvajetsja?
0
|
05.06.2007, 15:28 | |
05.06.2007, 15:28 | |
Помогаю со студенческими работами здесь
16
Переход к следующему элементу по нажатии Enter вместо Tab Не получается поменять TAB на ENTER PostMessage помогите. Нажатие TAB и ENTER как можно заменить TAB на Enter? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |