Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Установка обработчика событий в SomeClass


Страницы:   1 2

Pirat1 ©   (2004-11-23 15:23:00) 

Есть класс TSomeClass, в котором есть событие OnSomeVarChanged.

Вопрос таков:
Как назначить для всех созданных обьектов TSomeClass один обработчик? и как в етом обработчике различать какой именно обьект сработал?

Пробовал писать @TSomeClass.OnSomeVarChanged := @SomeProcedure - не помогает?


Pirat1   (2004-11-23 16:31:00) [21]


> Digitman ©   (23.11.04 16:24) [12]

В том конкретном случае да, но я думаю наперед.

а между New_Object := TSomeClass.Create;
и TSomeClass(New_Object).OnSomeChanged := Form1.SomeProcedure;
указатель на обьект побывает привязаным к Item-у в ListBox и потом, когда беру указатель, то New_Object у меня уже не New_Object : TSomeClass; а New_Object : Object; и поетому я использую TSomeClass(New_Object).OnSomeChanged := Form1.SomeProcedure;


Digitman   (2004-11-23 16:24:00) [22]

а нашута, спрашивается, в ДАННОМ случае нужно приведение типа ?

строка

New_Object.OnSomeChanged := Form1.SomeProcedure;

ничуть не хуже строки

TSomeClass(New_Object).OnSomeChanged := Form1.SomeProcedure;


Pirat1   (2004-11-23 16:21:00) [23]


> KSergey


var New_Object : TSomeClass;
begin
New_Object := TSomeClass.Create;
TSomeClass(New_Object).OnSomeChanged := Form1.SomeProcedure;


Суть такая - мне надо при создании обьекта некого класса присвоить ему обработчики его событий. При все события OnSomeChanged каждого созданого обьекта должны быть направленны на 1 процедуру. Уже в процедуре буду проверять у какого именно обьекта сработало событие.


KSergey   (2004-11-23 16:14:00) [24]

> TSomeClass(New_Object ).

А выделенное - зачем?? Какого типа New_Object?


Pirat1   (2004-11-23 16:09:00) [25]

Ошибка была в следующем:
Надо было мне писать после создания обьекта:
TSomeClass(New_Object).OnSomeVarChanged := SomeProcedure;


Pirat1   (2004-11-23 16:04:00) [26]

Разобрался. Спасибо всем.


TUser   (2004-11-23 16:00:00) [27]

Обработчик события приписывается конкретному экземпляру класса. В ряде случаев можно написать
for i:=0 to self.componentcount-1 do
if self.components[i] is tsomeclass then
tsomeclass(self.components[i]).onblablabla:=someproc;
(это для наследников TControl'а, если у них общий parent).
В общем случае - отнаследоваться от класса и создавать экземпляры наследника.


Digitman   (2004-11-23 15:53:00) [28]


> Pirat1   (23.11.04 15:50) [5]
> именно на ту строчку: "Method identifier expected"


так ведь это - прямое руководство к действию !

тебе ж компилятор недвусмысленно намекает, мол, ожидаю идентифиватор методанекоего класса ... а ты что ему вместо метода тычешь ? или буквы буржуйские  во фразе этой тебе в принципене ведомы ?


Pirat1   (2004-11-23 15:50:00) [29]


> Digitman

именно на ту строчку: "Method identifier expected"


Digitman   (2004-11-23 15:45:00) [30]


> Pirat1   (23.11.04 15:39) [2]
> Компилятор ругаеться


да ты что ?!
да неужто прямо так и говорит, мол, "я ругаюсь" ?!


KSergey   (2004-11-23 15:44:00) [31]

Автор, вам сюда
http://www.delphikingdom.com/helloworld/runtime_comp.htm


Pirat1   (2004-11-23 15:39:00) [32]


> Digitman


Компилятор ругаеться


Digitman   (2004-11-23 15:28:00) [33]


> не помогает?


тебе лучше знать, помогает или не помогает.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо