Поиск:

Ответ в темуСоздание новой темы Создание опроса
> присваивание обработчиков сообщений ран тайм, как это сделать ? 
V
    Опции темы
Dubinsky
Дата 19.6.2006, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



вопрос простой , но ответ я на него не нашёл , есть динамически созданный компонент , у него есть допустим ОнКлик событие , как во время работы приложения присвоить ему событие ? я думал так :


void __fastcall MyClick(TObject *Sender)
{
  // my code ;
}
...
//где то в анналах кода :

  item = new TMenuItem(menu);
  item->Caption = "asd";
  item->OnClick = MyClick;

выдал :

[C++ Error] Unit1.cpp(32): E2034 Cannot convert 'void (_fastcall *)(TObject *)' to 'void (_fastcall * (_closure )(TObject *))(TObject *)' 
PM MAIL WWW   Вверх
Fazil6
Дата 19.6.2006, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

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



метод реализован так
Код

void __fastcall MyClick(TObject *Sender)
 ???
или всетаки как-то так ???
Код


void __fastcall Form1::MyClick(TObject *Sender)




 
PM MAIL   Вверх
Dubinsky
Дата 19.6.2006, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



а есть разница ??????? да ладно ! но в любом случае мне не нужен метод чьей то формы 
PM MAIL WWW   Вверх
Vyacheslav
Дата 19.6.2006, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Dubinsky @  19.6.2006,  13:51 Найти цитируемый пост)
но в любом случае мне не нужен метод чьей то формы  

Тогда Вам надо сюда   


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


Опытный
**


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

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



Вячеслав , спасибо , работает ... конечно хоть убейте непойму почему надо использовать ТМетод , мне казалось я где то видел решение такой вот задачи без использования ТМетод ... ну да ладно , так работает тоже неплохо ...


 
PM MAIL WWW   Вверх
Dubinsky
Дата 20.6.2006, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



но вообще дело было такое - есть компонент (свой) и у него есть попап меню , как организовать работу с ними ? я думал надо вот присвоить им (МенюАйтемам в смысле) на конструкторе самого компонента свойства он клик , но теперь мне эта затея такой классной не кажеться , нет работать будет , но может можно как нить по-другому организовать работу со своим собственным меню снутри собственного компонента ? 
PM MAIL WWW   Вверх
Vyacheslav
Дата 22.6.2006, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Не понял. 
Пункты всплывающего меню используют компонент или компонент является контролом, у которого есть всплывающее меню?
Если первое, то профессиональным подходом было бы создание
своих собственных предопределенных TAction.
Дополнительную  информацию  об этом можно найти здесь  


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


Опытный
**


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

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



за ТЭкшн спасибо , пригодится , а с меню я вот решил вот что : ставлю свойства компонента Menu1 , Menu2 , потом я их с формы - владельца созданного компонента разрулю ОнКлики , но всё же , мне НЕ НУЖНО чтобы потом под ногами мне путались эти менюшки , в формах , я сначал думал всё это внутрь компонента запихнуть , обработку этих самых менюшек ... если использовать ТМетод , то всё просто , НО я уверен на все 110 % что надо просто метод 

void __fastcall MyClick(TObject *Sender)
{
  // my code ;
}
...
//где то в анналах кода :

  item = new TMenuItem(menu);
  item->Caption = "asd";
  item->OnClick = ( как то хитро кастануть здесь и вуаля ) MyClick;

вот как кастануть правильно я как то непросёк , да и может дело не в кастовании а в том что MyClick не того что надо типа , надо может как нить его по другому задекларировать , вопрос уже не срочный , ТМетод если что пашет , но всё же , хотелось бы как говориться не через Ж а через рот ... smile 
 
PM MAIL WWW   Вверх
Vyacheslav
Дата 26.6.2006, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Цитата(Dubinsky @ 20.6.2006,  14:31)
Вячеслав , спасибо , работает ... 

Так что тогда означает эта цитата?
Отписались так, на всякий случай, а в суть не вникли 
Код

void __fastcall MyClick(void* This, TObject *Sender)
{
  // my code ;
}

void* This - там же написано, почему  добавляется дополнительный параметр.

Код

item = new TMenuItem(menu);
  item->Caption = "asd";
   TMethod Method;
   Method.Data = this;
   Method.Code=MyClick; 
   item->OnClick = *(TNotifyEvent*)&Method;


Добавлено @ 14:59 
Цитата(Dubinsky @  22.6.2006,  19:36 Найти цитируемый пост)

НО я уверен на все 110 % что надо просто метод 

Если, хотите "просто метод", то тогда и используйте не функцию, а просто метод
То есть вместо  
Код

void __fastcall MyClick(TObject *Sender)

Нужно использовать что-то типа
Код

void __fastcall TMyForm::MyClick(TObject *Sender)


А Ваша уверенность на 110% -это не уверенность, а самообман на 110%.
Что такое события  и __closure посмотрите в хелпе. 
Кстати и в указанной ссылке достаточно подробно разжевано  


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


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1653
Регистрация: 3.5.2006
Где: Минск

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



Цитата

но всё же , хотелось бы как говориться не через Ж а через рот ...

самое простое и правильное решение (через рот) - это функция-член класса.  
PM MAIL   Вверх
Dubinsky
Дата 27.6.2006, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



да да да ! так всё и есть , спасибо ! вот только теперь , зная в чём подвох , перечитываю хэлп , и не понимаю где там написано что если функция  __closure , то это не просто функция а метод класса , почему я могу объяснить это двумя словами , а в хэлпе как всегда страница требухи ? ну да ладно , это лирика , Вячеслав , спасибо ещё раз ... 
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

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

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

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

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


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

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


 




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


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

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