![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| KrasAI |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 3.6.2010 Репутация: нет Всего: нет |
Здравствуйте уважаемые. Нужен совет опытных программистов.
И так по порядку: Есть (пишется) визуальный компонент, ну пусть зовут его TMyComponent наследник TCustomControl. Суть этого компонента заключается в хранении неких не визуальных объектов (TMyObject). Каждому экземпляру TMyObject, когда он добавляется в TMyComponent, в поле TMyObject.Owner (TMyObject->FOwner: TObject) записывается указатель владельца, т.е. на сам TMyComponent. Теперь собственно головоломка: Как сгенерировать событие у TMyComponent при изменении самого TMyObject??? т.е.
Какое решение выбрал я: у объекта TMyObject описал метод SendМessage(id,w,l:LongInt); который вызывается в методе TMyObject.Method и отправляет сообщение владельцу FOwner (MyComponent). Этот компонент получив сообщение, в соответствующей процедуре генерирует событие MyComponent.OnEvent; Ну примерно так:
Вот так. Жду критики. Может есть решение пороще? Спасибо за внимание. p.s. предложение вызывать из TmyObject методы владельца TMyComponent, эт недело. TMyObject ничего о них не знает. |
||||
|
|||||
| Rennigth |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1708 Регистрация: 21.6.2004 Где: Moscow Репутация: 49 Всего: 76 |
1. Зачем создавать окно (TCustomControl) для хранения объектов?
2. Почему бы не сделать у TMyComponent событие которое будут вызывать TMyObjects? Что-то вроде...
3. Посмотри на реализацию TList, TStringList и т.д. (например как у них работает Notify). -------------------- (* Honesta mors turpi vita potior *) |
|||
|
||||
| KrasAI |
|
||||||||||
|
Новичок Профиль Группа: Участник Сообщений: 2 Регистрация: 3.6.2010 Репутация: нет Всего: нет |
Спасибо, что ответили.
Ну, TMyComponet - необходимо чтобы был визуальным, в его функциональность входит поочередное отображение (графическое) хранящихся в нем объектов (TMyObject).
я же писал выше :
Дело в том, что нехочется делать таких связей. Получится "сетка" классов которые по отдельности бесполезны. Ну в тотже TStringList можно добавить любой объект
Ну здесь чуть другое, у класса TStringList есть метод Changing, он и возбуждает событие FOnChanging(Self), т.е. класс сам возбуждает описанное в нем же событие. У меня ситуация иная, объект TMyObject не знает ничего о методах TMyComponent. Вот как проще всего передать информацию о изменении экземпляра TMyObject в TMyComponent (имея лишь ссылку TMyObject.Owner: TObject); Спасибо. |
||||||||||
|
|||||||||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |