Главная страница
    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-1089388869
Paladin
2004-07-09 20:01
2004.07.25
Аналог функции Add Folder из WinAmp a


4-1082826122
OSokin
2004-04-24 21:02
2004.07.25
JournalRecord


1-1089697212
Константин2000
2004-07-13 09:40
2004.07.25
USB принтер программируем


9-1081803894
Werwolf
2004-04-13 01:04
2004.07.25
Люди кто знает .................


3-1088509262
sergg
2004-06-29 15:41
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский