Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Visual Basic Новый топик    Ответить
 Свое меню в WebBrowser  [new]
TpaBka
Member

Откуда:
Сообщений: 557
Загружаю в WebBrowser документ Word
Все пока что нравится, но вот только WebBrowser в упор отказывается отображать моё меню (CommandBar) (т.е. вообще какое-то меню).
Причем следующий код отрабатывается без ошибок

Dim DocWord As Word.Document

Set DocWord = Me.WebBrowser1.Document

DocWord.Application.CommandBars.Add Name:="MyMenu", _
        Position:=1, Temporary:=True
DocWord.Application.CommandBars("MyMenu").Visible = True
Открываю параллельно Word, смотрю, меню создается, а вот галочка на отображение = False
Пробовал даже записать макрос в Wordе и запускать из VB –эффект тот же.(False)

Единственное что получилось отобразить в WebBrowser это «Стандартное меню», но мне такой вариант не подходит:
WebBrowser1.ExecWB OLECMDID_HIDETOOLBARS, OLECMDEXECOPT_DONTPROMPTUSER

Может кто-то сталкивался с данной проблемой?
Дайте, пожалуйста, совет что делать.
Спасибо
24 дек 10, 18:18    [9996865]     Ответить | Цитировать Сообщить модератору
 Re: Свое меню в WebBrowser  [new]
Antonariy
Member

Откуда: ☭
Сообщений: 72923
Визуальная часть CommandBars остались в ворде, не обессудь. Да и задумка их не предполагает: раз WebBrowser на форме, зачем ему какие-то меню? Кому надо, сами налепят на той же форме.
24 дек 10, 22:50    [9997797]     Ответить | Цитировать Сообщить модератору
 Re: Свое меню в WebBrowser  [new]
TpaBka
Member

Откуда:
Сообщений: 557
а это ведь работает:
WebBrowser1.ExecWB OLECMDID_HIDETOOLBARS, OLECMDEXECOPT_DONTPROMPTUSER
24 дек 10, 23:54    [9998044]     Ответить | Цитировать Сообщить модератору
 Re: Свое меню в WebBrowser  [new]
Antonariy
Member

Откуда: ☭
Сообщений: 72923
Прячет тулбары?
25 дек 10, 00:17    [9998117]     Ответить | Цитировать Сообщить модератору
 Re: Свое меню в WebBrowser  [new]
TpaBka
Member

Откуда:
Сообщений: 557
Antonariy
Прячет тулбары?

Если спрятан то показывает
и на оборот
25 дек 10, 00:19    [9998123]     Ответить | Цитировать Сообщить модератору
 Re: Свое меню в WebBrowser  [new]
TpaBka
Member

Откуда:
Сообщений: 557
А да только "Сдандартый" можно
Конечно можно наверно сделать типа свой тулбар из "Сдандартого" поудалять ненужные кнопки и повстовлять свои но Я до токго пока ещё не дошол :)
И при выгрузки все вернуть
Я расчитывал на более простое решение
25 дек 10, 00:31    [9998155]     Ответить | Цитировать Сообщить модератору
 Re: Свое меню в WebBrowser  [new]
TpaBka
Member

Откуда:
Сообщений: 557
Короче добился от меню такого вида, который хотел (путем добавления в меню форматирования кнопки печати):
+
Private Sub Form_Load()
Set DocWord = Nothing

Call WebBrowser1.Navigate2(VB.App.Path & DocP)

Set DocWord = Me.WebBrowser1.Document

If DocWord.Application.CommandBars("Formatting").Controls(1).ID <> 2521 Then
WebBrowser1.Document.CommandBars("Formatting").Controls.Add Type:=msoControlButton, ID:= _
       2521, Before:=1, Temporary:=True
End If

End Sub

Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
WebBrowser1.ExecWB OLECMDID_HIDETOOLBARS, OLECMDEXECOPT_DONTPROMPTUSER
WebBrowser1.Document.CommandBars("Standard").Visible = False
End Sub

Private Sub WebBrowser1_OnQuit()
If DocWord.Application.CommandBars("Formatting").Controls(1).ID = 2521 Then
DocWord.Application.CommandBars("Formatting").Controls(1).Delete
End If

WebBrowser1.Navigate "about:blank"
End Sub

Private Sub Form_Unload(Cancel As Integer)
Set DocWord = Nothing
End Sub

Понятно, что очень сыро, но результат разрушает мифы типа:
Antonariy
Визуальная часть CommandBars остались в ворде, не обессудь. Да и задумка их не предполагает: раз WebBrowser на форме, зачем ему какие-то меню? Кому надо, сами налепят на той же форме.


