|
Вопрос # 43/ вопрос открыт / |
|
Здравствуйте!
Вот и снова я...
У меня возник ещё один вопрос... весь инет перерыл - нигде ничего нет по этому вопросу!
Вопрос: как перехватить клавишу Del в RichEdit, Memo и Edit, чтобы при нажатии на данную клавишу последующий символ стирался, как во всех текстовых редакторах... а то без каких-либо действий ничего не происходит... ответьте, если не трудно! Заранее спасибо...
 |
Вопрос задал: 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 дней с момента отправки ответа)
Приложение: Переключить в обычный режим- Form1.KeyPreview:= True;
- ...
- procedure Form1.OnKeyPress(Sender: TObject; var Key: Char);
- begin
-
- then Key:= #0;
-
- 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 (статус: 1-ый класс), 18 июня 2006, 01:18 [#2]:
Спасибо... видел... но не подумал...
|
|
feenords (статус: 1-ый класс), 18 июня 2006, 01:28 [#3]:
А если, допустим, Del - горячая клавиша меню? Тогда как быть... попробовал - используется гор.клав., а не перехват.
|
|
Виталий Лещенко (статус: 4-ый класс), 18 июня 2006, 02:29 [#4]:
Тогда лучше не использовать такие клавиши в мемю. Это и не удобно в большинстве случаев и доставляет подобные твоей проблемы.
|
|
Ерёмин А.А. (статус: *Администратор), 18 июня 2006, 09:44 [#5]:
Виталий Лещенко, а зачем отвечаете в мини-форум, а не "полноценным" ответом? Сообщения мини-форума в рассылку не уйдут, а читателям интересно
|
|
bruder (статус: 4-ый класс), 18 июня 2006, 11:16 [#6]:
А у меня всё и так работает :/
|
|
feenords (статус: 1-ый класс), 19 июня 2006, 00:51 [#8]:
Спасибо всем за ответы...
Почему не действует - я уже понял... просто у меня Del на гор. клав. стояла... и даже не надо ставить у формы KeyPreview в True... она и без этого пашет... а с True антивирус выдаёт, что прога - кейлоггер!
Но хотелось бы, чтобы Del отображалась как гор.клав., но не действовала как таковая... Подумаем...
|
|
feenords (статус: 1-ый класс), 19 июня 2006, 01:21 [#9]:
А код Del - как не странно - по моему, 43, как и у номера вопроса!
|
|
Dron (статус: Студент), 19 июня 2006, 09:59 [#10]:
Я что-то не пойму: а зачем ставить Del как горячую клавишу? Это делает две взаимоисключащие вещи по смыслу. Поставьте тогда уж Ctrl+Del.
С уважением.
|
|
bruder (статус: 4-ый класс), 19 июня 2006, 11:43 [#11]:
feenords, а где оценки =)
|
|
feenords (статус: 1-ый класс), 20 июня 2006, 00:24 [#12]:
Ctrl+Del - уже есть...
Хотелось бы, чтобы Del просто отображалась как гор.клав., но не импользовалась...
А если пользователь сам поставит куда-либо эту гор.клав., что тогда... программа глюканёт...
Оценки все выставил... всем спасибо... ждите новых халявных вопросов...
|
|
bruder (статус: 4-ый класс), 20 июня 2006, 08:36 [#13]:
Халявных не надо
|
|
Ерёмин А.А. (статус: *Администратор), 20 июня 2006, 08:45 [#14]:
feenords, если Вы задаёте вопросы просто так, ради интереса, то этого делать не нужно. Спрашивайте о том, что не можете сделать самостоятельно.
|
|
min@y™ (статус: Доктор наук), 20 июня 2006, 09:58 [#15]:
2 Ерёмин А.А.:
Да пускай задаёт, надо ж нам чемнить заняцца в рабочее-то время! )))))
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
feenords (статус: 1-ый класс), 21 июня 2006, 00:20 [#16]:
Я вопросы задаю не для интереса... просто надо... конечно, большинство я изучаю сам... но как можно узнать о том, чего не знаешь... книги не в счёт.
Методом научного (простите за выражение) тыка получается не всё и не всегда... а вопросы для Вас скорее всего халявные (т.е. легкие), а для меня пока что нет...
И тем более - вопросы нестандартные (см. минифорум)... такого в книге не найдёшь...
>Хотелось бы, чтобы Del просто отображалась как гор.клав., но не использовалась...
Покажите мне страницу в книге, где такое можно узнать?.. Буду премного благодарен... на сегодня всё... Спасибо за всё...
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|