Главная страница
    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.031 c
1-1089147829
AndrewVolkov
2004-07-07 01:03
2004.07.25
:=nil; Free; Destroy


14-1089056907
Marser
2004-07-05 23:48
2004.07.25
Календарь на отбор ЧМ-2006


14-1088775853
Шоломицкий
2004-07-02 17:44
2004.07.25
Хочу просто совет...


1-1089550907
buk
2004-07-11 17:01
2004.07.25
Все формы разом


3-1088753741
white
2004-07-02 11:35
2004.07.25
Подскажите какой компонент поможет в решении следующей задачи.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский