Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запрет потери фокуса в textbox / 5 сообщений из 5, страница 1 из 1
03.06.2009, 18:44
    #36024336
Edbo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет потери фокуса в textbox
Как запретить покадать textbox после ввода последнего символа (длина ограничена), то есть поле ввода можно покинуть или клавишами навигации или мышкой.
...
Рейтинг: 0 / 0
03.06.2009, 22:31
    #36024583
Запрет потери фокуса в textbox
В main.prg объявить переменные :
Код: plaintext
1.
2.
lChangeValue=.F.
cOldData=''

В TextBox.GotFocus :
Код: plaintext
1.
2.
cOldData=This.Value
lChangeValue=.F.

В TextBox.InteractiveChange :
Код: plaintext
1.
lChangeValue=.T.

В TextBox.KeyPress :
Код: plaintext
1.
2.
3.
4.
if lastkey()= 27     && <Esc>
   This.Value=cOldData
   lChangeValue=.F.
endif

В TextBox.Valid :
Код: plaintext
1.
2.
3.
4.
if lastkey()= 13     && <Enter>
  lChangeValue=.F.
endif
return .not. lChangeValue

В TextBox.LostFocus : (страховка / контроль корректности данных)
Код: plaintext
1.
2.
3.
4.
if  lChangeValue=.T.
   This.Value=cOldData
   lChangeValue=.F.
endif
...
Рейтинг: 0 / 0
03.06.2009, 22:45
    #36024595
А еще
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет потери фокуса в textbox
В main.prg можно сделать общую функцию для проверки незавершенных действий :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
FUNCTION fwaitProcess
LOCAL lRet
lRet=.F.
if lChangeValue=.T.
   lRet=.T.
endif
if ...
   ...
endif
...

RETURN lRet
...
Рейтинг: 0 / 0
03.06.2009, 23:29
    #36024628
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет потери фокуса в textbox
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
* Событие TextBox.KeyPress()
LPARAMETERS nKeyCode, nShiftAltCtrl

Local lcAvalibleSymbol
lcAvalibleSymbol = "0123456789"+;
			" ,./?!()"+;
			"qwertyuiopasdfghjklzxcvbnm"+;
			"йцукенгшщзхъфывапролджэячсмитьбюё"+;
			""
lcAvalibleSymbol = m.lcAvalibleSymbol + Upper(m.lcAvalibleSymbol)
If this.SelStart= 9  and At(CHR(m.nKeyCode), m.lcAvalibleSymbol)> 0 
	DoDefault(nKeyCode, nShiftAltCtrl)
	this.SelStart =  9 
	NoDefault
endif

Здесь я предполагаю, что всего 10 символов можно завести в TextBox. Какие символы еще допустимо вводить добавь сам. Или удали лишние.
...
Рейтинг: 0 / 0
04.06.2009, 08:03
    #36024788
GermanGM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрет потери фокуса в textbox
Edbo, в Init формы SET CONFIRM ON, в UNLOAD - восстановление исходного значения SET CONFIRM.
Если подобное условие требуется только для некоторых TextBox-ов, то добавьте SET CONFIRM ON в событие GotFocus и SET CONFIRM OFF - в LostFocus. Очевидно, его значение в Вашей программе - "OFF", иначе этого вопроса бы не возникло
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запрет потери фокуса в textbox / 5 сообщений из 5, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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