ОФФ. Диинамческое назначение обработчика в Builder
От: Andrey_ka  
Дата: 04.03.02 07:53
Оценка:
Привет всем. Немного не в тему, но близко.
Как в Builder 5 написать метод, который потом можно подсунуть в качестве обработчика какого-либо события, контролу? Имеется ввиду в Runtime.
Что-то никак не выходит.. .
Re: ОФФ. Диинамческое назначение обработчика в Builder
От: Anatolix Россия https://www.linkedin.com/in/anatolix/
Дата: 04.03.02 11:58
Оценка:
Здравствуйте Andrey_ka, Вы писали:

AK>Привет всем. Немного не в тему, но близко.

AK>Как в Builder 5 написать метод, который потом можно подсунуть в качестве обработчика какого-либо события, контролу? Имеется ввиду в Runtime.
AK>Что-то никак не выходит..

Вот ответ из FAQ конференции по
C++ Builder на www.softforum.ru

Если ты хочешь присвоить события компонентам созданным в динамике — вперед. С непривычки бывает сначала сложно описать функцию с правильными параметрами Я рекомендую сделать так: например есть массив кнопок им всем надо присвоить OnClick.

1) Ставим на форму кнопку
2) Делаем ей событие OnClick, переименовываем функцию как надо
3) Пишем внутрь какой-нибудь комментарий(т.к. Builder удаляет пустые обработчики)
4) Удаляем саму кнопку

Теперь у нас есть правильно описанный обработчик события который можно присвоить как
ArrayOfTButton[i]->OnClick=....

P.S. кстати если пишешь на C++ Builder то добро пожаловать на www.softforum.ru та есть очень сильная конференция по BCB
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
Re[2]: ОФФ. Диинамческое назначение обработчика в Builder
От: Andrey_ka  
Дата: 05.03.02 09:01
Оценка:
Здравствуйте Anatolix, Вы писали:

A>Если ты хочешь присвоить события компонентам созданным в динамике — вперед. С непривычки бывает сначала сложно описать функцию с правильными параметрами Я рекомендую сделать так: например есть массив кнопок им всем надо присвоить OnClick.


A>1) Ставим на форму кнопку

A>2) Делаем ей событие OnClick, переименовываем функцию как надо
A>3) Пишем внутрь какой-нибудь комментарий(т.к. Builder удаляет пустые обработчики)
A>4) Удаляем саму кнопку

A>Теперь у нас есть правильно описанный обработчик события который можно присвоить как

A> ArrayOfTButton[i]->OnClick=....

Спасибо, но тут есть проблемка. Дело в том, что так можно присвоить только метод-член класса наследника TObject. Мне-то хочется свою произвольную функцию туда подставить.
Re[3]: ОФФ. Диинамческое назначение обработчика в Builder
От: Anatolix Россия https://www.linkedin.com/in/anatolix/
Дата: 12.03.02 09:50
Оценка:
Здравствуйте Andrey_ka, Вы писали:

AK>Спасибо, но тут есть проблемка. Дело в том, что так можно присвоить только метод-член класса наследника TObject. Мне-то хочется свою произвольную функцию туда подставить.


Ты не можешь это сделать(правильными методами).
Видишь ли функции члены классов и не члены классов
серьезно отличаются друг от друга. На самом деле во все
нестатистические функции члены классов приходит скрытый
лишний параметр 'this' который указывает на экземпляр класса.
Если ты ей присовишь указатель на свойю функцию то параметры будут
неправильно лежать на стеке и AV. Это так же как ты не можешь
присовить указателю на функцию адрес функции с другим набором параметров.
Любая проблема дизайна может быть решена введением дополнительного абстрактного слоя, за исключением проблемы слишком большого количества дополнительных абстрактных слоев
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.