![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
![]()
Доброго времени суток.
У меня есть маленькая проблема с контекстными меню, которую я раздул для себя из-за личного интереса к проблеме. Собственно, у меня есть компонент ввода (какой нибудь TEdit), и в событии OnKeyPress выполняется код "динамической" фильтрации ввода. --- Это должен быть спойлер --- Динамическая, потому что в зависимости от состояния зависимых входных данных разрешается вводить разные наборы символов. --- Спойлер закончился --- Собственно, данная фильтрация не происходит при событиях вставки текста, которые доступны по Ctrl+V и в контекстном меню. И если я могу заблокировать комбинацию клавиш, то с контекстным меню немного сложнее. В принципе я могу не фильтровать ввод в процессе самого ввода (а просто отсеивать левые символы, или выдавать ошибку при парсинге строки), но тогда я теряю личный интерес к решению задачи. Так же я могу создать костыль - прикрепить своё пустое контекстное меню, но это тоже не интересно. У меня есть несколько способов, которые я не знаю, как реализовать, или знаю, но частично: 1) отключить контекстное меню в принципе, посредством блокировки нажатия ПКМ; но есть не отсеиваемая клавиша на клавиатуре (у меня между правыми Alt и Ctrl, на ноутбуке), которую, как я вычитал, нужно блокировать с помощью hook'ов (WinAPI), или DLL, что для моей задачки уже сложно, и поэтому тоже не интересно; 2) блокировать вставку текста, что по сути и сложности для меня примерно тоже, что и первый способ; 3) фильтровать вставляемый текст; в принципе, это идеальный для меня вариант, но я не знаю, как и где получать вставляемую строку (которую пропарсить не сложно); если это то же сложный способ (из ряда WinAPI) - то я всё равно хочу его реализовать, потому что мне интересен именно этот способ. Третий способ я могу реализовать посредством костыля в виде таймера, но это немного неправильно с точки зрения использования процессорного времени. Помогите пожалуйста реализовать эту задачу так, что бы это был третий способ. Ну и да, кому не всё равно - поздравляю с днём программиста.
Подпись ? Не, не слышал ...
Последний раз редактировалось OmegaBerkut; 13.09.2015 в 17:40. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
А не пользоваться OnKeyPress. А пользоваться OnChange. Накроет и клавиатурный ввод и копипасту.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#3 | |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
![]() Цитата:
Я понимаю, что для процессора это ничто, но тем не менее - это банальнейший принцип.
Подпись ? Не, не слышал ...
|
|
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
Ога. Только пользователю на это начхать и обложит еще как, когда не сможет копипастой воспользоваться
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#5 |
Спокойный псих
Участник клуба
Регистрация: 19.03.2013
Сообщений: 1,538
|
![]()
Я же описал, что хочу реализовать фильтрацию копипасты, то есть - ничего не блокировать
Подпись ? Не, не слышал ...
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
![]()
WM_PASTE в твой эдит
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 31.05.2011
Сообщений: 301
|
![]()
Возможно такой вариант подойдёт:
Код:
Код:
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
работа с меню | xxx797 | C# (си шарп) | 2 | 05.12.2013 21:39 |
Работа с меню. | fobos-159 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 23.11.2013 17:15 |
работа в меню | kloffelin | Помощь студентам | 5 | 21.02.2010 17:08 |
Работа с меню и рисунками | Mag992 | Помощь студентам | 6 | 17.02.2010 08:57 |