Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.04.2012, 10:09   #1
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию TextBox, SetFocus и Enter перестает работать

Здравствуйте, Уважаемые!
Вот "вылез" очередной баг, с которым никак не могу справится.
Есть форма с парой текстбоксов, кнопками "Внести" и "Очистить".
При инициализации формы фокус на на первый текстбокс устанавливается согласно TabIndex = 0.
Затем вот такие строчки:
Код:
Private Sub КодКлиентаСР_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)'переход по Enter
    If KeyCode = vbKeyReturn Then Call КодКлиентаСР_Обработать
End Sub

Private Sub КодКлиентаСР_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)' или по клику на втором текстбоксе
    Call КодКлиентаСР_Обработать
End Sub
Два события используются по заданиюю.
После внесения введенных данных кнопкой "Внести" текстбоксы очищаются кнопкой "Очистить" и фокус переностися опять на первый текстбокс КодКлиентаСР
Код:
Private Sub СР_Сброс_Click()
КодКлиентаСР.SetFocus
'код очистки эелеменов формы
End Sub
и вот тут возикает эта проблема. Перестает работать Enter. Т.е. я ввожу данные, нажимаю Enter и никакой реакции.
Если кликаю мышом на втором боксе все срабатывает, данные обновляются.
Причем, что странно, может работать как-то через раз.
Есть подозрение, что это все из-за SetFocus (перечитал кучу всего и на нашем форуме и в инете) но как это победить не знаю.
И фокус после очистки обязательно должен быть опять в КодКлиентаСР.
К сожалению не могу выложить файл с формой и кодом, т.к. она связана с данными в базах и все равно отдельно не сработатет.
Плюнул бы и оставил как есть, мышом же переходит, но народ хочет чтобы работало именно так - и мышом и Enter'ом.
Подскажите, пожалуйста, можно как-то с этим побороться?
Спасибо.
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 03.04.2012, 11:27   #2
nerv
Форумчанин
 
Аватар для nerv
 
Регистрация: 26.04.2010
Сообщений: 450
По умолчанию

VictorM, не хочу играть в угадйки - пример в файле.
Тишина – самый громкий звук
nerv вне форума Ответить с цитированием
Старый 03.04.2012, 14:59   #3
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Понимаю, сам бы так сказал..
Ладно, буду пробовать, может что найду.
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 03.04.2012, 19:00   #4
RAN.
Форумчанин
 
Аватар для RAN.
 
Регистрация: 05.07.2011
Сообщений: 208
По умолчанию

Enter работает, а вот при получении фокуса через SetFocuc ни события КодКлиентаСР_KeyDown, ни события КодКлиентаСР_BeforeUpdate не возникает.

Последний раз редактировалось RAN.; 03.04.2012 в 19:03.
RAN. вне форума Ответить с цитированием
Старый 03.04.2012, 19:38   #5
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Цитата:
при получении фокуса через SetFocuc ни события КодКлиентаСР_KeyDown, ни события КодКлиентаСР_BeforeUpdate не возникает.
Все так. Эти события мне нужно получить после ввода данных в текстбокс.
Вот думаю, как обойти все это. И чтобы фокус поместить в текстбокс и Enter после этого работал. (И ведь работает иногда, но именно что иногда и не на всех компах)
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Старый 03.04.2012, 19:53   #6
RAN.
Форумчанин
 
Аватар для RAN.
 
Регистрация: 05.07.2011
Сообщений: 208
По умолчанию

Без файла точно ничего не выйдет. Скорее всего, процедуры так завязаны, что ожидаемого результата не получается.
RAN. вне форума Ответить с цитированием
Старый 03.04.2012, 23:29   #7
VictorM
Старожил
 
Аватар для VictorM
 
Регистрация: 15.05.2008
Сообщений: 2,058
По умолчанию

Справился.
Несколько через ..., но теперь работает как заказывали))
Кнопкой "Очистить" кроме очистки элементов формы, выгружаю и тут-же показываю опять форму. На глаз не заметно. Фокус на месте (устанавливается согласно TabIndex = 0). От SetFocuc отказался полностью.
Все работает.
Спасибо всем за участие.
"Дайте людям рыбы, и вы накормите их на весь день; научите их ловить рыбу - и вы накормите их на всю жизнь"
"Большое спасибо" - Z261597841314, R208907249777, U447361470499
VictorM вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перестает работать анимация. Юрий90 Visual C++ 4 15.02.2012 13:32
Автоподстановка перестает работать GekFinn Microsoft Office Access 1 19.01.2012 11:38
при открытии другой книги скрипт перестает работать gramp Microsoft Office Excel 5 14.02.2011 14:11
ПЕРЕСТАЕТ РАБОТАТЬ МАКРОС Cone Microsoft Office Excel 3 15.08.2010 13:49
ПЕРЕСТАЕТ РАБОТАТЬ СОРТИРОВЩИК Cone Microsoft Office Excel 5 10.08.2010 16:36