C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Hint, подсказка к компонентам
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

по-подробней, если можно, плиз

Вернуться в Вопросы программирования в C++Builder