powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как правильно управлять фокусом
5 сообщений из 5, страница 1 из 1
Как правильно управлять фокусом
    #38052106
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте все! Что-то я давно вопросов не задавал
Вот смотрите, такая штука:
Мне надо, чтобы в случае неудачного поиска фокус был на тексбоксе.
Если я щелкаю мышом по кнопке "Поиск" (потом на Messagebox), то все нормально, но
если жму "Enter" (потом на Messagebox), то фокус уходит на следующий объект (по TabOrder).
Пришлось достать бубен (строки "танца" я закомментил). А как это все сделать без бубна?
Форма As Top Level, код кнопки прилагаю.
Cilck() кнопки "Поиск"
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
IF This.Caption="Поиск"
	SELECT Telefon
	lnRec=RECNO()
	lcText=UPPER(Thisform.txtFind.Value)
	IF !ISBLANK(lcText)
		COUNT FOR lcText $ UPPER(Telefon.company) OR lcText $ UPPER(Telefon.fio) OR ;
				lcText $ UPPER(Telefon.tlf) OR lcText $ UPPER(Telefon.primech) TO lnQz
		IF lnQz>0
			......
		ELSE
*			lnKey=LASTKEY()
			MESSAGEBOX("Нет записей, удовлетворяющих условию.",64,"Результат поиска")
			GO lnRec
			Thisform.txtFind.Setfocus()
*			IF lnKey=13
*				KEYBOARD '{BACKTAB}' PLAIN CLEAR
*			ENDIF
		ENDIF
	ELSE
		MESSAGEBOX("Задайте подстроку для поиска.",64,"Ошибка")
		Thisform.txtFind.Setfocus()
	ENDIF
ELSE
	This.Caption="Поиск"
	SET FILTER TO
	SET ORDER TO
	GO TOP
	Thisform.Grid1.Refresh
	Thisform.txtFind.Value=""
	Thisform.txtFind.Setfocus()
ENDIF

KeyPress() textbox
Код: plsql
1.
2.
3.
4.
LPARAMETERS nKeyCode, nShiftAltCtrl
IF nKeyCode=13
	Thisform.cmdFind.Click()
ENDIF



Может, кто сталкивался?

P.S. В Init() все путем, никаких перескоков нет.
...
Рейтинг: 0 / 0
Как правильно управлять фокусом
    #38052119
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используй nodefault в KeyPress() чтобы не отрабатывало штатное перемещение фокуса. А дальше сам двигай фокус как тебе надо.
Код: sql
1.
2.
3.
4.
5.
LPARAMETERS nKeyCode, nShiftAltCtrl
IF nKeyCode=13
	Thisform.cmdFind.Click()
	nodefault
ENDIF
...
Рейтинг: 0 / 0
Как правильно управлять фокусом
    #38052129
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Jonny540
Код: sql
1.
2.
3.
*			IF lnKey=13
*				KEYBOARD '{BACKTAB}' PLAIN CLEAR
*			ENDIF



И это не стоит делать. Откуда такая уверенность что пользователь ошибся именно в последнем символе?
Не надо помогать исправить введенную инфу, указал на ошибку и достаточно. Непонятные самостоятельные действия проги только запутают пользователя.
...
Рейтинг: 0 / 0
Как правильно управлять фокусом
    #38052263
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TJonny540
Код: sql
1.
2.
3.
*			IF lnKey=13
*				KEYBOARD '{BACKTAB}' PLAIN CLEAR
*			ENDIF



И это не стоит делать. Откуда такая уверенность что пользователь ошибся именно в последнем символе?
Не надо помогать исправить введенную инфу, указал на ошибку и достаточно. Непонятные самостоятельные действия проги только запутают пользователя.Это не исправления - это и есть "танцы", чтобы вернуть фокус на текстбокс
...
Рейтинг: 0 / 0
Как правильно управлять фокусом
    #38052265
Jonny540
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dima TИспользуй nodefault в KeyPress() чтобы не отрабатывало штатное перемещение фокуса. А дальше сам двигай фокус как тебе надо.
Код: sql
1.
2.
3.
4.
5.
LPARAMETERS nKeyCode, nShiftAltCtrl
IF nKeyCode=13
	Thisform.cmdFind.Click()
	nodefault
ENDIF

Спасибо, работает.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Как правильно управлять фокусом
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]