其中: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; 找不到。
因为我是想委托来实现接口,所以上面就应该不用再定义了吧!
解决方案 »
- 将DBGrid中个别列的数据(当然也可以是数据库中的数据)导入到excel中,excel中每五条记录做一页,如何实现呢?
- 图形问题 急急!!!!!!!!!!!!
- 打印条形码问题,在线等待!
- 昨天专家分还4872呢,今天怎么变成4868了呢?
- 高手提供一个最简单的访问MS Access MDB数据库文件的例子?
- 在TWebBrowser中如何使用书签??
- 麻烦帮忙看看这是怎么了?
- 如何用TABLE控件手工添加记录?
- GIS的问题
- 如何在主窗体的背景上写上漂亮的汉字?
- 有没有办法不让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;