Я кстати натыкался на подобные ответы в форумах по делфи
А чуть не забыл, IE >= 5!
вот что пишут на Майкрософте (http://support.microsoft.com/kb/243058/)

Но у меня появились уже большие сомнения на счет WebBrowser (до него Я уже отказался от OLE контейнера и FramerControl)

И так Вопрос № 2 по WebBrowser
Как убрать это окно диалога
Картинка с другого сайта.
(Этот документ изменился. Сохранить изменения)

Диалог появляется после того, как, отредактировать загруженный документ word в WebBrowserе и затем вызвать метод WebBrowser1.Navigate2 (т.е сменить шаблон документа word )

Интересное наблюдение:
1 Если тупо закрыть форму с отредактированным шаблоном, то диалог не появится.
2 При первом вызове метода Navigate2 диалог тоже не выпадает

Пока что нашел только такие советы:
Править реестр!

Если кто-то знает, как и что править в реестре из VB что бы не было этого окна
или же, как обойтись меньшей кровью,
напишите плиз!
29 дек 10, 04:09    [10014082]     Ответить | Цитировать Сообщить модератору
 Re: Свое меню в WebBrowser  [new]
Игорь Горбонос
Member

Откуда: Днепропетровск
Сообщений: 4236
TpaBka,

В статье с микрософта, говорится о том что
Что следует учесть при использовании элемента управления WebBrowser в приложениях пакета Microsoft Office 2003 или более ранних версий Office
Элемент управления WebBrowser не поддерживает объединение меню. Если элементы меню документа должны выводиться в меню Visual Basic, следует использовать элемент управления OLE-контейнера.
, а судя по расширению doc у тебя именно 2003 или ниже офис.

Теперь к вопросу о диалоге, в той-же статье написано как получать доступ к исходному приложению или получать ссылку при событии WebBrowser1_NavigateComplete2 или
Чтобы получить ссылку на объект документа Office, используйте свойство Document объекта
имея ссылку на документ получаешь ссылку на приложение и говоришь ему что-бы не выводил глупых вопросов манипулируя свойством DisplayAlerts
29 дек 10, 09:25    [10014307]     Ответить | Цитировать Сообщить модератору
 Re: Свое меню в WebBrowser  [new]
TpaBka
Member

Откуда:
Сообщений: 557
К сожалению
DocWord.Application.DisplayAlerts = wdAlertsNone 
- не убирает диалог
Возможно из за того что он принадлежит не ворду а браузеру
А следующий код:
DocWord.Close False
или даже так:
WebBrowser1.Document.Close False
вызывает ошибку 4605 (Метод или свойство недоступны, поскольку данный документ находится в другом приложении)
29 дек 10, 12:50    [10015807]     Ответить | Цитировать Сообщить модератору
 Re: Свое меню в WebBrowser  [new]
Antonariy
Member

Откуда: ☭
Сообщений: 72923
TpaBka
Возможно из за того что он принадлежит не ворду а браузеру
Возможно поможет WebBrowser.Silent = true
Но лучше DocWord.Saved = True.
29 дек 10, 15:19    [10017163]     Ответить | Цитировать Сообщить модератору
 Re: Свое меню в WebBrowser  [new]
TpaBka
Member

Откуда:
Сообщений: 557
Antonariy
Возможно поможет WebBrowser.Silent = true
Но лучше DocWord.Saved = True.

Нет не то
Вообще Мне надо, что бы шаблон ворда по умолчанию не сохранял изменения
29 дек 10, 17:31    [10018369]     Ответить | Цитировать Сообщить модератору
 Re: Свое меню в WebBrowser  [new]
Antonariy
Member

Откуда: ☭
Сообщений: 72923
Вообще-то то. Saved = true не сохраняет документ, а делает отметку, что он сохранен, то есть не изменен с момента последнего редактирования.
29 дек 10, 18:55    [10018869]     Ответить | Цитировать Сообщить модератору
 Re: Свое меню в WebBrowser  [new]
TpaBka
Member

Откуда:
Сообщений: 557
Мда
Чё то не получается у меня избавится от этого гнусного диалога
Может, кому-то пригодится как вариант:
WebBrowser1.Navigate2 ………'- здесь WB начинает смену шаблона и появляется диалог 
SendKeys "{RIGHT}"
SendKeys "{ENTER}"  '-То есть отменяем сохранения в шаблоне 
Кстати видел интересный глюк в 7-е
Команда SendKeys почему-то не хочет работать.
Почему?
4 янв 11, 16:27    [10033380]     Ответить | Цитировать Сообщить модератору
 Re: Свое меню в WebBrowser  [new]
Ципихович Эндрю
Member [заблокирован]

Откуда: Челябинская область
Сообщений: 2711
TpaBka
Мда
Кстати видел интересный глюк в 7-е
Команда SendKeys почему-то не хочет работать.
Почему?


Как то же обсуждали эти две строки
SendKeys "{DELETE}" 'имитация нажатия на кнопку DELETE
SendKeys "{ENTER}" 'имитация нажатия на кнопку ENTER
У меня на ХР тоже не работают и не ругается, просто проходит и ничего не делает, чудо SP3 на свой Ворд 2003 поставил, не помогло!!!!
4 янв 11, 20:56    [10034076]     Ответить | Цитировать Сообщить модератору
Между сообщениями интервал более 1 года.
 Re: Свое меню в WebBrowser  [new]
MsDatabaseru
Member

Откуда: Hobby.MsDatabase.ru
Сообщений: 10939
отключает гнусный диалог

Me.WebBrowser1.Navigate "about:blank"
Me.WebBrowser1.Document.DesignMode = "off"

...

Me.WebBrowser1.Document.write HTML
7 дек 16, 11:06    [19975277]     Ответить | Цитировать Сообщить модератору
Все форумы / Visual Basic Ответить