程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Com接口入門細詳(一)

Com接口入門細詳(一)

編輯:Delphi
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;
  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved