Модераторы: MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не работает MS Addin в новом документе Word, Ошибка Addin Word  
:(
    Опции темы
Egor
Дата 12.2.2009, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 21.6.2006

Репутация: нет
Всего: нет



Создан Addin для Word, Excel, Outlook.

Добавлено через 8 минут и 57 секунд
Создан Addin для Word, Excel, Outlook.  Все работает все нормально, но при создании нового документа Word или при открытии старого документа из Word-а, конпка есть но обработки не происходит. он даже в функцию обработки не заходит. 

Что это? smile  и что делать?


PM MAIL   Вверх
cemick
Дата 12.2.2009, 15:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 6.7.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 6



Мало информации, покажи хоть как делаешь.. Какой контекст передаешь при создании объекта фабрики классов? Событие  интерфейса IDTExtensibility2 OnConnection у объекта срабатывает ?

Это сообщение отредактировал(а) cemick - 12.2.2009, 15:06
PM MAIL WWW   Вверх
Egor
Дата 12.2.2009, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 21.6.2006

Репутация: нет
Всего: нет



Инициализация
Код

initialization
  TOfficeAddInFactory.Create(ComServer, TEvfratAddIn, CLASS_EvfratAddIn,
    ciMultiInstance, tmApartment, [ohaExcel, ohaWord, ohaOutlook], Evfrat, 3);

  

Код

procedure TEvfratAddIn.OnConnection(const Application_: IDispatch;
  ConnectMode: ext_ConnectMode; const AddInInst: IDispatch;
  var custom: PSafeArray);
var
  Unk: IUnknown;
begin
  if Application_.QueryInterface(Word_TLB._Application, Unk) = S_OK then begin
    FHostApp := ohaWord;
  end else if Application_.QueryInterface(Excel_TLB._Application, Unk) = S_OK then begin
    FHostApp := ohaExcel;
  end else if Application_.QueryInterface(Outlook_TLB._Application, Unk) = S_OK then begin
    FHostApp := ohaOutlook;
  end else begin
    MessageDlg('This Add-in only supports Word , Outlook and Excel.', mtError,
      [mbOk], 0);
    raise SysUtils.Exception.Create('Initialization failed');
  end;
  FApplication := Application_;
  GApp := Application_ ;
  if (ConnectMode <> ext_cm_Startup) then OnStartupComplete(custom);
end;


В Debug-е у нового документа не входит нив одну из процедур.
Нужны еще какие-нибудь уточнения?
PM MAIL   Вверх
cemick
Дата 12.2.2009, 16:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 6.7.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 6



Цитата

   В Debug-е у нового документа не входит нив одну из процедур.

так и должно быть, так как дебагер о новом процессе твоем ничего и не знает.. 
PM MAIL WWW   Вверх
Egor
Дата 12.2.2009, 16:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 21.6.2006

Репутация: нет
Всего: нет



так как можно решить этот вопро? варианты есть?
PM MAIL   Вверх
cemick
Дата 12.2.2009, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 6.7.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 6



А как ты определяешь, что обработчик не срабатывает??? В OnConnection не вижу что бы создавал кнопку или что то еще.... Что в OnStartupComplete?

Добавлено через 2 минуты и 48 секунд
Не думаю, что его можно отдебажить, он же создается в новом процессе
PM MAIL WWW   Вверх
egorowp
Дата 16.2.2009, 09:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 26.12.2006

Репутация: нет
Всего: нет



Код

procedure TEvfratAddIn.OnStartupComplete(var custom: PSafeArray);
var
  CmdBars: CommandBars;
  Control: CommandBarControl;
  I: Integer;
  clp : TClipBoard ;
  Image1 : TImage ;
  rh : THandle ;
  Image : TImage;
begin
  CmdBars := CommandBars(GetAppCommandBars(FApplication)) ;
  // Need to iterate over CommandBars to see if we are already installed.
  // If not, create a new one.
  for I := 1 to CmdBars.Count do
    if CmdBars.Item[I].Name = 'Евфрат-SQL' then    //PaulsCommandBar
      FBar := CmdBars.Item[I];
  if FBar = nil then
    FBar := CmdBars.Add('Евфрат-SQL', EmptyParam, EmptyParam, EmptyParam);
  // If CommandBar already has a control on it, then assume it's our button,
  // otherwise add a new one.
  if FBar.Controls.Count > 0 then
    Control := FBar.Controls.Item[1]
  else
    Control := FBar.Controls.Add(msoControlButton, EmptyParam,
      EmptyParam, EmptyParam, EmptyParam);
  FButton := CommandBarButton(Control);
  FButton.Caption := 'Регистрировать в Евфрат-SQL';
  FButton.Style := msoButtonIcon;
  begin
    Image := TImage.Create(nil);
    try
      if not Assigned(fmOutlookDm) then
        fmOutlookDm := TfmOutlookDm.Create(nil);

      fmOutlookDM.il.GetBitmap(0,Image.Picture.Bitmap);
      clipboard.Assign(Image.Picture.Graphic) ;
    finally
      Image.Free ;
    end;
  end;

  FButton.PasteFace ;
  FButton.Visible := True;
  FButton.TooltipText := 'Регистрировать в Евфрат-SQL' ;
  // hook up Click event
  FEventSink := TEventSink.Create(CommandBarButtonClick);
  InterfaceConnect(FButton, DIID__CommandBarButtonEvents, FEventSink, FCookie);
  FBar.Visible := True;
  clipboard.Clear;
end;

PM MAIL   Вверх
cemick
Дата 17.2.2009, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 416
Регистрация: 6.7.2006
Где: Санкт-Петербург

Репутация: 1
Всего: 6



я никакого рецидива тут не вижу, который бы не позволял отработать при первом запуске, а при запуске второй копиии приложения не отработать.. 
из Советов: проверь  подключается ли кнопка и связываются с ней обработчики.. пиши в файл трасировку, или выводии сообщения.
PM MAIL WWW   Вверх
egorowp
Дата 19.2.2009, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 11
Регистрация: 26.12.2006

Репутация: нет
Всего: нет



все выше предложеное делал. такое ощущение что у нового документа в addin-е вообще нет обработки на нажатие кнопки - вообще не входит в функцию обработки  smile 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0496 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.