Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Edit Control Messages [D6, Win2k]


Страницы:   1 2

Inquirer ©   (2003-02-10 14:17:00) 

Как в потомке TEditControl перехватывать события типа EM_...
(EM_SCROLLCARET, ...)?


Inquirer   (2003-02-11 10:46:00) [21]

Если выделять текст справа налево -> CaretPos = SelStart;
Если слева направо -> CaretPos = SelStart + SelLength;
как отследить какое выражение использовать? :-)


Anatoly Podgoretsky   (2003-02-11 10:35:00) [22]

Inquirer (10.02.03 18:43)
А зачем еще что то изобретать, SelStart штатное средство, в комбинации с SelLength


Sha   (2003-02-11 10:20:00) [23]

SelStart+SelLength :)


Inquirer   (2003-02-10 18:43:00) [24]

Кстати, а как определить текущую позицию курсора в TEdit кроме как c помощью SelStart?


Inquirer   (2003-02-10 17:12:00) [25]

... чтобы отобразить в статус-строке текущие координаты курсора в Edit"е...


Inquirer   (2003-02-10 17:08:00) [26]

Весь сыр-бор из-за того, что я хотел отловить момент перемещения курсора в Edit"е одним действием (вместо использования двух событий OnKeyDown и OnClick)...
Спасибо всем за соучастие :-)


Игорь Шевченко   (2003-02-10 16:44:00) [27]

An application sends an EM_SCROLLCARET message to scroll the caret into view in an edit control.

Понятно ? Это ты его должен посылать, а не он тебе.


Inquirer   (2003-02-10 16:36:00) [28]

ОК, я погорячился, через WndProc действительно все проходит (если послать message напрямую Edit.Perform(EM_SCROLLCARET,0,0), то перехат есть).
Перефразирую вопрос почему, когда я перемещаю курсор в Edit не передается EM_SCROLLCARET?


Игорь Шевченко   (2003-02-10 16:21:00) [29]

Через WndProc приходит все, что обрабатывает окно конкретного класса.


Inquirer   (2003-02-10 16:08:00) [30]

именно что для multiline edit control EM_SCROLL и не отлавливается (с WM_VSCROLL все нормально) ...


MBo   (2003-02-10 16:05:00) [31]

by single-lineedit controls


Inquirer   (2003-02-10 15:59:00) [32]

Почему WM_VSCROLL отлавливается, а EM_SCROLL нет?

EM_SCROLL - Scrolls the text vertically in a multiline edit control. This message is equivalent to sending a WM_VSCROLL message to the edit control. It is not processed by single-line edit controls.


gsu   (2003-02-10 15:51:00) [33]

а я думал, что WndProc обрабатывает все и вся по окну

typedef struct _WNDCLASSEX { // wc
UINT cbSize;
UINT style;
WNDPROC lpfnWndProc;
int cbClsExtra;
int cbWndExtra;
HANDLE hInstance;
HICON hIcon;
HCURSOR hCursor;
HBRUSH hbrBackground;
LPCTSTR lpszMenuName;
LPCTSTR lpszClassName;
HICON hIconSm;
} WNDCLASSEX;


Inquirer   (2003-02-10 15:38:00) [34]

Через WndProc проходят Window messages (типа WM_...), а Edit Control messages (EM_...) похоже туда и не забредают...


Игорь Шевченко   (2003-02-10 14:47:00) [35]

WndProc ?


Inquirer   (2003-02-10 14:20:00) [36]

Конструкция типа
procedure EMScrollcaret(var Message: TMessage); message EM_SCROLLCARET;
не отлавливает...


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо