Com接口入门细详(一)
接口的出现更递了c++的多重的继承,在应用中相当重要一部分,然而接口中最主要的一块又是com接口(微软提供的接口标准),接口只是服务声明,而在一定形式并没有实现类方法。 下面是一段简单的代码让我们来看一下。 unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Edit1: TEdit; Edit2: TEdit; procedure FormCreate(Sender: TObject); procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } end; // 定义接口ISampleInterface ISampleInterface= Interface(IUnknown)//所有接口都由IUnknown继承,com接口也不例外 [''''{48616967-425B-4E90-AA8B-F88FFC26D1D7}'''']//GUID,唯一的值,可以通过ctrl+shift+g来产生 function GetName:string; procedure SetName(s:string);//方法定义 end; // 实现接口ISampleInterface TSampleImpl=class(TInterfacedObject,ISampleInterface)//接口继承 public __Name: string; function GetName:string; procedure SetName(s:string); end; var Form1: TForm1; MyInterface:ISampleInterface;
implementation
{$R *.dfm} function TSampleImpl.GetName:string;//方法实现 begin GetName:=__Name; end; procedure TSampleImpl.SetName(s:string); begin __Name:= s; end;
procedure TForm1.FormCreate(Sender: TObject); begin MyInterface:= TSampleImpl.Create;//建立对象 end;
procedure TForm1.Button1Click(Sender: TObject); begin MyInterface.SetName(Edit1.Text); end;
procedure TForm1.Button2Click(Sender: TObject); begin Edit2.Text:=MyInterface.GetName; end;
没有相关教程
|