spiller |
Отправлено: 20.10.2006, 22:16 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 27
|
Доброго времени суток!
Есть такой вопрос:
При наступлении некоторых событий я для какому -либо компонента делаю подсказку:
CODE |
Сomponent->ShowHint = true;
Сomponent->Hint = "Hello, world!";
|
Всё отлично работает, все довольны. Но когда перевожу курсор мыши за границы данного компонента, то Hint не изменяется. Требуется его очистить.
Как быть?
Спасибо за внимание.
|
|
Admin |
Отправлено: 21.10.2006, 09:11 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
Сomponent->Hint = ""; или Сomponent->ShowHint = false; ?
|
|
spiller |
Отправлено: 21.10.2006, 19:58 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 27
|
это да, вот только где этот код писать?
|
|
Rius |
Отправлено: 21.10.2006, 21:41 |
|
Мастер участка
Группа: Участник
Сообщений: 321
|
hint должен просто пропасть с экрана при выходе за границы компонента.
если он показывается, то надо указать текст hint у того компонента, на который перешел курсор.
|
|
spiller |
Отправлено: 22.10.2006, 13:07 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 27
|
QUOTE (Rius @ 21.10.2006, 22:41) | hint должен просто пропасть с экрана при выходе за границы компонента.
если он показывается, то надо указать текст hint у того компонента, на который перешел курсор. |
Я тоже так думал , на самом деле — нет.
|
|
Konstantine |
Отправлено: 23.10.2006, 09:19 |
|
Мастер участка
Группа: Модератор
Сообщений: 545
|
а использвать события — что-то типо OnMouseOver
|
|
olegenty |
Отправлено: 23.10.2006, 09:49 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
обработай CM_MOUSELEAVE для компонента, событие наступает, когда мышь покидает контрол, а генерируется оно экземпляром TApplication
|
|
Admin |
Отправлено: 23.10.2006, 11:21 |
|
Владимир
Группа: Администратор
Сообщений: 1190
|
QUOTE | Я тоже так думал , на самом деле — нет.
|
Может ParentShowHint = true мешает убраться Hint
или время показа для Hint выставлено большое
|
|
spiller |
Отправлено: 23.10.2006, 21:22 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 27
|
QUOTE (olegenty @ 23.10.2006, 10:49) | обработай CM_MOUSELEAVE для компонента, событие наступает, когда мышь покидает контрол, а генерируется оно экземпляром TApplication |
Я никогда этого раньше не делал, ессесно не получилось:
QUOTE |
class TMainForm : public TForm
{
....
private: // User declarations
void __fastcall OnLeaveMouse(TCMMouseleave& a);
public: // User declarations
....
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(CM_MOUSELEAVE,TCMMouseleave,OnLeaveMouse)
END_MESSAGE_MAP(TComponent)
.....
};
|
код обработчика:
CODE |
void __fastcall TMainForm::OnLeaveMouse(TCMMouseleave& a)
{
ShowMessage("bye!");
a.Result = 0;
}
|
Дебаггер падает на строчке
void __fastcall OnLeaveMouse(TCMMouseleave& a);
с сообщением:
[C++ Error] interface.h(140): E2293 ) expected
Что не так? |
|
olegenty |
Отправлено: 24.10.2006, 06:56 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
CODE |
protected:
void __fastcall OnMouseLeave(TMessage &Message)
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(CM_MOUSELEAVE, TMessage, OnLeaveMouse)
END_MESSAGE_MAP(TForm)
|
далее как было
|
|
spiller |
Отправлено: 01.11.2006, 10:49 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 27
|
Нет, а если мне нужно сделать это не для всей формы, а для определенного компонента , куда это код писать? |
|
olegenty |
Отправлено: 01.11.2006, 14:05 |
|
Ветеран
Группа: Модератор
Сообщений: 2412
|
писать для формы. анализировать handle, искать по нему контрол, далее — всё что хочешь.
либо писать для контрола, тогда всё проще. но контрол надо субклассировать, либо подменить его WndProc
|
|
spiller |
Отправлено: 01.11.2006, 15:04 |
|
Ученик-кочегар
Группа: Участник
Сообщений: 27
|
QUOTE (olegenty @ 01.11.2006, 15:05) | писать для формы. анализировать handle, искать по нему контрол, далее — всё что хочешь.
либо писать для контрола, тогда всё проще. но контрол надо субклассировать, либо подменить его WndProc |
по-подробней, если можно, плиз |
|