関連情報:
https://www.baidu.com/link?url=yYEHJesIUg6HguekaIW-U0HtjtLn430Dh0NXSc7ej5ixppqcq21rsYMvlCo_qNOP&wd=&eqid=87bf080a00000c50000000035e83f9e4
例:
インターフェースユニット(UnInterface.pas):
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1つの 単位UnInterface。 2 3 インターフェース 4 用途 5 Winapi.Windows、Winapi.Messages、System.SysUtils、System.Variants、System.Classes、Vcl.Graphics、 6 Vcl.Controls、Vcl.Forms、Vcl.Dialogs、Vcl.StdCtrls、Vcl.ToolWin 、Vcl.ActnMan; 7 8 種類 9 IFormInterface = インタフェース(メソッドはIInterface) 10 [ ' {51869234-9F24-4409-A61D-C6A1A47E7E53} ' ] 11 手順 ShowFormをSTDCALL 。 12 手順 HideForm STDCALL 。 13 エンド; 14 15 TFormInterface = クラス(TFormは、メソッドはIInterface、IFormInterface) 16 // TFormInterface =クラス(TFormは、IFormInterface) 17 プライベート 18 { プライベート宣言} 19 保護FRefCount:整数。 20 関数のQueryInterface(CONST IID:TGUID; うちのObj):HRESULT。上書きします。STDCALL ; 21 関数 _AddRef:整数STDCALL 。 22 機能 _Release:整数STDCALL; 23 手順 ShowFormをSTDCALL 。 24 手順 HideForm STDCALL 。 25 公共 26 コンストラクタ を作成(AOwner:TComponentのを)。上書きします。 27 28 手順 AfterConstruction。上書きします。 29 手順 BeforeDestruction。上書きします。 30 クラスの 機能 NewInstanceメソッド:TObjectを。上書きします。 31 プロパティ RefCountプロパティ:整数読みFRefCountを。 32 エンド; 33 34 実装 35 36 37 手順TFormInterface.AfterConstruction。 38 開始 39 InterlockedDecrement(FRefCount)。 40 エンド; 41 42 プロシージャTFormInterface.BeforeDestruction。 43は 開始 44 であれば RefCountプロパティ<> 0 、次いで 45 レイズ EInvalidPointer。作成し(' 無効なPTRを' ); 46 エンド; 47 48 コンストラクタ TFormInterface。作成(AOwner:TComponentのを)。 49は 開始 50は、 継承されたCreateNew(AOwner); 51 端部、 52 53 機能TFormInterface._AddRef:整数。 54は 開始 55 の検索結果を:= InterlockedIncrement(FRefCount)。 56 端部、 57 58 関数TFormInterface._Release:整数; 59は 開始 60 の検索結果を:= InterlockedDecrement(FRefCount)。 61 もし結果= 0 、次いで 62 破棄する。 63 終了; 64の 65 クラスの 機能TFormInterface.NewInstance:TObjectを。 66は 開始 67 結果:= 継承NewInstanceメソッドを。 68 TFormInterface(結果).FRefCount:= 1 ; 69 エンド; 70 71 機能 TFormInterface.QueryInterface(CONST IID:TGUID; うちのObj):HRESULT。 72は 開始 73 であれば GETINTERFACE(IID、のObj)次いで 74 結果:= 0 75 他の 76 件の検索結果:= E_NOINTERFACE。 77 端部、 78 79 手順TFormInterface.HideForm。 80は 開始 81 隠します。 82 端部、 83 84 手順TFormInterface.ShowForm。 85は 開始 86 ショー。 87 エンド; 88 89 エンド。
呼び出しユニット(Unit1.pas):
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
1つの ユニットUnit1は。 2つの 3 インターフェース 4つの 5 用途 6 Winapi.Windows、Winapi.Messages、System.SysUtils、System.Variants、System.Classes、Vcl.Graphics、 7 Vcl.Controls、Vcl.Forms、Vcl.Dialogs、Vcl.StdCtrls、Vclに。 ToolWin、Vcl.ActnMan、 8 IdGlobal、 9 非共有、 10 UnInterface。 11 12 タイプ 13 TForm1 = クラス(TFormは) 14 ボタン1:のTButton。 15 手順Button1Click(送信者:TObjectを)。 16 プライベート 17 {宣言プライベート} 18は FIForm:IFormInterface; 19 公衆 20は { 公開宣言は} 21で 終わり、 22は 23である VAR 24 をForm1:TForm1; 25 26が 実装 27 { $ R&LT * DFM。} 28 29 手順TForm1.Button1Click(送信者:TObjectを); 30 VAR 31は IForm:IFormInterface; 32が 始まる 33で // プログラム、押しボタン1は、あなたは、このように自動解除機能を実現し、2秒後に消えた、ウィンドウが表示されますが表示されます実行する 34 // IForm:= TFormInterface.Create(NIL)AS IFormInterface; 35 // iForm.ShowForm; 36 // スリープ(2000); 37 // をForm1、IFormInterface型インタフェースのメンバ変数を定義し、オブジェクトはに維持することができますプログラムの終了は、Form1が自動的に解放解放されたとき時に 38 // 書かTFormInterface.Create(セルフ)、その後、問題はリリースする予定 39 IForm:= TFormInterfaceを作成します(ゼロ)AS IFormInterface; 40 iForm.ShowForm; 41は FIForm:= IForm。 42は エンド、 43である エンド。