FoxPro Club Главная

Конференция Решения Фотоальбом Сайт М.Дроздова Статьи Файловый архив Книга Visual FoxPro 9.0 Русский Help для Visual FoxPro
Пользователей: 9239
Вход
Прощайте, глючные Textboxы!

Поведение стандартного контрола Textbox при перемещении по нему влево-вправо, при удалении символов, при нажатии Home и End - может довести пользователя до белого каления (ИМХО). Предложенный код в методе KeyPress заставляет данный контрол работать правильнее.


 
Прислал: Er0p   Категория: Интерфейс


lparameters nkeycode, nshiftaltctrl

do case

case nkeycode=19 and nshiftaltctrl=0
nodefault
if this.selstart>0
dodefault(nkeycode, nshiftaltctrl)
else
if this.sellength>0
this.sellength=0
endif
endif

case nkeycode=4 and nshiftaltctrl=0
nodefault
if this.sellength>0
this.selstart=this.selstart+this.sellength
else
if this.selstart=this.maxlength-1
this.selstart=this.maxlength
else
if this.selstart#this.maxlength
dodefault(nkeycode, nshiftaltctrl)
endif
endif
endif

case INLIST(nkeycode,1,6) and (nshiftaltctrl=0)
*** Эти команды кажутся бессмысленными, однако убирают глючное перескакивание курсора при нажатии клавиши {End} или {Home} ***
nodefault
dodefault(nkeycode, nshiftaltctrl)

case nkeycode=127
nodefault
if this.selstart>0
dodefault(nkeycode, nshiftaltctrl)
else
if this.sellength>0
this.seltext=''
endif
endif
endcase


 
Сделайте оценку этого решения Плохо Удовлетворительно Так себе Хорошо Отлично Текущая оценка: (2)
Дополнения пользователей
Прощайте, глючные Textboxы!
[+][?]
dfr
18.05.07 06:12:10

При редактировании цифрового значения курсор, стоящий в крайнем левом положении, не перемещается
вправо клавишей RIGHT ARROW.
Er0p
18.05.07 13:17:45

2dfr
У меня всё перемещается как надо. Если не затруднит - пришлите Ваш пример на Er0p@Mail.Ru
Влад Колосов
19.05.07 16:26:00

Так чем же "глючен" текстбокс? За последние 10 лет на ннего никто не жаловался, кроме Er0p :)
Er0p
19.05.07 19:27:09

2Влад Колосов
В базовых текстбоксах если пользователь удерживает клавиши со стрелками вправо-влево или
backspace, курсор перескакивает на соседние контролы. То же происходит, если несколько раз подряд
нажать Home или End. Мне ещё не встречались пользователи, которые бы назвали это удобным.
Er0p
19.05.07 20:31:53

2dfr

У Вас нет источника данных в ControlSource - и как следствие свойство MaxLength=0.

Пропишите в Init строки
if this.maxlength=0

this.maxlength=2147483647

endif

и всё будет работать как надо.
[Дополнить]



© 2000-2017 Fox Club 
При размещении любых материалов с сайта на других ресурсах- прямая ссылка на www.foxclub.ru обязательна
Яндекс.Метрика