Форум: "Начинающим";
Текущий архив: 2008.05.04;
Скачать: [xml.tar.bz2];
ВнизЧем можно скрыть окно ToolTip? Найти похожие ветки
← →
Семен Кевларвестов (2008-04-08 14:18) [0]Доброго дня!
Есть всплывающее окошко. Отображающееся в событии TPopUpMenu.onPopUp , которое желательно бы скрывать после того как оно отобразилось, скажем при любой активности мыши (движение, нажатие кнопок). Чем это можно сделать в глобальном масштабе? (Конечно, можно на все компоненты в события onMouseMove раскидать команду на скрытие, но это не интересно.). Может есть какое то сообщение, коее можно отлавливать в форме или еще что-то в таком духе?
← →
clickmaker © (2008-04-08 15:50) [1]
> Есть всплывающее окошко
какого класса?
← →
Семен Кевларвестов (2008-04-08 16:19) [2]В конечном счете создается CreateWindow(
TOOLTIPS_CLASS,
"",
WS_POPUP or TTS_NOPREFIX or TTS_BALLOON or TTS_ALWAYSTIP,
Integer(CW_USEDEFAULT),
Integer(CW_USEDEFAULT),
Integer(CW_USEDEFAULT),
Integer(CW_USEDEFAULT),
0,
0,
HInstance,
nil);
← →
Kolan © (2008-04-08 16:31) [3]> Чем можно скрыть окно ToolTip
> Отображающееся в событии TPopUpMenu.onPopUp
Я думал что при onPopUp отображается само меню.
← →
Семен Кевларвестов (2008-04-08 16:39) [4]Ну да, там определяется окончательный вид popup, что скрыто, что открыто, и относительно какого пункта меню отображается этот туллтип.
← →
Семеныч (2008-04-08 16:42) [5]> Сабж
Можно попробовать Application.OnMessage, но не уверен. Из вопроса неясно, отображается ли TollTip, когда меню уже показано. Если да, то в это время сообщения мыши, насколько помню, получает само меню и Application.OnMessage может не сработать.
Но почему бы не показывать ToolTip в другом событии (например, в OnMouseUp правой кнопки), а в OnPopup, наоборот, скрывать?
> Kolan © (08.04.08 16:31) [3]
В обработчике OnPopup можно отбразить даже розового слона, было бы желание. В данном случае отображается ToolTip, что тоже не запрещено.
← →
Семен Кевларвестов (2008-04-09 01:34) [6]Тултип нужно отображать вместе с Попапменю. Т.к. в сообщени и тул типа дается объяснение почему те или иные команды недоступны. А при любом действии мыши желательно этот тултип скрыть. В самом TPopupMenu обработчиков для событий не нашел, в каждый пункт меню вставлять - относительно долго, да и негибко.
Поэтому и интересует может есть какая-то другая возможность как-то эти события отработать? На уровне формы или самого Тултипа. Может там как-то с флагами нужно поиграться при создании?
Устроила бы вомзмжность отработать событие OnMouseMove формы, при включенном PopUpMenu.
← →
Семеныч (2008-04-09 02:51) [7]Проверил - да, как и предполагалось, при показанном меню Application.OnMessage на мышь не реагирует. Значит, остается локальный хук.
var
Hook: HHOOK;
Count: integer; // Счетчик сообщений мыши
function MouseHook(Code, WParam, LParam: integer): integer; stdcall;
begin
Inc(Count);
Form1.Caption := IntToStr(Count);
Result := CallNextHookEx(Hook, Code, WParam, LParam);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Hook := SetWindowsHookEx(WH_MOUSE, MouseHook, 0, GetCurrentThreadId);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
UnhookWindowsHookEx(Hook);
end;
Как и ожидалсь, счетчик сообщений мыши увеличивается даже при показанном PopupMenu. Что и требовалось отловить.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.05.04;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c