![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как получить пункт меню ворда Отправить?
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