Главная страница
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.026 c
6-1124811090
ReFresh
2005-08-23 19:31
2005.12.04
TCP тунель.


2-1132438647
lex85
2005-11-20 01:17
2005.12.04
таблица StringGrid


1-1131282542
Xarkon
2005-11-06 16:09
2005.12.04
Как получить данные из _удалённого_ richedit?


2-1131961020
john_mag
2005-11-14 12:37
2005.12.04
convert type


2-1132059696
voe
2005-11-15 16:01
2005.12.04
Жизнидеятельность приложений