![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Установка обработчика событий в SomeClass
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]
> не помогает?
тебе лучше знать, помогает или не помогает.