![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Edit Control Messages [D6, Win2k]
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;
не отлавливает...