Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как обработать OnClick до того как он попадёт на, контрол 
:(
    Опции темы
SenkraD
Дата 5.6.2007, 15:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 9
Всего: 23



Сообственно, есть форма на ней кнопки и другие контролы. Можно ли как-то сделать так, чтобы при щелчке на кнопкк, к примеру, сработал сначала обработчик OnClick самой формы. Я пробовал и сообщения ловить и подменять оконную процедуру, но всё по нулям. Помогите, пожалуйста.


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
sp75
Дата 5.6.2007, 15:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 17.5.2007

Репутация: 1
Всего: 1



Цитата(SenkraD @ 5.6.2007,  15:05)
Сообственно, есть форма на ней кнопки и другие контролы. Можно ли как-то сделать так, чтобы при щелчке на кнопкк, к примеру, сработал сначала обработчик OnClick самой формы. Я пробовал и сообщения ловить и подменять оконную процедуру, но всё по нулям. Помогите, пожалуйста.

Если я привильно понял вопрос то так:
Код


void __fastcall TForm1::FormClick(TObject *Sender)
{
// .......
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    FormClick(this);
    //.......
}

PM MAIL   Вверх
SenkraD
Дата 5.6.2007, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 9
Всего: 23



sp75, так я тоже думал сделать, но а если мне не нужно обрабатывать это событие для какого-то конкретного контрола или у контрола нету такого события, но он своей поверхностью закрывает форму и, как результат, это событие не обрабатывается формой.


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
sp75
Дата 5.6.2007, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 17.5.2007

Репутация: 1
Всего: 1



Цитата(SenkraD @ 5.6.2007,  16:22)
sp75, так я тоже думал сделать, но а если мне не нужно обрабатывать это событие для какого-то конкретного контрола или у контрола нету такого события, но он своей поверхностью закрывает форму и, как результат, это событие не обрабатывается формой.

Нече не понимаю . Лутче вам описать что вы хотите сделать
PM MAIL   Вверх
SenkraD
Дата 5.6.2007, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 9
Всего: 23



Ситуация такова у меня на форме лежатконтролы у которых нет событий мишы, но мне надо что любой щелчёк в пределах формы был обработан.


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
Nil
Дата 5.6.2007, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 30
Регистрация: 15.4.2007

Репутация: нет
Всего: нет



Эммм...Может быть системный хук на мышь ?.. Но это уже похоже на слона из мухи, возможно есть решения проще...
PM MAIL WWW ICQ   Вверх
sp75
Дата 5.6.2007, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 17.5.2007

Репутация: 1
Всего: 1



Цитата(SenkraD @ 5.6.2007,  16:40)
Ситуация такова у меня на форме лежатконтролы у которых нет событий мишы, но мне надо что любой щелчёк в пределах формы был обработан.

Смотри  Application->OnIdle , думаю поможет, есть хелп в Билдере по OnIdle !
PM MAIL   Вверх
Vyacheslav
Дата 5.6.2007, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 47
Всего: 59



Смотрим 
Код

virtual void __fastcall WndProc(Messages::TMessage &Message);

и
Код

__property Classes::TWndMethod WindowProc = {read=FWindowProc, write=FWindowProc};



--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
SenkraD
Дата 5.6.2007, 17:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 9
Всего: 23



Vyacheslav,  это я в первую очередь пробовал:
Код

//h-файл
TWndMethod OldWndProc;
void __fastcall NewWndProc(TMessage &Msg);

//cpp-файл
// в контрукторе формы пишу так
OldWndProc = WindowProc;
WindowProc = NewWndProc;

// а вот сама обработка
void __fastcall TfrmWaitScreen::NewWndProc(TMessage &Msg)
{
    switch(Msg.Msg)
    {
        case WM_LBUTTONDOWN:
            Close();
            break;

        default:
            OldWndProc(Msg);
            break;
    }
}

но оно так не сработало

Щас проблему почти решил через Application->OnMessage, но тут заминка в том, что сообщение после обработки передаётся контролу на форме, которая лежит под этой формой, а мне это не нужно


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
Klin
Дата 5.6.2007, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1938
Регистрация: 7.10.2002
Где: Краснодар

Репутация: 20
Всего: 25



Че мудрите то smile
Код

 this->OnClick(Application); 


Или я че не понимаю...

А, необходимо для любого контрола smile Тогда примерно так:

Код

void __fastcall TForm1::MyEvent (tagMSG &Msg, bool &Handled) {
 if (Msg.message == WM_LBUTTONDOWN) this->OnClick(Application);
}; // реакция на событие нажатия

. . . . . . 

void __fastcall TForm1::FormCreate(TObject *Sender)
{
 Application->OnMessage = MyEvent;
}


Это сообщение отредактировал(а) Klin - 5.6.2007, 23:27


--------------------
Я человек - попробуйте обвинить меня за это.
PM MAIL   Вверх
SenkraD
Дата 6.6.2007, 09:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 933
Регистрация: 3.2.2006
Где: Украина::Киев

Репутация: 9
Всего: 23



Через Application->OnMessage я щас и делаю. Вот вставляю картинки WaitScreen.jpg и Main.jpg
Как видно на главной форме (Main.jpg) есть три кнопки и вот когда я делаю щелчёк на WaitScreen'е где под ней лежит кнопка, сразу возникает событие OnClick этой кнопки на главной форме. Как от этого избавится?

P.S. Извиняюсь за частичное нарушение правил - одна тема - один вопрос



Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  PrintScreens.rar 72,19 Kb


--------------------
 Имеющий язык - да не убоится спросить! 
user posted image
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0793 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.