Общие объектные переменные

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Общие объектные переменные

Сообщение Sun07 » 02.08.2006 (Ср) 21:33

Подскажите, как объявить общую объектную переменную? Например, на Public mDoc as WebBrowser1.document компилятор говорит User-defined type not defined?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 02.08.2006 (Ср) 21:37

Хм...
А почему же ты не написал, к примеру, public mDoc as Form1.Width, ну или там public mDoc as Label1.Caption?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Сообщение Sun07 » 02.08.2006 (Ср) 23:03

а как надо?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 02.08.2006 (Ср) 23:04

А как что объявлен WebBrowser1.document?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

DirectXManiac
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1543
Зарегистрирован: 03.11.2005 (Чт) 13:32
Откуда: из DirectX SDK

Сообщение DirectXManiac » 02.08.2006 (Ср) 23:40

Надо объявить переменную такого же типа как и WebBrowser1.Document(смотри Object Browser) и присвоить ей
mDoc = WebBrowser1.Document или
Set mDoc = WebBrowser1.Document
#define ROFL 0xDDDD

Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Сообщение Sun07 » 03.08.2006 (Чт) 0:29

DirectXManiac, ну так как объявить mDoc Public?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 03.08.2006 (Чт) 0:31

Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Сообщение Sun07 » 03.08.2006 (Чт) 9:46

GSerg, эта ссылка выкидывает эту страницу, которую мы сейчас лицезреем

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 03.08.2006 (Чт) 9:51

Не на страницу, а на конкретный пост.
Изображение

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 03.08.2006 (Чт) 9:51

Sun07 писал(а):GSerg, эта ссылка выкидывает эту страницу, которую мы сейчас лицезреем


не просто страницу, а самое тебе нужное место страницы
Весь мир матрица, а мы в нем потоки байтов!

Nicky
Постоялец
Постоялец
 
Сообщения: 519
Зарегистрирован: 12.08.2004 (Чт) 12:14

Сообщение Nicky » 03.08.2006 (Чт) 10:48

Да Public mDoc as HTMLDocument !

marvan
Бывалый
Бывалый
 
Сообщения: 269
Зарегистрирован: 22.06.2004 (Вт) 13:26
Откуда: Москва

Сообщение marvan » 03.08.2006 (Чт) 10:51

Код: Выделить всё
Dim mDoc As MSHTML.IHTMLDocument 'или MSHTML.HTMLDocument
Set mDoc = WebBrowser1.document

Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Сообщение Sun07 » 03.08.2006 (Чт) 16:33

Да ну что же это такое! Имеем:

Private Sub Form_Load()

Set mDoc = WB.document
mDoc.write sPageHTML
Set mDiv = wbDoc.All.un99
mDiv.innerHTML = sBodyHTML

End Sub

mDoc и mDiv будут существовать только в процедуре Form_Load, а мне надо, чтобы они были общие и вызывать mDiv.innerHTML = sBodyHTML в любой проце! Вышеприведённые ответы приводят к ошибке на строке mDoc.write sPageHTML "Object required"

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 03.08.2006 (Чт) 17:27

Sun07
Объяви переменные mDoc и mDiv в модуле формы или в отдельном модуле, смотря какая их видимость тебе нужна.
Если всё делать своими ручками, они скоро отвалятся !

Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Сообщение Sun07 » 03.08.2006 (Чт) 17:32

Kovu, пример приведи, плиз

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 03.08.2006 (Чт) 17:36

....***....
Код: Выделить всё
Rem Это в самом начале кода формы
Option Explicit
Dim mDoc as MSHTML.IHTMLDocument, mDiv ' Эти переменные будут доступны из любой процедуры формы
Rem Или в модуле
Option Explicit
Public mDoc as MSHTML.IHTMLDocument, mDiv ' Тогда переменные будут доступны из кода всего проекта

:roll:
Если всё делать своими ручками, они скоро отвалятся !

Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Сообщение Sun07 » 03.08.2006 (Чт) 17:42

Kovu, а как быть с этим?
Вышеприведённые ответы приводят к ошибке на строке mDoc.write sPageHTML "Object required"

Kovu
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 924
Зарегистрирован: 29.04.2005 (Пт) 17:38

Сообщение Kovu » 03.08.2006 (Чт) 17:48

*Temporarily gains skill 'Telepatia'*
А что такое sPageHTML?
Если всё делать своими ручками, они скоро отвалятся !

Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Сообщение Sun07 » 03.08.2006 (Чт) 17:51

