Форум: "KOL";
Текущий архив: 2007.05.06;
Скачать: [xml.tar.bz2];
ВнизКак отловить потерю фокуса у формы Найти похожие ветки
← →
[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 вся ветка
Форум: "KOL";
Текущий архив: 2007.05.06;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.042 c