![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Пишу наследника TMemo... [D6, Win95/98, Win2k]
Dimedrol © (2002-05-31 17:12:00)Коллеги, вот такая грабля...
Делаю сабж и перекрываю у него
обработчики
private
{ Private declarations }
FOnCTRL : TCTRLEvent;
procedure WMKeyUp(var Message: TWMKeyUp); message WM_KeyUp;
procedure WMKeyDown(var Message: TWMKeyDown); message WM_KeyDown;
// procedure WMChar(var Message: TWMChar); message WM_CHAR;
protected
Мне нужно отловить нажатие одного CTRL
так вот же, у Мемо, как известно есть свои события
OnKeyUp, OnKeyDownи т.п.
Моя процедура выглядит так
procedure TPetitMemo.WMKeyUp(var Message: TWMKeyUp);
begin
with TMessage(Message) do
begin
if (WPARAM=17) and (not IsBitSet(KBD_STAT, 1)) then
begin
if Assigned(OnCTRL) then
OnCTRL(Self); // Calling Event !
KBD_STAT:=0; //CTRL is released - reset all values
end;
if (WPARAM<>17) and (not IsBitSet(KBD_STAT, 0)) then BitOff(KBD_STAT, 1);
if WPARAM=17 then KBD_STAT:=0; //CTRL is released - reset all values
end;
Inherited DefaultHandler(Message);
end;
Вроде и Inherited делаю, а в результате события от TMemo OnKeyUp, OnKeyDown
пропадают. То есть они НЕ НАСТУПАЮТ в программе... ;-(
Где я накозлил ?
И еще вот, вдогонку -
А как перехватить ALT ?
Что-то не могу никак....
Dimedrol (2002-06-03 17:34:00) [1]Спасибо, Виктор, помогло !
vlv (2002-06-03 12:06:00) [2]Для таких вещей лучше переопределять обработчик CN_KEYDOWN:
procedure CNKeyDown(var Message: TWMKeyDown); message CN_KEYDOWN;
Виктор (2002-06-03 11:57:00) [3]попробуй заменить
Inherited DefaultHandler(Message);
на
Inherited;
Dimedrol (2002-06-03 10:54:00) [4]Что... никто не знает ;-(