https://www.cnblogs.com/del/archive/2009/10/13/1582789.html
クラスヘルパーは、Delphi 2007からのものであってもよい今日は唯一それをテストするまで感は、実用的ではないので、新しい構文を追加しました。
非常に興味深いの基本的な機能を:!知るしようとした後、既存のクラスを変更することです。
TXXX = T ... {ためのクラスヘルパー Tは... }既存のクラスを表す
{既存の方法は、代替としてもよい}
{新しい方法もメンバーであってもよい}
エンド。
この後の再使用してT ... //クラスとその子孫クラスは、変更さTXXXの使用を優先させて頂きます。
例1:
ユニットUnit1は。
インターフェース
使用して
Windowsの、メッセージ、sysutilsの、バリアント、クラス、グラフィックス、コントロール、フォーム、
ダイアログ、StdCtrls;
入力
TForm1 =クラス(TFormは)
ボタン1:のTButtonと、
手続きButton1Click(送信者:TObjectを);
終わり;
TMyClass =クラス
関数func1の:文字列。
関数func2を:文字列。
終わり;
TMyClass = TMyClassHelperのためのヘルパークラス
関数func1の:文字列; {TMyClassスワップに同じ方法置換する}
関数FUNC3:文字列; {そのサブクラスのメソッドTMyClass増加する}
終了。
だった
のForm1 TForm1には、
実装
{$ R * .DFM}
{} TMyClass
機能TMyClass.func1:文字列。
始める
の検索結果を:= 'TMyClass.func1';
終わり;
機能TMyClass.func2:文字列。
始める
の検索結果を:= 'TMyClass.func2';
終わり;
{} TMyClassHelper
機能TMyClassHelper.func1:文字列。
始める
の検索結果を:= 'TMyClassHelper.func1';
終わり;
機能TMyClassHelper.func3:文字列。
始める
の検索結果を:= 'TMyClassHelper.func3';
終わり;
//测试
手順TForm1.Button1Click(送信者:TObjectを);
VAR
; TMyClass:OBJ
開始
OBJ:= TMyClass.Create。
ShowMessage(obj.func1)。{TMyClassHelper.func1}
ShowMessage(obj.func2)。{TMyClass.func2}
ShowMessage(obj.func3)。{} TMyClassHelper.func3
obj.Free;
終わり;
終わり。
例2:この例のTControlはTControlの後、クラスメソッドに増加し、その子孫のすべてが、このメソッドを持っています。
ユニットUnit1は、
インターフェース
使用して
Windowsの、メッセージ、sysutilsの、バリアント、クラス、グラフィックス、コントロール、フォーム、
ダイアログ、StdCtrls;
入力
TForm1 =クラス(TFormは)
ボタン1:のTButtonと、
手続きButton1Click(送信者:TObjectを);
終わり;
TMyClassHelper =のTControlのためのクラスヘルパー
手順MyMsg。
終わり;
だった
のForm1 TForm1には、
実装
{$ R * .DFM}
{} TMyClassHelper
TMyClassHelper.MyMsg手順;
始める
ShowMessageFmt([名、クラス名] 'クラス名が%S%である');
END;
テスト@:このテストは現在のボタンと現在のフォームは、それらはTControlクラスから継承されている
手順TForm1.Button1Click(送信者:TObjectを)
開始
Self.MyMsg; Form1の{}クラス名TForm1
のTButton(送信者)。 MyMsg; {Button1をクラス名} TButton1
エンド。
終わり。