Форум: "Основная";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];
ВнизКомбинаций клавиш 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.037 c