Delphi-Quellcode:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
Type IMainForm =
Interface(IUnknown)
['
{5C440981-29CB-4F1E-815D-DCA4EFF07437}']
Procedure HalloWelt;
stdcall;
end;
type
TForm1 =
class(TForm, IMainForm)
procedure FormCreate(Sender: TObject);
private
{ Private-Deklarationen }
procedure HalloWelt;
stdcall;
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.HalloWelt;
Begin
ShowMessage('
Hallo Welt');
end;
procedure TForm1.FormCreate(Sender: TObject);
Var M: IMainForm;
begin
M := Self;
M.HalloWelt;
end;
end.
M := IMainForm(Form1);
sollte auch funktionieren, ABER TForm stammt nicht von TInterfacedObjekt, weshalb die internen
Mechnismen eines Interfaces natürlich nicht funktionieren dürften.
Sprich die automatische Freigeben des Form über das Interface usw, funktioniert nicht ..
Das Ding kann also nur als Transportkiste verwendet werden und auch sonst ist es nicht ganz konform.