| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Активность главного окна |
| Автор: Maycal 12.1.2008, 14:32 |
| Доброе время суток. Скажите пожалуйста, как сделать так, чтобы метод выполнялся только в том случае, если форма активна? |
| Автор: Lazin 12.1.2008, 14:51 | ||
| Наверное определив активна-ли форма или нет.. TForm::Active Добавлено через 38 секунд
|
| Автор: Maycal 12.1.2008, 15:06 | ||
Спасибо. Это я собственно к чему спросил: есть метод, который перехватывает нажатие кнопок control+v. Метод описан в ApplicationEvents1Message:
но дело в том, что сочитание этих клавиш, кроме как в моей программе - нигде не работает. То есть невозможно что-либо скопировать используя сочитание ctrl + v. Я думал что выйду из этого положения следующим образом: если форма активна, то нажатие кнопок регестрируется, если не активна - метод игнорируется. Но так не получается. Единственное что, просто сообщение ShowMessage ("Кнопка перехвачена"); не появляется, а кнопки по прежнему не хотят работать в других приложениях. Что можно сделать? |
| Автор: Maycal 12.1.2008, 21:57 |
| Как сделать локальный перехват нажатия клавишь? |
| Автор: artsb 12.1.2008, 22:15 |
| Что подразумевается под "локальный"? |
| Автор: Maycal 12.1.2008, 22:29 |
| Чтобы клавиши перехватывались только в моей программе, а не вовсей винде |
| Автор: artsb 12.1.2008, 22:36 |
| Они и так будут перехватываться только в твоей программе. |
| Автор: Maycal 13.1.2008, 00:01 |
| нет, в том то и дело, что сочитание клавишь ctrl+V не работают в винде. Не в форуме, не в чате, не в ворде, неработает из-за этой функции. Появляется сообщение ShowMessage ("Кнопка перехвачена"); А должно быть только в программе, тоесть не влиляло на работу винды |
| Автор: artsb 13.1.2008, 00:53 | ||
Обрабатывайте всё здесь:
и проблем быть не должно. ЗЫ не забудте только поставить KeyPreview в true. |
| Автор: Maycal 13.1.2008, 00:59 |
| Ябы с удовольствием, но не знаю кода кнопочки control... Добавлено через 1 минуту и 37 секунд смотрел в таблицах, сказано что код кнопки 17, но он не работает Добавлено через 1 минуту и 58 секунд KeyPreview в true |
| Автор: artsb 13.1.2008, 08:56 | ||
Тогда так:
Кстати, сработало без KeyPreview=true. |
| Автор: Maycal 13.1.2008, 13:01 |
| Спасибо большое! У меня такая проблема: когда нажимаешь сочитание клавишь (Ctrl+ X) то в Edit1 появляются непонятные символы. Как этого избежать? |
| Автор: artsb 13.1.2008, 14:43 |
| А что вы делаете этим сочетанием клавиш? Работаете с буфером? Как? Покажите код. |
| Автор: Maycal 13.1.2008, 15:04 | ||
P.S здесь еще разные системы предотвращения вставки алфавитного символа, вставки данных кроме текста, ограничение по длине числа и т.д |
| Автор: artsb 13.1.2008, 15:49 |
| Всё что вы вставляете закорючки или только некоторые символы? Как вы копируете в буфер? |
| Автор: Maycal 13.1.2008, 19:08 | ||||
| В поле Edit1 разрешается копировать только числа. Метод который копирует в буфер обмена:
Метод который вызывает из буфера обмена:
Как мне сделать чтобы при нажатие сочитания клавишь ctrl+v непонятных знаков в Edit1 не появлялось? |
| Автор: artsb 13.1.2008, 19:49 | ||||
| Многие компоненты поддерживают работу с буфером. Если вы копируете из какого-то компонента (например, Edit'а), то лучше так:
И вставляете из буфера также:
|
| Автор: Maycal 14.1.2008, 15:53 |
| Появление непонятных символов, является побочным эффектом метода ограничения ввода в Edit1. Для ограничения реализуется метод Edit1KeyPress/ Например, при сочетание клавишь Ctrl+v появляется . Скажите, как можно так сделать, чтобы после появляея числа в Edit1 этот символ удалялся? Или как-то по другому можно это решить? |
| Автор: artsb 14.1.2008, 18:03 |
Да не может такого быть... Показывайте OnKeyPrees. Кстати, OnKeyDown решили не пользоваться? |
| Автор: Maycal 15.1.2008, 01:01 |
| Всем огромное спасибо за участие в темах! Я решил проблему перекочевав метод из FormKeyPress в метод FormKeyDown и немного изменив его. |