Поведение стандартного контрола Textbox при перемещении по нему влево-вправо, при удалении символов, при нажатии Home и End - может довести пользователя до белого каления (ИМХО).
Предложенный код в методе KeyPress заставляет данный контрол работать правильнее.
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
При редактировании цифрового значения курсор, стоящий в крайнем левом положении, не перемещается
вправо клавишей 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
и всё будет работать как надо.