其中:IMain 为接口。
//下面为被委托的类
unit uIMain;interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Forms,
  MainInf, uParent, ADODB, OperGlob, GlobInf;
type
  TMain = class(TPrent, IMain)
    private
      FAdoConnect: TADOConnection;
      FOperGlob: TGlob;
    public
      constructor Create;
      destructor Destroy; override;
      function GetIGlob: IGlob; stdcall;
      function GetAdoConnect: TADOConnection; stdcall;
      property AdoConnect: TADOConnection read FAdoConnect write FAdoConnect;
end;
implementation{ TMain }constructor TMain.Create;
begin
  inherited Create (nil);
  FOperGlob := nil;
end;destructor TMain.Destroy;
begin
  FOperGlob.Free;
  inherited;
end;function TMain.GetAdoConnect: TADOConnection;
begin
  Result := FAdoConnect;
end;function TMain.GetIGlob: IGlob;
begin
  FOperGlob := TGlob.Create(nil);
  Result := FOperGlob as IGlob ;
end;end.
//下面是委托的类 TBookMainFrm = class(TForm, IMain) private
    { Private declarations }
    FIMain: IMain;
  public
    { Public declarations }
    property ServerIMain: IMain read FIMain write FIMain;
                                     --------------------
  end;
下划线好象不是这样写的???编译的时候
提示这几个:
      function GetIGlob: IGlob; stdcall;
      function GetAdoConnect: TADOConnection; stdcall; 找不到。
 因为我是想委托来实现接口,所以上面就应该不用再定义了吧!

解决方案 »

  1.   

    通过属性IMain引用接口方法。不过引用前必须“实例化” IMain。  IMain:= TMain.Create(AOwner);
      

  2.   

    错了,上面的IMain应该是FIMain
      

  3.   

    把你TBookMainFrm类 全部贴出来
      

  4.   

    unit BookMain;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ToolWin, ComCtrls, Menus,mgrPack,AddForm, DataBase, DB, ADODB,
      MainInf, GlobInf, uIMain;type
      TBookMainFrm = class(TForm, IMain)
        MainMenu: TMainMenu;
        StatusBar1: TStatusBar;
        ToolBar1: TToolBar;
        AdoConnection: TADOConnection;
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
        FIMain: IMain;
      public
        { Public declarations }
        property ServerIMain: IMain read FIMain write FIMain;
      end;var
      BookMainFrm: TBookMainFrm;implementation{$R *.dfm}procedure TBookMainFrm.FormCreate(Sender: TObject);
    begin
      FIMain := TMain.Create as IMain ;
    end;end.
    应你的要求全部贴出来了。刚想实现这个委托类,就遇到问题了。好简单的。、
      

  5.   

    property FIMain: IMain read FIMain implements IMain ;
      

  6.   

    constructor TBookMainFrm.Create(Sender: TObject);
    begin
      inherited;
      FIMain := TMain.Create(nil);
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      BookMainFrm: TBookMainFrm;
    begin
      BookMainFrm:= TBookMainFrm.Create(nil);
      TBookMainFrm.FIMain.GetAdoConnect;
    end;