Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.05.06;
Скачать: CL | DM;

Вниз

Как отловить потерю фокуса у формы   Найти похожие ветки 

 
[e]Bu$ter ©   (2006-09-12 13:58) [0]

Господа, подскажите пожалуйста, как отловить и обработать сообщение о потере фокуса у формы.

Форма без заголовка и пользователь иногда не видит, что у неё забрали фокус, и продолжает жать клавиши попутно обхаивая программу за то, что она его не слушается :(

Вопрос скорее всего детский, просто в VCL у меня всё работало... а когда помню с KOL пробовал, так челый час возился, но ничего в итогде и не получилось. Сейчас проблема снова всплыла, нужно побороть.


 
parovoZZ ©   (2006-09-12 22:12) [1]

Мессага такая есть wm_Activate
Есть ещё функция  GetActiveWindow
Как средствами KOL - не знаю.


 
MTsv DN ©   (2006-09-13 09:11) [2]

2 [e]Bu$ter
> Господа, подскажите пожалуйста, как отловить и обработать
> сообщение о потере фокуса у формы.


function TForm1.KOLForm1Message(var Msg: tagMSG;
 var Rslt: Integer): Boolean;
begin
Result := false;
if Msg.message = WM_KILLFOCUS then
 if GetActiveWindow <> Form.Handle then
  beep(400,100);
end;


2 parovoZZ
> Как средствами KOL - не знаю.
Пардон, а какими знаешь???

С Уважением MTsv DN


 
[e]Bu$ter ©   (2006-09-13 12:24) [3]

Круто, половина задачи решена! Большое спасибо, MTsv DN.

Однако, вторая половина: как вернуть фокус окну?

Перепробывал:

form.BringToFront;
SetFocus(form.Handle);
BringWindowToTop(form.Handle);
SetActiveWindow(form.Handle);

и даже
SetForegroundWindow(form.Handle);
но увы, фокус не возврашается :(
Т.е. я ткну мимо окна мышью, оно пищит, но фокус обратно себе не берёт. Может есть ещё какие-то способы кроме опробованных выше?
Но мне кажется, что хоть один из них да должен был сработать, но почему-то не работает... Может кто-то знает почему? (напомню, окно без заголовка, если это существенно)



Страницы: 1 вся ветка

Текущий архив: 2007.05.06;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.017 c
2-1176831228
Riply
2007-04-17 21:33
2007.05.06
CreateNamedPipe. Использование OutBufferSize и InBufferSize.


15-1175983275
Иксик
2007-04-08 02:01
2007.05.06
"До чего дошел прогресс" (с)


2-1176931164
ppcumax
2007-04-19 01:19
2007.05.06
Помогите разобраться с чекбоксом


15-1175965637
GeLLeR
2007-04-07 21:07
2007.05.06
Вопрос про Висту


15-1176037330
Strate
2007-04-08 17:02
2007.05.06
Отладка с параметрами