其中: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; 找不到。
因为我是想委托来实现接口,所以上面就应该不用再定义了吧!
//下面为被委托的类
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; 找不到。
因为我是想委托来实现接口,所以上面就应该不用再定义了吧!
解决方案 »
- 熟悉AdvStringGrid的大牛请进,只求一显示效果
- .......................................................................................
- 事务回滚出现EDdatabaseError异常,麻烦帮看看
- 帮忙看看这段代码,嵌套循环的效率问题
- TStringDynArray 和String 类型怎样相互转换??
- dll问题
- 很好的效果,很多商业软件都用,可是如何实现呢,在线等,如能解答立即结贴。
- 关于计算字段的使用,急!!
- 关于文件读写问题!
- 一个不解的问题:为何在TDBNavigator组件中不按Post按钮也把数据库的数据更改了?
- 有没有办法不让TREEVIEW展开和缩放
- 使用了ehlib等一些控件,在调试程序的时候总会跑到控件的代码中去,我把控件的的pas删除只保留dcu文件,在出错的时候又提示找不到控件??.
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.
应你的要求全部贴出来了。刚想实现这个委托类,就遇到问题了。好简单的。、
begin
inherited;
FIMain := TMain.Create(nil);
end;procedure TForm1.Button1Click(Sender: TObject);
var
BookMainFrm: TBookMainFrm;
begin
BookMainFrm:= TBookMainFrm.Create(nil);
TBookMainFrm.FIMain.GetAdoConnect;
end;