2012/11/13

基礎課程 - Delphi Interceptor Classes

利用 「Class 攔截器(Interceptor Classes)」 就可以不需要寫大量的繼承指令碼了

實戰中有時也會遇到,比方說像 TMaskEdit 的 ValidateError 事件的覆寫



uses //...

type
  // interceptor class
  TMaskEdit = class(Mask.TMaskEdit)
     procedure ValidateError; override;
  end;

  TForm1 = class(TForm)
  // any code below

然後在 unit 最後面就可以寫覆載內容,例如像:
※20121114 感謝cat200188提供程式內容
procedure TMaskEdita.ValidateError;
var SMaskEditErra :String;
begin
  // 為了避開系統的錯誤訊息,故不使用 inherited
  //inherited;
  SMaskEditErra := '這是中文測試!!';
  raise EDBEditError.CreateResFmt({$IFNDEF CLR}@{$ENDIF}SMaskEditErra, [EditMask]);
end;

遇到VCL元件不足的地方利用這個方式可以很輕鬆擴展它

嗯,以上基礎課程就到這邊


參考資料
Delphi Interceptor Classes -> TButton = class(TButton)
Synchronizing Threads and GUI in Delphi application
TMaskEdit 的錯誤攔截











有認真看基礎課程嗎?

沒有留言:

張貼留言