![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| croakernet |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 10.6.2008 Репутация: нет Всего: нет |
Уважаемые форумчане! Ткните носом, или подскажите, как:
Создаю приложение, в приложении существуют три объекта. Один из них, в результате вызова некой процедуры, выполняет некое действие. В результате этой процедуры он создает нечто (событие). Два других должны отреагировать на эти события. Как реализовать такую конструкцию? Поясню на примере: Один объект - форма, второй объект просто некий программный модуль (назовем его MainOBJ). После некоторых действий пользователя на форме происходит событие, на которое MainOBJ должен отреагировать. При этом модуль Формы включен в описание в MainOBJ, но ведь форма ничего не знает о процедурах MainOBJ. Как из нее вызвать обработчик этого события, код которого, находится в MainOBJ? Знаю как подобное провернуть на VB: { Class 1 Public event testEvent(a as long) } procedure test RaiseEvent testEvent(a) end { Class 2 public class1Obj withevents as class 1 sub class1Obj_testEvent(a as long) {код обработки} end } возможно ли что то подобное??? |
|||
|
||||
| zolumn |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 10 Регистрация: 19.2.2008 Где: Volgograd Репутация: нет Всего: нет |
тут не особо понятна формулировка вопроса, вроде как много написано, но замудрено...
так вот это нечто(событие), в него можно вставить вызов процедур классов, которыми оно обрабатывается. И как понять событие? это изменение переменной класса? изменение свойства класса? изменение свойства формы? что эт? если это изменение свойства формы или его компонентов, то просто поставь во вкладке events напротив этого события название процедуры или функции, кторая будет ее обрабатывать. Это сообщение отредактировал(а) zolumn - 8.10.2008, 17:38 |
|||
|
||||
| croakernet |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 10.6.2008 Репутация: нет Всего: нет |
Нет Это не изменение свойства формы! Это просто три неких класса.
Во время выполнения процедуры класса происходит "событие" (т.е. выполнение процедуры доходит до определенной точки, и вызывается процедура события) и все остальные классы реагируют на это событие. Я понимаю, что можно поочереди вызвать кучу процедур из других классов, и в них по очереди передать все значения, и они поочереди выполняться. Но что делать если таких классов 10 (или 100). Я все это к чему: на VB можно реализовать это таким образом, что при вызове ОДНОЙ процедуры внутри одного класса, происходит обращение к различным реализациям это процедуры внутри других классов, в которых первый класс описан как объект с событиями. |
|||
|
||||
| Bose |
|
||||||||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1458 Регистрация: 5.3.2005 Где: Riga, Latvia Репутация: 8 Всего: 51 |
Как-то так:
В Делфи событие, - это процедурный тип. Т.е. чтобы обработать сотыбие, нужно присвоить объекту процедуру-обработчик. А объект будет вызывать эту процедура всякий раз, когда должно сработать событие. Чтобы добавить событие к своему классу, надо: 1) Определить тип данных обработчика события, или воспользоваться стандартным(предпочтительнее). свой:
Это означает что обработчиком события у нас будет процедура какого-либо объекта с двумя параметрами aParam1,aParam2:TObject Но для начала лучше использовать стандартный тип события, например:
Тип TNotifyEvent объявлен в модуле classes. 2) В класс, который должен вызывать событие добавляем proprty к которой будем присваивать:
3) Теперь, надо сделать так чтобы, это событие заработало. Для этого в нужном тебе месте добавить вызов события как процедуры.
4) Теперь в нужном месте необходимо присвоить обработчик события. Например, у нас есть форма:
|
||||||||||
|
|||||||||||
![]()
|
| Правила форума "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. |