注册 登录
编程论坛 Delphi论坛

问个技术性的问题,实在是想不出解决方法。。。

zhanghj 发布于 2009-09-14 10:24, 908 次点击
我做了两个组件X,Y,两个组件里各有一个变量X.a和Y.a,是相同的意义,我想实现X.a变化了那Y.a也自动变化。在组件X内部,X.a的变化是随机的,所以我本来想 在主程序中 一直监视X.a是否变化,变化了就赋给Y.a,但是这样太麻烦了,耗资源。不知道有什么办法能实现  X.a变化了而Y.a也自动变化
2 回复
#2
yeye552009-09-15 09:38
把a设计成属性,只能通过成员函数来访问。
#3
CityWalker2009-09-25 17:53
TX = class(...)
private
  Fa: ...;
  FaChanged: TNotifyEvent;

  procedure SetaProperty(const Value: ...);
public
  property a: ... read Fa writeSetaProperty;
  property aChanged: TNotifyEvent write FaChanged;
end;

实现部分
procedure TX.etaProperty(const Value: ...);
begin
  if a <> Value then
  begin
    a := Value;
    if Assigned(FaChanged) then
      FaChanged(Self);
  end;
end;

=====================================================
那么在实例化 X 时,
  X := TX.Create(...);
  X.aChanged := XaChanged;
其中 XaChanged 是一个类过程, 如:
procedure TForm1.XaChanged(Sender: TObject);
begin
  if Y <> nil then
  begin
    Y.a := X.a;
  end;
end;
1