| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Edit программный и клавиатурный в вод текста |
| Автор: ivan219 17.3.2007, 15:49 |
| В Edit текст можно в водить при помощи клавиатуры, через буфер обмена, и программно Edit.Text:='d'; Вопрос: как определить каким из способов в водится текст в Edit??? |
| Автор: skyboy 17.3.2007, 16:00 |
насколько мне известно, в этом случае не генерятся сообщения WM_KEYUP, WM_KEYDOWN потому события TEDit onkeypress, onkeydown, onkeyup для каждого символа не генерируется. только для самой комбинации CTRL+V/Shift+Insert, если вставка из буфера была вызвана при помощи клавиатуры если тебе надо различать - забабахай свой класс-компонент, у которого реакция на буфер обмена(сообщение WM_PASTE), изменения свойства text(на уровне процедуры-setter'a) и "ручной набор"(сообщение WM_KEYDOWN/WM_KEYUP) будут вызывать разные события. Добавлено @ 16:01 а зачем это всё? |
| Автор: Alexeis 17.3.2007, 16:03 |
| ivan219, сделать перехват сообщений окна. WM_PASTE, WM_KEYUP, WM_SETTEXT, WM_SYSKEYUP, WM_SYSKEYDOWN, WM_SYSCOMMAND... вообще всяких методов много. Или нужно определять только для себя, т.е. для тех методов, которыми сам пользуешся? |
| Автор: ivan219 17.3.2007, 16:31 |
| Суть в том что в вод текста с клаввиатуры и через буфер должны обрабатыватся в отдельной процедуре а потом выводится в Edit, программный т.е. Edit.Text:=''; не должен обрабатыватся этой процедурой. Alexeis, можеш расписать эти сообщения WM_PASTE, WM_SETTEXT, WM_SYSKEYUP, WM_SYSKEYDOWN, WM_SYSCOMMAND |
| Автор: Alexeis 17.3.2007, 16:44 | ||||
| WM_PASTE - событие вставки из буфера обмена WM_SETTEXT - установка стандартного текста окну. (вроде это событие возникает при присваивании) WM_SYSKEYUP, WM_SYSKEYDOWN
WM_SYSCOMMAND - вообще передает кучу служебных событий, оно полезно для перехвата управляющих сообщений. Вот полный список того что оно делает
|
| Автор: ivan219 17.3.2007, 16:51 |
| Alexeis, спасибо. |
| Автор: ivan219 17.3.2007, 17:30 | ||
Всё вопрос решон
|