Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Запрет потери фокуса в textbox  [new]
Edbo
Member

Откуда:
Сообщений: 16
Как запретить покадать textbox после ввода последнего символа (длина ограничена), то есть поле ввода можно покинуть или клавишами навигации или мышкой.
3 июн 09, 18:44    [7262372]     Ответить | Цитировать Сообщить модератору
 Re: Запрет потери фокуса в textbox  [new]
А вот так пойдет ?
Guest
В main.prg объявить переменные :
lChangeValue=.F.
cOldData=''

В TextBox.GotFocus :
cOldData=This.Value
lChangeValue=.F.

В TextBox.InteractiveChange :
lChangeValue=.T.

В TextBox.KeyPress :
if lastkey()=27    && <Esc>
   This.Value=cOldData
   lChangeValue=.F.
endif

В TextBox.Valid :
if lastkey()=13    && <Enter>
  lChangeValue=.F.
endif
return .not. lChangeValue

В TextBox.LostFocus : (страховка / контроль корректности данных)
if  lChangeValue=.T.
   This.Value=cOldData
   lChangeValue=.F.
endif
3 июн 09, 22:31    [7262868]     Ответить | Цитировать Сообщить модератору
 Re: Запрет потери фокуса в textbox  [new]
А еще
Guest
В main.prg можно сделать общую функцию для проверки незавершенных действий :
FUNCTION fwaitProcess
LOCAL lRet
lRet=.F.
if lChangeValue=.T.
   lRet=.T.
endif
if ...
   ...
endif
...

RETURN lRet
3 июн 09, 22:45    [7262889]     Ответить | Цитировать Сообщить модератору
 Re: Запрет потери фокуса в textbox  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
* Событие 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. Какие символы еще допустимо вводить добавь сам. Или удали лишние.
3 июн 09, 23:29    [7263018]     Ответить | Цитировать Сообщить модератору
 Re: Запрет потери фокуса в textbox  [new]
GermanGM
Member

Откуда:
Сообщений: 256
Edbo, в Init формы SET CONFIRM ON, в UNLOAD - восстановление исходного значения SET CONFIRM.
Если подобное условие требуется только для некоторых TextBox-ов, то добавьте SET CONFIRM ON в событие GotFocus и SET CONFIRM OFF - в LostFocus. Очевидно, его значение в Вашей программе - "OFF", иначе этого вопроса бы не возникло
4 июн 09, 08:03    [7263332]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить