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

Вниз

Чем можно скрыть окно 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.013 c
2-1207687754
Riply
2008-04-09 00:49
2008.05.04
Выбор типа структуры для хранения данных и работы с ними.


3-1196665593
Alice
2007-12-03 10:06
2008.05.04
распарсить в БД


2-1207383847
andreil
2008-04-05 12:24
2008.05.04
Преобразовать массив пикселей в BitMap?


2-1207582041
Artin
2008-04-07 19:27
2008.05.04
Несколько раюочих столов в Windowse. Как в Линуксе.


15-1206081361
Simpson
2008-03-21 09:36
2008.05.04
Cygwin