Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как получить пункт меню ворда Отправить?


Magedon ©   (2007-04-26 15:48:00) 

Как оно там называется внутри, что бы можно было найти через CommandBars.Get_Item(<название>);?


Magedon   (2007-04-27 11:39:00) [1]

Это мой уникальный идентификатор кнопки, который я потом ищу.

Это так А. Тенцер придумал. Я по его статье делаю аддочик.
Вот цитата:

>const
>   // Уникальный идентификатор кнопки. Можно задать любую уникальную
>   // строку. Для ее генерации удобно воспользоваться средствами
>   // Delphi по генерации GUID (Ctrl+Shift+G)
>   // Этот идентификатор понадобится нам для того, чтобы после
>   // создания кнопки иметь возможность ее найти.
>   BUTTON_TAG = '{1A1552DC-9286-11D3-BCA0-00902759A497}';

В исходнике коммент к ней

>// Уникальный идентификатор кнопки. Можно задать любую уникальную строку


Вот ссылочка на статью http://podgoretsky.com/ftp/Docs/Delphi/Tenser/1/index.html


umbra   (2007-04-27 10:19:00) [2]


>  BUTTON_TAG = '{1A1552DC-9286-11D3-BCA0-00902759A497}';

а это та кнопка, которую Вы добавили с помощью аддона?


Magedon   (2007-04-26 19:19:00) [3]

Спасибо.

Я нашел так:

const

 // Это мой идентификатор кнопки
 BUTTON_TAG = '{1A1552DC-9286-11D3-BCA0-00902759A497}';
...

var
 Bar: CommandBar;
 Button: CommandBarButton;

...

 Bar := WordApplication.CommandBars.Get_Item('Send To');
 Button := Bar.FindControl(msoControlButton, EmptyParam, BUTTON_TAG, EmptyParam,  msoFalse) as CommandBarButton;
 // ее нашел
 if Assigned(Button) then
   Button.Delete(msoFalse);


Все вроде работает, только кнопка из меню не удаляется.
Что нужно сделать, чтобы она от туда удалилась?


umbra   (2007-04-26 17:53:00) [4]

Перечисляем все коммандбары в ворде

procedure EnumCommanBars(WordApp: Variant; list: TstrinList);
var
 cmdbar: variant;
 i: integer;
begin
  list.Clear;
  for i := 1 to wordapp.CommandBars.Count do
    begin
       cmdbar := wordapp.CommandBars[i];
       list.Add(cmdbar.Name + ' ' + cmdbar.NameLocal + ' ' + Inttostr(i);
    end;
 cmdbar := Unassigned;
end;

нас интересует главное меню, индекс которого 33, а в нем - подпункт "Файл", индекс которого в главном меню - 1

Перечисляем все пункты меню "Файл"

procedure EnumFileMenuControls(WordApp: Variant; list: TstrinList);
var
 ctrls: variant;
 i: integer;
begin
  list.Clear;
  ctrls := WordApp.CommandBars[33].Controls[1].CommandBar.Controls;
  for i := 1 to ctrls.Count do
        list.Add(ctrls.Item[i].Caption + ' ' + Inttostr(i);
  ctrls := Unassigned;
end;


Magedon   (2007-04-26 17:42:00) [5]

Спасибо, сам подобрал


Magedon   (2007-04-26 16:31:00) [6]

Это я к нему (Ворду) аддон пишу по статье А. Тенцера http://podgoretsky.com/ftp/Docs/Delphi/Tenser/1/ComAddIn.doc.

Только там он лепит кнопочку на панель форматирования, а мне нужно отправлять данные в мою прогу через Файл/Отправить.

Все работает, осталось только контрол с панели убрать и засунуть в меню.


ANB   (2007-04-26 16:12:00) [7]


> Magedon ©   (26.04.07 15:48)

Скорее всего у него такой стиль, что название не поможет. Надо дергать по ID.
И, имхо, проблематично это, управлять вордом через сообщения. Не проще ли подключить его как сервер автоматизации ?


Magedon   (2007-04-26 15:52:00) [8]

И, пожалуйста, убейте спамеров http://www.delphimaster.ru/cgi-bin/forum.pl?id=1177518445&n=0


Наверх

Титульная страница Поиск, карта сайта Написать письмо