AnnChange example for Delphi

var
//Global declarations
RasterAnn: LEADRasterAnnotation;
RasterAnnToolbar: LEADRasterAnnToolBar;

procedure TForm1.Button1Click(Sender: TObject);
begin
   RasterAnn:= CoLEADRasterAnnotation.Create ();
   RasterAnnToolbar:= CoLEADRasterAnnToolBar.Create ();
   RasterAnn.AnnParentRasterView := LEADRasterView1.Raster;
   LEADEventSink1.Connect (RasterAnn, _LEADRasterAnnotationEvents);
   RasterAnn.AnnUserMode := ANN_USERMODE_DESIGN ;
end;

procedure TForm1. LEADEventSink1Invoke(Sender: TObject; DispID: Integer;
  const IID: TGUID; LocaleID: Integer; Flags: Word; Params: tagDISPPARAMS;
  varResult, ExcepInfo, ArgErr: Pointer);
var
   Buffer: String;
   nTag: Longint;
   hAnnObject: OleVariant;
begin
   case (DispID) of
      LEADRASTERANNOTATIONEVENTS_ANNCHANGE: 
      begin
         hAnnObject:= OleVariant(Params.rgvarg^[0]);
         RasterAnn.AnnGetTag (hAnnObject);
      nTag:= RasterAnn.AnnTag;
         Buffer:= ' This is a change for the button tagged ' + IntToStr(nTag);
         ShowMessage (Buffer);
      end;
   end;
end;