Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
5-1115307035
Mutex
2005-05-05 19:30
2005.12.04
Проблема с экспертом (IOTAFormEditor)


14-1131950684
DelphiN!
2005-11-14 09:44
2005.12.04
Компонент для записи изображения с Web камеры


14-1132050748
Ega23
2005-11-15 13:32
2005.12.04
Есть знатоки немецкого?


14-1131837533
Vasek
2005-11-13 02:18
2005.12.04
interbase.. заполнение таблицы?


4-1128300987
Macho
2005-10-03 04:56
2005.12.04
Игнорировать нажатие клавиш мыши для CheckBox





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский