Прощайте, глючные Textboxы!

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

Автор публикации

не в сети 4 недели

admin

Комментарии: 0Публикации: 122Регистрация: 10-12-2000
Материалы по теме
Авторизация
*
*
Генерация пароля