![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| ilyalyu |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 25.10.2006 Репутация: нет Всего: нет |
Итак, на первый взгляд простая задача: в главном меню на кнопке "Paste" ("Вставить") необходимо указать отвечающую данной операции горячую клавишу, т.е. Ctrl-V.
Казалось бы, все просто - достаточно указать горячую клавишу в свойстве ShortCut и написать обработчик события OnClick, который будет выполнять необходимую операцию (вставлять текст из Clipboard в TMemo компоненту). Я так и сделал, и столкнулся с такой проблемой... Оказалось, что я не могу вставить текст в Find диалог с помощью горячей клавиши Ctrl-V. Вместо этого, приложение вызывает обработчик события OnClick, который вставляет текст в TMemo компоненту. Ни одного простого способа обойти эту проблему я так и не нашел. Например: 1. Найти компоненту, заменяющую Find диалог - не удалось, кроме того, такая компонента наверняка будет отличаться по стилю от других диалогов. 2. Написать собственную компоненту - сложно (хотя, похоже, в больших приложениях именно так и делают). 3. Вместо того чтобы использовать свойство ShortCut, рисовать меню, используя событие OnDrawItem - тоже очень сложно, кроме того, где гарантия, что такое меню не будет отличаться по стилю от остальных компонент. 4. Вставлять текст из Clipboard в Find диалог внутри обработчика события OnClick с помощью Windows message WM_Paste - не получилось (в TEdit текст вставляется, а в TFindDialog - нет). Может, я упускаю из вида какое-то простое решение? Ведь, задача, которую я описал, не относится к разряду экзотических. |
|||
|
||||
| Seraphim |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 5 Регистрация: 25.10.2006 Репутация: нет Всего: нет |
А может лучше так, не проверенно конечно
Вообщем, на твой TEdit поставить событие по нажатию клавишь Ctrl+v и если этот TEdit.Focused:=True; Постлать твою комманду вставки кода. Попробуй так ;) |
|||
|
||||
| ilyalyu |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 25.10.2006 Репутация: нет Всего: нет |
Тут вопрос не в том, как вставить текст в TMemo по нажатию Ctrl+V - он туда и так автоматически вставляется. Проблема в том, как простым способом поместить текст Ctrl+V на кнопку меню, и чтоб при этом Find диалог продолжал работать как надо.
|
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
ilyalyu
А разве так не проще?
P. S. Ну по крайней мере пользоваться где нужно 3 и 8 строкой. |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 36 Всего: 329 |
что за Find диалог, откуда он, это твой Find диалог??? возможно, что в событии onKeyDown можно перехватить Ctrl-V. Добавлено @ 12:12 я так понимаю, что это компонента TFindDialog? Тогда можно создать свою орму поиска. |
|||
|
||||
| ilyalyu |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 25.10.2006 Репутация: нет Всего: нет |
Yanis,
Спасибо за совет. Правда пришлось еще деактивировать форму, чтобы пользователь не мог смотреть меню в то время, когда показывается диалог:
|
|||
|
||||
| Yanis |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2937 Регистрация: 9.2.2004 Где: Москва Репутация: 72 Всего: 111 |
ilyalyu
Пожалуйста, но помоему с блокирование формы ты перегнул |
|||
|
||||
| ilyalyu |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 135 Регистрация: 25.10.2006 Репутация: нет Всего: нет |
Действительно, можно проверять свойство active. Не могу понять, почему сразу так не сделал. Наверное - заскок... Еще раз спасибо.
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |