How To Use Interfaces
From Lazarus wiki
Jump to navigationJump to searchCopy the text below and it will demonstrate how to use Interfaces to write less code, avoid code repetition,..., this is a fully working program.
{$mode objfpc}{$H+}{$interfaces com} // which is the default
type
ITestInterface = interface
['{3FB19775-F5FA-464C-B10C-D8137D742088}']
procedure DoSomething;
procedure DoItAll;
end;
TBaseObject = class(TInterfacedObject,ITestInterface)
procedure DoSomething;
procedure DoItAll;
end;
procedure TBaseObject.DoSomething;
begin
Writeln('TBaseObject DoSomething !');
end;
procedure TBaseObject.DoItAll;
begin
Writeln('TBaseObject DoItAll !');
end;
var
I: ITestInterface;
begin
Writeln('Using regular interfaces');
I := TBaseObject.Create as ITestInterface;
if I <> nil then
Writeln('Got interface OK. Calling it');
I.DoSomething;
I.DoItAll;
end.