Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 43

/ вопрос открыт /

Здравствуйте!
Вот и снова я...
У меня возник ещё один вопрос... весь инет перерыл - нигде ничего нет по этому вопросу!
Вопрос: как перехватить клавишу Del в RichEdit, Memo и Edit, чтобы при нажатии на данную клавишу последующий символ стирался, как во всех текстовых редакторах... а то без каких-либо действий ничего не происходит... ответьте, если не трудно! Заранее спасибо...

feenords Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: feenords (статус: 1-ый класс)
Вопрос отправлен: 18 июня 2006, 00:22
Состояние вопроса: открыт, ответов: 3.

Ответ #1. Отвечает эксперт: bruder

Здравствуй, feenords.
Странно, но в RichEdit, Memo, Edit, у меня последующий символ стирается...
Чтобы перехватить нажатие <Delete>, нужно обрабатывать событие OnKeyDown у компонента.
if Key=Ord(VK_DELETE) then

Ответ отправил: bruder (статус: 4-ый класс)
Время отправки: 18 июня 2006, 11:12
Оценка за ответ: 4

Ответ #2. Отвечает эксперт: min@y™

Прочитав вопрос, сделал глаза по 5 рублей :)).
Запустил Delphi, создал проект, положил на форму Edit, Memo и RichEdit. Запускаю - такст нормально стирается клавишей Del. Прикрепляю этот пример к вопросу.

Предполагаю, что у тебя там какой-нибудь TAction или TMenuItem имеет ShortCut = Del, либо {см. приложение}.
К ответу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки ответа)

Приложение:
  1. Form1.KeyPreview:= True;
  2. ...
  3. procedure Form1.OnKeyPress(Sender: TObject; var Key: Char);
  4. begin
  5.  
  6. then Key:= #0;
  7.  
  8. end;


Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 18 июня 2006, 12:08
Оценка за ответ: 5

Ответ #3. Отвечает эксперт: Евгений Малышев

Здравствуйте, feenords.

Используйте события OnKeyUp и OnKeyDown. В них передается параметр с кодом нажатой клавиши. Код клавиши Del не знаю, но это можно вычислить путем вывода (Например, в TLabel) кода.

Ответ отправил: Евгений Малышев (статус: 1-ый класс)
Время отправки: 18 июня 2006, 21:29
Оценка за ответ: 4


Мини-форум вопроса

Всего сообщений: 16; последнее сообщение — 21 июня 2006, 00:20; участников в обсуждении: 6.
Виталий Лещенко

Виталий Лещенко (статус: 4-ый класс), 18 июня 2006, 01:05 [#1]:

У формы есть свойство KeyPreview. Установие его в true и теперь все данные о нажатии будут приходить сначала в ворму а затем компонетам.
feenords

feenords (статус: 1-ый класс), 18 июня 2006, 01:18 [#2]:

Спасибо... видел... но не подумал...
feenords

feenords (статус: 1-ый класс), 18 июня 2006, 01:28 [#3]:

А если, допустим, Del - горячая клавиша меню? Тогда как быть... попробовал - используется гор.клав., а не перехват.
Виталий Лещенко

Виталий Лещенко (статус: 4-ый класс), 18 июня 2006, 02:29 [#4]:

Тогда лучше не использовать такие клавиши в мемю. :) Это и не удобно в большинстве случаев и доставляет подобные твоей проблемы.
Ерёмин А.А.

Ерёмин А.А. (статус: *Администратор), 18 июня 2006, 09:44 [#5]:

Виталий Лещенко, а зачем отвечаете в мини-форум, а не "полноценным" ответом? Сообщения мини-форума в рассылку не уйдут, а читателям интересно :-)
bruder

bruder (статус: 4-ый класс), 18 июня 2006, 11:16 [#6]:

А у меня всё и так работает :/
bruder

bruder (статус: 4-ый класс), 18 июня 2006, 17:42 [#7]:

min@y™ ну ты уж совсем повторил всех :) Лучше бы в форум это написал... ;)
feenords

feenords (статус: 1-ый класс), 19 июня 2006, 00:51 [#8]:

Спасибо всем за ответы...
Почему не действует - я уже понял... просто у меня Del на гор. клав. стояла... и даже не надо ставить у формы KeyPreview в True... она и без этого пашет... а с True антивирус выдаёт, что прога - кейлоггер!
Но хотелось бы, чтобы Del отображалась как гор.клав., но не действовала как таковая... Подумаем...
feenords

feenords (статус: 1-ый класс), 19 июня 2006, 01:21 [#9]:

А код Del - как не странно - по моему, 43, как и у номера вопроса!
Dron

Dron (статус: Студент), 19 июня 2006, 09:59 [#10]:

Я что-то не пойму: а зачем ставить Del как горячую клавишу? Это делает две взаимоисключащие вещи по смыслу. Поставьте тогда уж Ctrl+Del.
С уважением.
bruder

bruder (статус: 4-ый класс), 19 июня 2006, 11:43 [#11]:

feenords, а где оценки =)
feenords

feenords (статус: 1-ый класс), 20 июня 2006, 00:24 [#12]:

Ctrl+Del - уже есть...
Хотелось бы, чтобы Del просто отображалась как гор.клав., но не импользовалась...
А если пользователь сам поставит куда-либо эту гор.клав., что тогда... программа глюканёт...
Оценки все выставил... всем спасибо... ждите новых халявных вопросов...
bruder

bruder (статус: 4-ый класс), 20 июня 2006, 08:36 [#13]:

Халявных не надо
Ерёмин А.А.

Ерёмин А.А. (статус: *Администратор), 20 июня 2006, 08:45 [#14]:

feenords, если Вы задаёте вопросы просто так, ради интереса, то этого делать не нужно. Спрашивайте о том, что не можете сделать самостоятельно.
min@y™

min@y™ (статус: Доктор наук), 20 июня 2006, 09:58 [#15]:

2 Ерёмин А.А.:
Да пускай задаёт, надо ж нам чемнить заняцца в рабочее-то время! :))))))
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
feenords

feenords (статус: 1-ый класс), 21 июня 2006, 00:20 [#16]:

Я вопросы задаю не для интереса... просто надо... конечно, большинство я изучаю сам... но как можно узнать о том, чего не знаешь... книги не в счёт.
Методом научного (простите за выражение) тыка получается не всё и не всегда... а вопросы для Вас скорее всего халявные (т.е. легкие), а для меня пока что нет...
И тем более - вопросы нестандартные (см. минифорум)... такого в книге не найдёшь...
>Хотелось бы, чтобы Del просто отображалась как гор.клав., но не использовалась...
Покажите мне страницу в книге, где такое можно узнать?.. Буду премного благодарен... на сегодня всё... Спасибо за всё...

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:53
Выполнено за 0.03 сек.