![]() |
|
|
![]()
|
|
| Dubinsky |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 *)' |
|||
|
||||
| Fazil6 |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 11 Всего: 60 |
метод реализован так
или всетаки как-то так ???
|
||||
|
|||||
| Dubinsky |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 1.6.2005 Репутация: нет Всего: нет |
а есть разница ??????? да ладно ! но в любом случае мне не нужен метод чьей то формы
|
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
-------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| Dubinsky |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 1.6.2005 Репутация: нет Всего: нет |
Вячеслав , спасибо , работает ... конечно хоть убейте непойму почему надо использовать ТМетод , мне казалось я где то видел решение такой вот задачи без использования ТМетод ... ну да ладно , так работает тоже неплохо ...
|
|||
|
||||
| Dubinsky |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 1.6.2005 Репутация: нет Всего: нет |
но вообще дело было такое - есть компонент (свой) и у него есть попап меню , как организовать работу с ними ? я думал надо вот присвоить им (МенюАйтемам в смысле) на конструкторе самого компонента свойства он клик , но теперь мне эта затея такой классной не кажеться , нет работать будет , но может можно как нить по-другому организовать работу со своим собственным меню снутри собственного компонента ?
|
|||
|
||||
| Vyacheslav |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Не понял.
Пункты всплывающего меню используют компонент или компонент является контролом, у которого есть всплывающее меню? Если первое, то профессиональным подходом было бы создание своих собственных предопределенных TAction. Дополнительную информацию об этом можно найти здесь -------------------- С уважением, Вячеслав Ермолаев |
|||
|
||||
| Dubinsky |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 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 не того что надо типа , надо может как нить его по другому задекларировать , вопрос уже не срочный , ТМетод если что пашет , но всё же , хотелось бы как говориться не через Ж а через рот ... |
|||
|
||||
| Vyacheslav |
|
||||||||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2124 Регистрация: 25.3.2002 Где: Москва Репутация: 47 Всего: 59 |
Так что тогда означает эта цитата? Отписались так, на всякий случай, а в суть не вникли
void* This - там же написано, почему добавляется дополнительный параметр.
Добавлено @ 14:59 Если, хотите "просто метод", то тогда и используйте не функцию, а просто метод То есть вместо
Нужно использовать что-то типа
А Ваша уверенность на 110% -это не уверенность, а самообман на 110%. Что такое события и __closure посмотрите в хелпе. Кстати и в указанной ссылке достаточно подробно разжевано -------------------- С уважением, Вячеслав Ермолаев |
||||||||||
|
|||||||||||
| Fazil6 |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1653 Регистрация: 3.5.2006 Где: Минск Репутация: 11 Всего: 60 |
самое простое и правильное решение (через рот) - это функция-член класса. |
|||
|
||||
| Dubinsky |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 252 Регистрация: 1.6.2005 Репутация: нет Всего: нет |
да да да ! так всё и есть , спасибо ! вот только теперь , зная в чём подвох , перечитываю хэлп , и не понимаю где там написано что если функция __closure , то это не просто функция а метод класса , почему я могу объяснить это двумя словами , а в хэлпе как всегда страница требухи ? ну да ладно , это лирика , Вячеслав , спасибо ещё раз ...
|
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |