uiInterface=Interface(IInterface)
end; utClass=class(TInterfacedObject) end; ///////////////////////////////////////////////////////////////
function func(const oo:utClass):uiInterface;
begin
result:=nil;
if oo 实现 uiinterface then
result:=oo as uiinterface;
end;
end; utClass=class(TInterfacedObject) end; ///////////////////////////////////////////////////////////////
function func(const oo:utClass):uiInterface;
begin
result:=nil;
if oo 实现 uiinterface then
result:=oo as uiinterface;
end;
IID_frmRSProdSheetTemp = '{763A8157-45BD-480B-BDCB-7A8BC06EDB63}';type
IfrmRSProdSheetTemp = interface
[IID_frmRSProdSheetTemp]
procedure GetPNData;
end;
TfrmRSProdSheetTemp = class(TfrmRSTemp, IProdSheet, IfrmRSProdSheetTemp)
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
FIProdSheet: IProdSheet;
function GetProdSheet: IProdSheet;
protected
PrintCalc: Boolean;
procedure GetPNData; virtual;
property ProdSheet: IProdSheet read GetProdSheet implements IProdSheet;
public
{ Public declarations }
end;判断TfrmRSProdSheeTemp 是否支持 IfrmRSProdSheetTemp 接口就用下面下面的方法function GetIfrmRSProdSheetTemp: IfrmRSProdSheetTemp;
begin
Result := nil;
if Supports(TfrmRSProdSheetTemp, IID_frmRSProdSheetTemp)then
Result := TfrmRSProdSheetTemp.Create(nil)
else
ShowMessage('TfrmRSProdSheetTemp 不支持 IfrmRSProdSheetTemp接口');
end;
这个Blog 有更深层的用法
http://hi.baidu.com/cncharles/blog/item/4a061df75e4fc123720eec20.html