![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
KOL - 2.10 - KeyPreview [FPC, Windows]
raskin © (2005-08-10 21:30:00)В Kol 2.10 мне не удалось по умолчанию настроить KeyPreview в PAS_VERSION (FPC, KOL для Delphi, Win98). Предлагаю следующее изменение: в TControl.WndProc, проверку FHandle=GetFocus() не производить, если сообщение WM_KEYDOWN (эта проверка введена для WM_KEYUP, судя по комментариям). Возможно, как я пока сделал, для надёжности добавить переменную типа longint с именем KeyPreviewCounter и перед передачей с 3960? й строки ParentForm.Perform, увеличивать KeyPreviewCounter, а при обработке TControl.WndProc в случае FHandle<>GetFocus() уменьшать KeyPreviewCounter (если он положителен) и поступать по-старому (прекращать обработку), если он 0
raskin (2005-08-11 13:08:00) [1]Really I've no problem with Redundant WM_KEUP's, but the problem was with the KeyPreviewing. I've found the solution that "works for me", but found it useful to share found information - I hope it'llbe useful for everyone to know about the problem (and the way to solve it).
thaddy (2005-08-10 23:13:00) [2]You can simply handle WM_KEYUP in a global OnMessage handler.
If you set result:=true, the key is silenty removed:
Like:
function TForm1.DoMessage(var Msg:TMsg;var Rslt:integer):Boolean;
begin
Result:=false;
// ignore escape
if (msg.message = WM_KEYUP) and (msg.wparam = VK_ESCAPE) then result:=true;
end;