Форум: "Основная";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
ВнизОтлов щелчка мыши Найти похожие ветки
← →
X-Disa (2005-03-07 06:49) [0]Здравствуйте. Столкнулся с проблемой.
Есть некое окно, оно должно вести себя как меню. То есть если юзер кликнул мышью вне этого окна (даже вне проги), окон должно убираться. Собственно вопрос: Как отследить, что юзер кликнул мышью?
← →
QuasiLamo © (2005-03-07 07:00) [1]Как закрыть всплывающее меню в System Tray когда оно теряет фокус
--------------------------------------------------------------------------------
Иногда, при потере фокуса, всплывающее меню в System Tray при потере фокуса не закрывается. Поэтому, при обработке сообщений для всплывающего меню необходимо поместить окно на передний план и послать ему сообщение WM_NULL.
procedure TForm1.WndProc(var Msg: TMessage);
var
p: TPoint;
begin
case Msg.Msg of
WM_USER + 1:
case Msg.lParam of
WM_RBUTTONDOWN:
begin
SetForegroundWindow(Handle);
GetCursorPos(p);
PopupMenu1.Popup(p.x, p.y);
PostMessage(Handle, WM_NULL, 0, 0);
end;
end;
end;
inherited;
end;
← →
X-Disa (2005-03-07 07:16) [2]Что-то не выходит. Пишу так:
...
protected
procedure WndProc(var Msg: TMessage); message WM_USER+1;
...
procedure TFMForm.WndProc(var Msg: TMessage);
var
p: TPoint;
begin
case Msg.Msg of
WM_USER + 1:
case Msg.lParam of
WM_LBUTTONDOWN:
begin
SetForegroundWindow(Handle);
GetCursorPos(p);
Hide;
PostMessage(Handle, WM_NULL, 0, 0);
end;
end;
end;
inherited;
end;
← →
Fedia © (2005-03-07 07:20) [3]>То есть если юзер кликнул мышью вне этого окна (даже вне проги), >окон должно убираться
В объявлении класса формы добавь:
private
procedure OnActivate(var msg: TWMActivate); message WM_ACTIVATE;
Сама процедура:
procedure TForm2.OnActivate(var msg: TWMActivate);
begin
inherited;
if msg.Active=WA_INACTIVE then close;
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.199 c