Я использую стандартные действия «Вырезать», «Копировать», «Вставить» в основное меню. У них есть ярлыки Ctrl-X, Ctrl-C и Ctrl-V.Как предотвратить нежелательные ссылки от Colliding/Interacting в Delphi?
Когда я открываю модальную форму, например. FindFilesForm.ShowModal, то все ярлыки работают из формы.
Но когда я открываю немодальную форму, например. FindFilesForm.Show, тогда ярлыки не работают.
Я думаю, что эти действия должны работать, если FindFilesForm является активной формой. Это модальность не должна иметь ничего общего с этим, или я ошибаюсь в своих мыслях?
Никогда, как я могу получить ярлыки для работы в немодальной форме?
После ответа Кэри я исследовал его дальше. Это не проблема с некоторыми элементами управления, например. TMemo или TEdit.
Но это для некоторых других. В частности, те, где это происходит, включают:
- текст в TComboBox
- текст в
- управления TElTreeInplaceEdit TFindDialog, часть ElPack LMD в
Я буду видеть, если есть другие и добавьте их в список.
Все это относится к важным немодальным формам в моей программе.
Так что мне все еще нужно решение.
Хорошо. Мне действительно нужна помощь в этом. Таким образом, это становится первым вопросом, на который я вкладываю щедрость.
Мое обсуждение с Кэри, которое происходит через его ответ, и комментарии там описывают мою проблему более подробно.
И как я уже говорил в одном из этих замечаний, проблема, связанная, как представляется, обсуждается here.
Что мне нужно, это решение или обходной путь, который позволит Ctrl-X, Ctrl-C и Ctrl-V всегда работать в TComboBox и TFindDialog в немодальном окне. Если эти два решения будут решены, я уверен, что мой TElTreeInplaceEdit также будет работать.
Для создания простой тестовой программы требуется всего несколько минут, как описывает Кэри. Надеюсь, кто-то сможет это решить.
Просто будьте осторожны, что, кажется, есть что-то, что позволяет ему работать иногда, но не работать в другое время. Если я смогу выделить это более подробно, я сообщу об этом здесь.
Спасибо за любую помощь, которую вы можете мне предложить.
Mghie работал очень трудно, чтобы найти решение, и его OnExecute обработчик в сочетании с его обработчиком ActionListUpdate сделать трюк. Поэтому, для его усилий, я даю ему приемлемое решение и пункты вознаграждения.
Но его обработчик обновления ActionScript не прост, и вам нужно указать в нем все случаи, которые вы хотите обработать. Предположим, что есть также Ctrl + A для выбора всех или Ctrl-Y для отмены вы можете захотеть. Общая процедура будет лучше.
Итак, если вы столкнулись с этим вопросом в поиске ответа, попробуйте сначала ответ, который я предоставил, добавив обработчик IsShortcut. Он работал для меня и должен обрабатывать каждый случай и не нуждается в обработчиках OnExecute, поэтому это намного проще. Питер Ниже написал этот код, и Уве Молжан получает плату искателей.
Спасибо, Кэри, мги, Уве и Питер за то, что помогли мне решить эту проблему. Не мог бы это сделать без тебя. (Может быть, я мог бы это сделать, но, возможно, это заняло у меня 6 месяцев.)
Если мой ответ решает вашу проблему, вероятно, вы также должны изменить вопрос на что-то вроде «Как заставить стандартные действия редактирования работать для всех элементов управления редактированием (комбинированные поля, редакторов на месте и т. Д.)?» – mghie
Или «Как я могу сделать стандартные действия редактирования, не нарушать ярлыки для собственных элементов управления?». Или что-то в этом роде, чтобы было легче найти в поисках. – mghie
Изменено название как вы предложили – lkessler