Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: RaiseEvent для UserDocument Добавлено: 02.07.05 07:39  

Автор вопроса:  kifa
В UserDocument, который имеет название TreeView и имеется компонент TreeView - объявляю событие :
Public Event NodeLoader(ByRef sDoc As String)


Из события компонента TreeView зажигаю свое событие:
Private Sub treSved_DblClick()
Dim sss As String
sss = DocumentLoader(treSved.SelectedItem.Text)
RaiseEvent NodeLoader(sss)
End Sub


В модуле формы своего проекта объявляю переменную для работы с этим событием:

Dim WithEvents Tree As workspace.TreeView

В данном случае TreeView - это UserDocument т.к. после объявления переменной Tree в списке (General) у меня появился раздел с данным именем и событие в списке (Declarations).

Private Sub Tree_NodeLoader(sDoc As String)
imgcboOpened.ComboItems.Add , , sDoc, 2
imgcboOpened.ComboItems.Item(1).Selected = True
End Sub


Пробывал передавать ссылку:
Set Tree=CreateObject("workspace.TreeView")

тогда мой проект начинает видеть Public методы,
но событие у меня почему то не срабатывает.
Помогите пожалуйста!

Ответить

  Ответы Всего ответов: 14  

Номер ответа: 1
Автор ответа:
 kifa



Вопросов: 5
Ответов: 9
 Профиль | | #1 Добавлено: 03.07.05 03:30
Если всетаки кому- о это интересно, то оказывается зажечь событие невозможно если вызываемое событие находится в ActiveX DLL. Или я ошибаюсь?

Ответить

Номер ответа: 2
Автор ответа:
 Nash Bridges



Вопросов: 5
Ответов: 139
 Профиль | | #2 Добавлено: 04.07.05 12:22
Ошибаешься. В чем вопрос то ? У тебя не доходит до вызова события.

Ответить

Номер ответа: 3
Автор ответа:
 kifa



Вопросов: 5
Ответов: 9
 Профиль | | #3 Добавлено: 05.07.05 00:56
Ошибаешься. В чем вопрос то ? У тебя не доходит до вызова события.


Совершенно верно. В моем приложении не срабатывает событие объявленное в UserDocument(TreeView).

Ответить

Номер ответа: 4
Автор ответа:
 Nash Bridges



Вопросов: 5
Ответов: 139
 Профиль | | #4 Добавлено: 05.07.05 01:15
Private Sub treSved_DblClick()
Dim sss As String
' НУ И СМОТРИ ПОЧЕМУ У ТЕБЯ ТУТ НЕ ДОХОДИТ В ОТЛАДЧИКЕ
sss = DocumentLoader(treSved.SelectedItem.Text)
RaiseEvent NodeLoader(sss)
End Sub

Ответить

Номер ответа: 5
Автор ответа:
 kifa



Вопросов: 5
Ответов: 9
 Профиль | | #5 Добавлено: 05.07.05 05:13

Private Sub treSved_DblClick()
Dim sss As String
' НУ И СМОТРИ ПОЧЕМУ У ТЕБЯ ТУТ НЕ ДОХОДИТ В ОТЛАДЧИКЕ
sss = DocumentLoader(treSved.SelectedItem.Text)
RaiseEvent NodeLoader(sss)
End Sub


Нет, в отладчике все нормально. Событие treSved_DblClick() от начала до конца проходит без ошибок. RaiseEvent NodeLoader(sss) не вызывает ошибок. Но в самом приложении, котором объявляется объектная переменная
Dim WithEvents Tree As workspace.TreeView

не срабатывает событие
Private Sub Tree_NodeLoader(sDoc As String)
imgcboOpened.ComboItems.Add , , sDoc, 2
imgcboOpened.ComboItems.Item(1).Selected = True
End Sub
. Вот в чем праблема!

Ответить

Номер ответа: 6
Автор ответа:
 Comanche



Вопросов: 87
Ответов: 459
 Профиль | | #6 Добавлено: 05.07.05 22:36
Значит, нигде нет строчки
Set Tree = New TreeView

Ответить

Номер ответа: 7
Автор ответа:
 kifa



Вопросов: 5
Ответов: 9
 Профиль | | #7 Добавлено: 05.07.05 23:27
Значит, нигде нет строчки

Set Tree = New TreeView


Такой строчки нет. В появляющемся ObjectBrowser после инструкции New нет такого класса. Приходится делать ссылку через:
Set Tree = CreateObject("workspace.TreeView";)
или
Set Tree = GetObject("...\TreeView.vbd";)
. Точки - это путь.

Ответить

Номер ответа: 8
Автор ответа:
 Nash Bridges



Вопросов: 5
Ответов: 139
 Профиль | | #8 Добавлено: 05.07.05 23:39
е мое. а контейнер для этого документа Эксплорер ? ссылка не пустая ли получается ?

Ответить

Номер ответа: 9
Автор ответа:
 kifa



Вопросов: 5
Ответов: 9
 Профиль | | #9 Добавлено: 05.07.05 23:58
е мое. а контейнер для этого документа Эксплорер ? ссылка не пустая ли получается ?


Контейнер для документа WebBrowser.

Ответить

Номер ответа: 10
Автор ответа:
 Nash Bridges



Вопросов: 5
Ответов: 139
 Профиль | | #10 Добавлено: 06.07.05 00:33
Private WithEvents m As UserDocument1

Private Sub WebBrowser1_NavigateComplete2(ByVal pDisp As Object, URL As Variant)
    Set m = pDisp.Document
End Sub

Private Sub m_DblClick()
    MsgBox "m_DblClick"
End Sub


вот так делай. ну поставь там проверки всякие, например, на тип pDisp.
CreateObject & getObject юзать здесь нельзя !

Ответить

Номер ответа: 11
Автор ответа:
 Nash Bridges



Вопросов: 5
Ответов: 139
 Профиль | | #11 Добавлено: 06.07.05 00:34
да чего то я сразу не сопоставил юзердокумент и контейнер и события. башка не варит.

Ответить

Номер ответа: 12
Автор ответа:
 kifa



Вопросов: 5
Ответов: 9
 Профиль | | #12 Добавлено: 06.07.05 01:20
вот так делай. ну поставь там проверки всякие, например, на тип pDisp.


Спасибо большое за помощь! Все работает. Дорогой Nesh Bridges - ты гений. И еще, где можно найти инфу по UserDocument?

Ответить

Номер ответа: 13
Автор ответа:
 Nash Bridges



Вопросов: 5
Ответов: 139
 Профиль | | #13 Добавлено: 06.07.05 01:29
Дорогой Nesh Bridges

немного поправлю: Nash Bridges :)
MSDN видимо. только смотря наколько ты глубоко собрался туда рыть? можно и до интерфейсов дойти, только надо ли? там два или три у контрола реализуются и получается юзердокумент. интересно, зачем ты именно его хочешь использовать? из-за того, что он в эксплорере показывается на 100% площади?

Ответить

Номер ответа: 14
Автор ответа:
 kifa



Вопросов: 5
Ответов: 9
 Профиль | | #14 Добавлено: 06.07.05 02:07
интересно, зачем ты именно его хочешь использовать?


Наверное потому, что он не так много ресурсов ест и мою программу можно будет использовать на машинах 200MHz.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам