Project templates to build Office COM add-in,
smart tag and RTD sever in Delphi

Add-in Express™
for Microsoft® Office and Delphi® VCL

Add-in Express project architecture

Add-in Express for Office and Delphi VCL is written in Delphi and supports all Delphi versions of XE2 to Delphi 10.2 Tokyo; Office 2000 - 2016 32-bit and 64-bit extensions are supported. All projects that can be created with Add-in Express are located on the Add-in Express for Office and Delphi tab of the New Items dialog box (File | New | Other). The projects are:

Office COM Add-in project template

Each Add-in Express project is an ActiveX library (DLL, an in-process COM server) that contains one or several Automation objects realizing the interfaces required by the supported technology, e.g. IDTExtensibility2, IRibbonExtensibility, IRtdServer or ISmartTagRecognizer. By default, every project based on Add-in Express includes type library files (binary and Object Pascal unit) and the RAD module that implements all technology-specific interfaces and centralizes your applied code (marked by the _IMPL suffix).

Office COM add-in project

The RAD module is the "heart" of your project. It is a descendant of the Data Module that has its own visual designer. You concentrate your development around this module since it is a container for all Office-specific components (like TDataModule that is a container for DB components) and it provides "access points" for handling Office objects. More about Delphi components for Office ribbon, menu, commandbar.

Thus, the RAD module is the place where your write your applied code. Below you can find the initial source code of the RAD module generated by Add-in Express:

unit MyOutlookAddin_IMPL;


  SysUtils, ComObj, ComServ, ActiveX, Variants, Office2000,
  adxAddIn, MyOutlookAddin_TLB, Outlook2000;

  TOlAddin = class(TadxAddin, IOlAddin)

  TAddInModule = class(TadxCOMAddInModule)
    procedure adxCOMAddInModuleAddInInitialize(Sender: TObject);
    procedure adxCOMAddInModuleAddInFinalize(Sender: TObject);
    procedure OptionsPagesAdd(ASender: TObject;
      const Pages: PropertyPages); override;

  adxOlAddin: TAddInModule;


{$R *.dfm}

procedure TAddInModule.adxCOMAddInModuleAddInInitialize(Sender: TObject);
  adxOlAddin := Self;

procedure TAddInModule.adxCOMAddInModuleAddInFinalize(Sender: TObject);
  adxOlAddin := nil;

procedure TAddInModule.OptionsPagesAdd(ASender: TObject; const Pages: PropertyPages);
  Pages.Add('MyOutlookAddin.MyOptions', 'My Options');

  TadxFactory.Create(ComServer, TOlAddin, CLASS_OlAddin, TAddInModule);