Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Edit программный и клавиатурный в вод текста, Как их различать? 
V
    Опции темы
ivan219
  Дата 17.3.2007, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 2
Всего: 12



В Edit текст можно в водить при помощи клавиатуры, через буфер обмена, и программно Edit.Text:='d';

Вопрос: как определить каким из способов в водится текст в Edit???
PM MAIL ICQ   Вверх
skyboy
Дата 17.3.2007, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 4
Всего: 260



Цитата(ivan219 @  17.3.2007,  14:49 Найти цитируемый пост)
через буфер обмена

насколько мне известно, в этом случае не генерятся сообщения WM_KEYUP, WM_KEYDOWN потому события TEDit onkeypress, onkeydown, onkeyup для каждого символа не генерируется. только для самой комбинации CTRL+V/Shift+Insert, если вставка из буфера была вызвана при помощи клавиатуры
если тебе надо различать - забабахай свой класс-компонент, у которого реакция на буфер обмена(сообщение WM_PASTE), изменения свойства text(на уровне процедуры-setter'a) и "ручной набор"(сообщение WM_KEYDOWN/WM_KEYUP) будут вызывать разные события.

Добавлено @ 16:01 
а зачем это всё?
PM MAIL   Вверх
Alexeis
Дата 17.3.2007, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



ivan219, сделать перехват сообщений окна. WM_PASTE, WM_KEYUP, WM_SETTEXT, WM_SYSKEYUP, WM_SYSKEYDOWN, WM_SYSCOMMAND... вообще всяких методов много. 
  Или нужно определять только для себя, т.е. для тех методов, которыми сам пользуешся?


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
ivan219
Дата 17.3.2007, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 2
Всего: 12



Суть в том что в вод текста с клаввиатуры и через буфер должны обрабатыватся в отдельной процедуре а потом  выводится в Edit, программный т.е. Edit.Text:=''; не должен обрабатыватся этой процедурой.
Alexeis, можеш расписать эти сообщения WM_PASTE, WM_SETTEXT, WM_SYSKEYUP, WM_SYSKEYDOWN, WM_SYSCOMMAND
PM MAIL ICQ   Вверх
Alexeis
Дата 17.3.2007, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 109
Всего: 459



WM_PASTE - событие вставки из буфера обмена

WM_SETTEXT - установка стандартного текста окну. (вроде это событие возникает при присваивании)

WM_SYSKEYUP, WM_SYSKEYDOWN
Цитата

The WM_SYSKEYUP message is posted to the window with the keyboard focus when the user releases a key that was pressed while the ALT key was held down.


WM_SYSCOMMAND - вообще передает кучу служебных событий, оно полезно для перехвата управляющих сообщений. Вот полный список того что оно делает
Код

Specifies the type of system command requested. This parameter can be one of the following values. 
SC_CLOSE
Closes the window.
SC_CONTEXTHELP
Changes the cursor to a question mark with a pointer. If the user then clicks a control in the dialog box, the control receives a WM_HELP message.
SC_DEFAULT
Selects the default item; the user double-clicked the window menu.
SC_HOTKEY
Activates the window associated with the application-specified hot key. The lParam parameter identifies the window to activate.
SC_HSCROLL
Scrolls horizontally.
SC_KEYMENU
Retrieves the window menu as a result of a keystroke. For more information, see the Remarks section.
SC_MAXIMIZE
Maximizes the window.
SC_MINIMIZE
Minimizes the window.
SC_MONITORPOWER
Sets the state of the display. This command supports devices that have power-saving features, such as a battery-powered personal computer. 
The lParam parameter can have the following values:

1 - the display is going to low power

2 - the display is being shut off

SC_MOUSEMENU
Retrieves the window menu as a result of a mouse click.
SC_MOVE
Moves the window.
SC_NEXTWINDOW
Moves to the next window.
SC_PREVWINDOW
Moves to the previous window.
SC_RESTORE
Restores the window to its normal position and size.
SC_SCREENSAVE
Executes the screen saver application specified in the [boot] section of the System.ini file.
SC_SIZE
Sizes the window.
SC_TASKLIST
Activates the Start menu.
SC_VSCROLL
Scrolls vertically



--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
ivan219
Дата 17.3.2007, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 2
Всего: 12



Alexeis, спасибо.
PM MAIL ICQ   Вверх
ivan219
Дата 17.3.2007, 17:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1121
Регистрация: 19.11.2005
Где: Планета земля

Репутация: 2
Всего: 12



Всё вопрос решон smile 
Код

procedure TMyLabeledEdit.WndProc(var Message: TMessage);
begin
 case Message.Msg of
      WM_PASTE,WM_KEYDOWN: if RealStr then FRealStr:=True;
      WM_SETTEXT: FRealStr:=False;
 end;
 inherited;
end;

PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0574 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.