anchor.diff:  
       { enumerate the available formats and return them as a StringList }
       lMimeList := EnumDataToStringList(DataObj);
  -
  -    if lMimeList.Count > 0 then
  -      lMimeChoice := lMimeList[0]
  -    else
  -      {$NOTE We need to replace this message with a resouce string }
  -      raise Exception.Create('fpGUI/GDI: no mime types available for DND operation');
  -
  -    lDropAction := TranslateToFPGDropAction(Effect);
  -    if Assigned(wg.OnDragEnter) then
  -      wg.OnDragEnter(self, nil, lMimeList, lMimeChoice, lDropAction, lAccept);
  -
  +    try
  +      if lMimeList.Count > 0 then
  +        lMimeChoice := lMimeList[0]
  +      else
  +        {$NOTE We need to replace this message with a resouce string }
  +        raise Exception.Create('fpGUI/GDI: no mime types available for DND operation');
  +
  +      lDropAction := TranslateToFPGDropAction(Effect);
  +      if Assigned(wg.OnDragEnter) then
  +        wg.OnDragEnter(self, nil, lMimeList, lMimeChoice, lDropAction, lAccept);
  +    finally
  +      lMimeList.Free;
  +    end;
       if not lAccept then
         Effect := DROPEFFECT_NONE
       else
  
positive.code:     OnStartDragDetected is complete. So we need to set FDragActive to False
      here. }
    FDragActive := False;
  end;
  
  constructor TfpgGDIWindow.Create(AOwner: TComponent);
  
negative.code: 
  destructor TfpgGDIApplication.Destroy;
  begin
    if Assigned(FDrag) then
      FDrag.Free;
    UnhookWindowsHookEx(ActivationHook);
    inherited Destroy;
  end;
  