Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.12.04;
Скачать: CL | DM;

Вниз

Комбинаций клавиш Ctrl+C и Ctrl+V в TEdit е.   Найти похожие ветки 

 
gdaujk ©   (2005-11-08 23:42) [0]

Я сделал потомок TEdit"а (точнее TCustomEdit, но в данном случае это не имеет значения). В этом потомке я перекрыл KeyDown следующим образом:

procedure TgdaRealEdit.KeyPress(var Key: Char);
begin
 inherited;
 case Key of
 "0".."9", #8:      ;
 …
 else Key := #0;
 end;
end;


то есть позволил юзеру вводить только 0..9 (в данном случае).

Подскажите пожалуйста, как тем же способом разрешить пользователю ввод комбинаций клавиш Ctrl+C и Ctrl+V.

PS: есть вариант разрешить ввод Key =  #3 и Key = #22, приходящие при нажатии Ctrl+C и Ctrl+V соответственно. Только что такое #3 и #22 ?


 
Delphi_is_cool ©   (2005-11-09 00:03) [1]

Для того чтобы юзер мог вводить только цифры сделай так:

var
 NewStyle: Integer;
begin
 NewStyle := GetWindowLong(Edit_Handle, GWL_STYLE) or ES_NUMBER;
 SetWindowLong(Edit_Handle, GWL_STYLE, NewStyle);
end;


А чтоб запретить копировать в вставлять, надо ловить мессаги WM_COPY и WM_PASTE.

ps
Код прям сдесь написал, возможны опечатки ...


 
gdaujk ©   (2005-11-09 00:47) [2]

Delphi_is_cool ©   (09.11.05 00:03) [1]
Для того чтобы юзер мог вводить только цифры сделай так:

The ES_NUMBER style restricts input to the edit control to digits only... Мне же надо действительные числа (0..9, DecimalSeparator, -), т. е. код KeyPress у меня отличается от приведённого в сабже.

А чтоб запретить копировать в вставлять, надо ловить мессаги WM_COPY и WM_PASTE.
Было б всё так просто. Проблемма не в этом, а в том, что код, описанный в сабже, запрещает копировать/вставлять что-либо в Edit при нажатии Ctrl+C и Ctrl+V:
...
else Key := #0
...


 
AbrosimovA   (2005-11-09 08:50) [3]

Тем не менее можно вставлять через всплывающее меню по правой клавише мыши.


 
umbra ©   (2005-11-09 10:10) [4]

обработчики OnKeyDown и OnKeyUp очень для этих целей подходят.


 
gdaujk ©   (2005-11-09 10:59) [5]

AbrosimovA   (09.11.05 08:50) [3]
Не спорю. Но вопрос не в этом.

umbra ©   (09.11.05 10:10) [4]
Это сложнее. Наверное можно обойтись и Key =  #3 и Key = #22 в KeyPress. Если других вариантов нет, то я сделаю именно так.

procedure TgdaRealEdit.KeyPress(var Key: Char);
begin
...
 case Key of
  ...
  #3, #22:;
  …
   else Key := #0;
 end;
end;
...



Страницы: 1 вся ветка

Текущий архив: 2005.12.04;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.03 c
1-1131522537
sapsi
2005-11-09 10:48
2005.12.04
Расчет месячного платежа по формуле


4-1128067443
XGarik
2005-09-30 12:04
2005.12.04
Ошибка API ф-ии библиотеки RAPI.DLL?


2-1132265434
demon_god
2005-11-18 01:10
2005.12.04
Получить координаты точки по удалению и азимуту


5-1113852834
Бывший студент
2005-04-18 23:33
2005.12.04
TCollection+TStringGrid


14-1131945015
Некто
2005-11-14 08:10
2005.12.04
МультиЗагрузчик ОС