powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запрет потери фокуса в textbox
5 сообщений из 5, страница 1 из 1
Запрет потери фокуса в textbox
    #36024336
Edbo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как запретить покадать textbox после ввода последнего символа (длина ограничена), то есть поле ввода можно покинуть или клавишами навигации или мышкой.
...
Рейтинг: 0 / 0
Запрет потери фокуса в textbox
    #36024583
В 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
Запрет потери фокуса в textbox
    #36024595
А еще
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В 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
Запрет потери фокуса в textbox
    #36024628
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Запрет потери фокуса в textbox
    #36024788
GermanGM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Edbo, в Init формы SET CONFIRM ON, в UNLOAD - восстановление исходного значения SET CONFIRM.
Если подобное условие требуется только для некоторых TextBox-ов, то добавьте SET CONFIRM ON в событие GotFocus и SET CONFIRM OFF - в LostFocus. Очевидно, его значение в Вашей программе - "OFF", иначе этого вопроса бы не возникло
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запрет потери фокуса в textbox
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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