Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2012, 14:45   #1
xabik
Пользователь
 
Регистрация: 03.06.2009
Сообщений: 22
По умолчанию Нужно создать событие...

Короче такая ситуация.

Есть класс TMyClass1 имеющий поле FMyField:integer;
Есть класс TMyClass2 имеющий поле FmyClass: TMyClass1

Как создать событие для класса TMyClass2, которое отслеживает изменение поля FMyField класса TMyClass1?
xabik вне форума Ответить с цитированием
Старый 10.05.2012, 00:03   #2
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Код:
type
  TOnFieldChanged = procedure(sender: TObject; NewValue: Integer) of object;

  TMyClass1 = class
  private
    FMyField: Integer;
    FOnFiledChanged: TOnFieldChanged;
    //
    procedure SetMyField(Value: Integer);
  public
    property MyField: Integer read FMyField write SetMyField;
    //
    propery OnFieldChanged: TOnFieldChanged read FOnFiledChanged write FOnFiledChanged;
  end;


  TMyClass2 = class
  private
    FMyClass: TMyClass1;
    //
    procedure FieldChanged(sender: TObject; NewValue: Integer);
  public
    constructror Create(MyClass: TMyClass1);
  end;


{ TMyClass1 }

procedure TMyClass1.SetMyField(Value: Integer);
begin
  if (FMyField <> Value) then begin
    //
    FMyField := Value;
    //
    if (Assigned(FOnFiledChanged)) then
      FOnFiledChanged(self, Value);
  end;
end;


{ TMyClass2 }

constructror TMyClass2.Create(MyClass: TMyClass1);
begin
  FMyClass := MyClass;
  FMyClass.OnFieldChanged := FieldChanged;
  //
  inherited Create();
end;

procedure TMyClass2.FieldChanged(sender: TObject; NewValue: Integer);
begin
  // поле FMyField у FMyClass походу изменилось, надо что-то делать
end;
зы. компилировал "в уме", могут быть неточности.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Можно ли создать событие для формы VBA? segail Microsoft Office Excel 20 25.01.2016 12:15
как програмно создать событие??? gufon Общие вопросы Delphi 7 07.06.2011 16:31
Как создать событие OnClick... zotox Помощь студентам 6 08.08.2009 21:24
как создать событие при печати документа funthing Microsoft Office Excel 2 07.08.2009 11:28
Как создать событие(которое выполняется в определённое время) micaell Общие вопросы Delphi 5 13.12.2006 18:35