строковая переменная. Там ругается на Write. Если писать Set mDoc... в проце Form_Load() то всё норм, объявления объектных переменных как Public приводят к этой ошибке.

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 03.08.2006 (Чт) 18:30

Сначала нужно сделать куда-нибудь navigate.
Лучший способ понять что-то самому — объяснить это другому.

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 03.08.2006 (Чт) 18:37

Обычно делают about:blank... Но мне лично неясно, почему инициализация происходит только после этого?
Изображение

Antonariy
Повелитель Internet Explorer
Повелитель Internet Explorer
Аватара пользователя
 
Сообщения: 4824
Зарегистрирован: 28.04.2005 (Чт) 14:33
Откуда: Мимо проходил

Сообщение Antonariy » 03.08.2006 (Чт) 19:26

Потому что приватная переменная, скрывающаяся за свойством, скорей всего так же объявлена как IHTMLDocument, а ее не объявишь как as New. Документ создается, когда броузер получает хоть какой-то html-текст, который можно ему передать.
Лучший способ понять что-то самому — объяснить это другому.

AntonGV
Бывалый
Бывалый
 
Сообщения: 234
Зарегистрирован: 24.05.2006 (Ср) 12:10
Откуда: г. Пермь

Сообщение AntonGV » 03.08.2006 (Чт) 19:33


GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 03.08.2006 (Чт) 19:58

Все ответившие в топике, вы сами таки пробовали открывать object browser и смотреть, http://bbs.vbstreets.ru/viewtopic.php?p=6622144#6622144 ?
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Сообщение Sun07 » 03.08.2006 (Чт) 19:59

AntonGV, я оттуда это и взял. Кроме того, у меня при закрытии запущенной проги стало выскакивать окно с предложением подключиться к инету или работать автономно (страница не м.б. отражена в автономном режиме), почему - не пойму

Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Сообщение Sun07 » 03.08.2006 (Чт) 20:00

Antonariy писал(а):Потому что приватная переменная, скрывающаяся за свойством, скорей всего так же объявлена как IHTMLDocument, а ее не объявишь как as New. Документ создается, когда броузер получает хоть какой-то html-текст, который можно ему передать.

Что делать?Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!Я идиот! Убейте меня, кто-нибудь!??

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 03.08.2006 (Чт) 21:09

Изображение

Sun07
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 355
Зарегистрирован: 17.02.2006 (Пт) 21:27

Сообщение Sun07 » 03.08.2006 (Чт) 21:39

Тёмыч, я тебя так любил, а ты мне замечание... Если вас раздражают некоторые вопросы новичков, кто в этом виноват? Всегда проще спросить, чем искать (время+нервы+деньги). Иначе меня бы здесь не было. Тем более, что решения мне так и не дали на этом топике. Только выводы :)

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 03.08.2006 (Чт) 21:51

Тебе дали решение - http://bbs.vbstreets.ru/viewtopic.php?p=6622144#6622144
Трижды.
Но тебе оно не надо.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 03.08.2006 (Чт) 23:21

GSerg писал(а):Все ответившие в топике, вы сами таки пробовали открывать object browser и смотреть, http://bbs.vbstreets.ru/viewtopic.php?p=6622144#6622144 ?

Там он как object... То есть известно, что он поддерживает IUnknown и IDispath. Но реально тот объект, что возвращает нам эта пропертя имплементит ещё и HTMLDocument (если там HTML страница). Но то что мы заглянем в ObjectBroser нам ничего не даёт. Зато многое нам даёт http://msdn.microsoft.com/workshop/browser/webbrowser/reference/properties/document.asp:
msdn писал(а):When the active document is an HTML page, this property provides access to the contents of the HTMLDocument Object Model (DOM). Specifically, it returns an HTMLDocument object reference. The HTMLDocument object is functionally equivalent to the HTMLdocument object used in HTML page script. It supports all the properties and methods necessary to access the entire contents of the active HTML document.

Microsoft Visual Basic programs that early bind to the HTMLDocument object can reference it through the IHTMLDocument, IHTMLDocument2, and IHTMLDocument3 interfaces.

When other document types are active, such as a Microsoft Word document, this property returns the document automation object of that document. For Word documents, this would be the Document object. For more information on the Microsoft OfficeDOM, refer to the Microsoft Office Developer Center .


Вот, кстати, и ответ на вопрос, почему нужно Navigate-там может (а изночально и нет) не быть HTM-страницы...
Изображение

След.

Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: AhrefsBot и гости: 13

    TopList