首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

属性改变导致行为改变-是如何实现的

2013-07-21 
属性改变导致行为改变-----是怎么实现的TButton的一个定义语句:property Cancel: Boolean read FCancel wr

属性改变导致行为改变-----是怎么实现的
TButton的一个定义语句:
property Cancel: Boolean read FCancel write FCancel default False;

帮忙解答下:
button1.Cancel := True;
这句代码是怎样来改变FCancel的,FCancel变了又是如何改变button的响应消息的。

源码里没看到Cancel和FCancel之间的相互赋值啊。
[解决办法]
delphi内部机制:
定义Cancel:boolean read FCancel write FCancel时就隐式说明当Cancel改变时自动传入FCancel
[解决办法]
对象的属性和 成员变量或成员方法 关联
[解决办法]


 TCMDialogKey = TWMKey;

  TWMKey = packed record
    Msg: Cardinal;
    CharCode: Word;
    Unused: Word;
    KeyData: Longint;
    Result: Longint;
  end;


procedure TButton.CMDialogKey(var Message: TCMDialogKey);
begin
  with Message do
    if  (((CharCode = VK_RETURN) and FActive) or
      ((CharCode = VK_ESCAPE) and FCancel)) and
      (KeyDataToShiftState(Message.KeyData) = []) and CanFocus then
    begin
      Click;
      Result := 1;
    end else
      inherited;
end;

热点排行