Страница 1 из 1

Как отловить системное событие? [решено]

СообщениеДобавлено: 05.12.2013 13:01:03
t-ea
Как отловить системное событие типа wm_XXXX?

Следующий тестовый код у меня не работает, то есть при нажатии клавиш счётчик не увеличивается.
Код: Выделить всё
type
tmainfo = class(tmainform)
   dsp: tintegerdisp;
   procedure wmkeydown(var Msg: TMessage); message wm_KeyDown;
end;

procedure tmainfo.wmkeydown(var Msg: TMessage);
begin
dsp.Value:=dsp.Value + 1;
end;


Где/что/как исправить?

Re: Как отловить системное событие?

СообщениеДобавлено: 05.12.2013 16:32:42
debi12345
procedure wmkeydown(var Msg: TMessage); message wm_KeyDown;

А что - консольные проги умеют отлавливать GUI-события ? Возможно в Вашем (GUI) случае нужен перехватичик "tmseforn.OnKeyDown" (есть в инспекторе объектов).

Re: Как отловить системное событие?

СообщениеДобавлено: 05.12.2013 20:02:29
mse
There is tform.onsysevent and tform.onsyswindowevent, add mseguiintf to uses. Not recommended because it is platform dependent and can affect performance. Better to use tform.onkeydown as debi12345 writes.

Re: Как отловить системное событие?

СообщениеДобавлено: 05.12.2013 22:46:48
t-ea
WM_KEYDOWN просто для теста, чтобы посмотреть почему не работает тот код, который мне нужен.
В программе предполагаю использовать WM_DEVICECHANGE.

Re: Как отловить системное событие?

СообщениеДобавлено: 05.12.2013 23:16:25
mse
OK, please try "onsysevent".

Re: Как отловить системное событие? [решено]

СообщениеДобавлено: 22.01.2014 13:00:29
Jack02
create an integer field which holds the color index, possibly it is a fkCalculated or fkInternalCalc field.