Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];

Вниз

перехват скролинга компонента   Найти похожие ветки 

 
lena19   (2004-06-01 21:08) [0]

всем привет
народ подскажите как перехватить скролинг например у компонента
мемо


 
stany ©   (2004-06-02 09:18) [1]

обработать WM_HSCROLL and WM_VSCROLL


 
lena19   (2004-06-06 01:43) [2]

не могу поставить локальную ловушку
на скрол в мемо,
народ что я не так делаю ?????

procedure TForm1.Button1Click(Sender: TObject);
begin
CurrentHook:= setwindowshookex(Wm_Vscroll,@VscrollHook,0,memo1.Handle);
if currenthook = 0 then
beep;
end;
-------------------------------------------------------
function VscrollHook(nScrollCode:word; nPos:word; hwndScrollBar:longword): longword; stdcall;
begin
beep;
.....
end;


 
akvilon   (2004-06-06 18:59) [3]

Если Memo принадлежит Вашему приложению, то лучше сабклассируйте окно Memo. Т.е. переопределите WindowProc у этого мемо на свою процедуру (она станет процедурой окна мемо), после обработки в ней сообщений WM_HSCROLL и WM_VSCROLL вызывайте родную процедуру
Memo.WndProc(msg: TMEssage).


 
lena19   (2004-06-06 23:46) [4]

TO akvilon
а можно чуть по подробнее (а то я не особо суть уловила)


 
akvilon ©   (2004-06-07 01:07) [5]

Вы, как я понял, хотите поставить локальную ловушку. Так вот в функцию ловушки передается структура (или запись) TMessage, которую обрабатываете и передаете дальше...
У каждого окна есть процедура обработки сообщений. Делфи (в VCL) переопределяет на свою, а потом вызывает стандартную (системную).
Ее можно переопределить на свою так
Memo.WindowProc := SubClassProc;

эта процедура также получает msg: TMessage

procedure TForm1.SubClassProc(var msg);
begin
 case msg.message of
 WM_HSCROLL: //
 WM_HSCROLL: //
 end;
 Memo.WndProc(msg);
end;

procedure TForm1.Button1Click(...);
begin
 Memo.WindowProc := SubClassProc;
end;

не проверял, но смысл передал :). Переопределение оконной процедуры удобнее ловушек, но работает только в пределах одного приложения, в отличии от ловушек.

То есть, этим кодом вы просто ставите свою процедуру обработки раньше всех других, а потом передаете всем другим :) та же ловушка


 
lena19   (2004-06-07 20:31) [6]

в приведенном мной примере просто не вошла строка с кодом
передачи сообщения по цепочке ловушек на самом деле она есть


 
akvilon ©   (2004-06-07 23:08) [7]

>>> CurrentHook:= setwindowshookex(Wm_Vscroll,@VscrollHook,0,memo1.Handle);

первым параметром этой функции должен быть параметр idHook: т.е. одна из констант WH_ , а вы ставите идентификатор сообщения, здесь и не так


 
akvilon ©   (2004-06-07 23:10) [8]

ИМХО: лучше сабклассинг


 
wicked ©   (2004-06-08 11:29) [9]

а еще лучше, чем перекрытие WndProc, является свойство WindowProc - тогда и наследовать ничего не надо...
учите матчасть - это съэкономит вам и силы, и нервы, и хитрее будете... ;)


 
lena19   (2004-06-08 18:38) [10]

на WindowProc все получилось .
всем спасибо .



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.053 c
14-1089192896
Vlad Oshin
2004-07-07 13:34
2004.07.25
Чем прочитать файл? Прислали акт, непойму в чем смотреть.


1-1089273016
Ш-К
2004-07-08 11:50
2004.07.25
Последовательность загрузки published свойств


6-1085829471
palych
2004-05-29 15:17
2004.07.25
telnet


1-1089447662
ormada
2004-07-10 12:21
2004.07.25
My Type


9-1081874130
Miroslav
2004-04-13 20:35
2004.07.25
формат *.gfx





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский