Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

OnCLICK

748
13 февраля 2005 года
AlphaOmega
159 / / 28.09.2004
Привет.

Вообщем такая проблема:
Есть компонент визуальный, но у него нету встроенного обработчика события OnClick.
Как добавить компоненту (не вмешиваясь в его код, а лишь прописав в своей программе код) обработку события OnClick?
368
13 февраля 2005 года
rostyslav
629 / / 13.07.2004
1. В OnCreate событии написать Application->OnMessage = AppMessage;

2. В OnClose: Application->OnMessage = NULL;

3. Определить ф-ю AppMessage
Код:
void __fastcall TForm1::AppMessage(tagMSG &Msg, bool &Handled)
{
  if (Msg.message == WM_LBUTTONUP)
  {
    TPoint p = ScreenToClient(Mouse->CursorPos);
    if((p.x<component.Right)&&(p.x>component.Left)&&(p.y<component.Bottom)&&(p.y>component.Top))
    {
      ...
      Handled = true;
    }
  }
}
748
13 февраля 2005 года
AlphaOmega
159 / / 28.09.2004
Почти...

Проблема в том, что этот компонент НЕ расположен на самой форме. Этот компонент - иконка в системном трее (tray icon). У этого компонента всё хорошо, кроме того, что у него отсутствуют какие-либо события. Вот и хочется этому компоненту (иконка в трее) добавить событие OnClick...
501
14 февраля 2005 года
hell_admin
110 / / 02.10.2004
Попробуй так
[code:]

TTrayICon
{
..
private:
TWndMethod OldWnd;
void __fastcall NewWnd(TMessage & Msg);
..
}

TTrayIcon::TTrayIcon()
{
...
OldWnd = this->WindowProc;
this->WindowProc = NewWnd;
...
}

TTrayIcon::NewWnd(TMessage & Msg)
{
swithc(Msg.Msg)
{
case WM_LBUTTONDOWN: // здесь делаешь чего надо
}
OldWnd(Msg);
}
Так не сработает ??
259
14 февраля 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by AlphaOmega
Почти...

Проблема в том, что этот компонент НЕ расположен на самой форме. Этот компонент - иконка в системном трее (tray icon). У этого компонента всё хорошо, кроме того, что у него отсутствуют какие-либо события. Вот и хочется этому компоненту (иконка в трее) добавить событие OnClick...


В Builder C++ v6.0 в Examples->Apps есть пример работы с systray. Посмотри там.

748
14 февраля 2005 года
AlphaOmega
159 / / 28.09.2004
Цитата:
Originally posted by hell_admin

Попробуй так
...
Так не сработает ??



А куда это надо впихнуть (в H или CPP и куда именно)?

p.s.: C++ Builder 5.0 компонент TSysTray.

259
14 февраля 2005 года
AlexandrVSmirno
1.4K / / 03.12.2004
Цитата:
Originally posted by AlphaOmega


А куда это надо впихнуть (в H или CPP и куда именно)?

p.s.: C++ Builder 5.0 компонент TSysTray.


Добавь обработчик события

 
Код:
class TmySysTray: public TSysTray
{
   public:
      void OnClick();
}
BEGIN_MESSAGE_MAP
MESSAGE_HANDLER(MYWM_NOTIFY,TMessage,OnClick)
END_MESSAGE_MAP(TmySysTray)

ЗЫ: И вот еще
TNotifyEvent is used for events that do not require parameters.

Unit

Classes

typedef void __fastcall (__closure *TNotifyEvent)(System::TObjectTObject* Sender);

Description

The TNotifyEvent type is the type for events that have no event-specific parameters. These events simply notify the component that a specific event occurred. For example, OnClick, which is of type TNotifyEvent, notifies the control that a click event occurred on the control.

The Sender parameter is the object whose event handler is called. For example,.with the OnClick event of a button, the Sender parameter is the button component that is clicked.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог