AnnHyperlink example for Delphi

procedure TForm1. LEADEventSink1Invoke(Sender: TObject; DispID: Integer;
  const IID: TGUID; LocaleID: Integer; Flags: Word; Params: tagDISPPARAMS;
  varResult, ExcepInfo, ArgErr: Pointer);
var
   msgStr: String;
    nType: Smallint;
   hObject: Integer;
   iParamCount: Integer;
   lParam1: Longint;
   lParam2: Longint;
   lParam3: Longint;
   lParam4: Longint;
   lParam5: Longint;

begin
   case (DispID) of
      LEADRASTERANNOTATIONEVENTS_ANNHYPERLINK:
      begin
         lParam5:= OleVariant(Params.rgvarg^[0]);
         lParam4:= OleVariant(Params.rgvarg^[1]);
         lParam3:= OleVariant(Params.rgvarg^[2]);
         lParam2:= OleVariant(Params.rgvarg^[3]);
         lParam1:= OleVariant(Params.rgvarg^[4]);
         iParamCount:= OleVariant(Params.rgvarg^[5]);
         hObject:= OleVariant(Params.rgvarg^[6]);

          RasterAnn.AnnGetHyperlinkType (hObject);
      nType:= RasterAnn.AnnHyperlinkType;
          if ((nType = ANN_LINK_ANNEVENT5) Or (nType = ANN_LINK_ANNEVENT)) then
         begin
              if iParamCount >= 0 then
               msgStr:= IntToStr(iParamCount) + ' params are valid' + Chr(13);
            if iParamCount >= 1 then
               msgStr := msgStr + 'Param1: ' + IntToStr(lParam1) + Chr(13);

            if iParamCount >= 2 then
               msgStr := msgStr + 'Param2: ' + IntToStr(lParam2) + Chr(13);

            if iParamCount >= 3 then
               msgStr := msgStr + 'Param3: ' + IntToStr(lParam3) + Chr(13);

            if iParamCount >= 4 then
               msgStr := msgStr + 'Param4: ' + IntToStr(lParam4) + Chr(13);

            if iParamCount = 5 then
               msgStr := msgStr + 'Param5: ' + IntToStr(lParam5) + Chr(13);

           end
           else
              msgStr := 'Invalid Type';
         ShowMessage (msgStr);
      end;
   end;
end;