отслеживание события на предке

Создание, использование компонентов ActiveX
Immortal!
Начинающий
Начинающий
 
Сообщения: 3
Зарегистрирован: 01.11.2004 (Пн) 7:10

отслеживание события на предке

Сообщение Immortal! » 15.01.2005 (Сб) 17:39

Подскажите кто знает как мне из UserControl'a отследить нажатие кнопок мыши на родителе.

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

Сообщение tyomitch » 16.01.2005 (Вс) 2:48

Через сабклассинг WM_COMMAND
Изображение

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 16.01.2005 (Вс) 8:58

Если родитель - гарантировано - VB форма, можно через обычные Event'ы. Наверное...
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

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

Сообщение tyomitch » 16.01.2005 (Вс) 10:09

Да ну? Dim WithEvents Parent As Form, что ли?
Тогда-то циклическая ссылка точно будет ;-)
Изображение

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 16.01.2005 (Вс) 10:50

Ну почему :?: :?: :?:
Код: Выделить всё
Option Explicit
Dim WithEvents mParent As VB.Form

Private Sub mParent_Click()
Beep
End Sub

Private Sub UserControl_Resize()
If mParent Is Nothing Then
    If Ambient.UserMode Then
        Set mParent = UserControl.Parent
    End If
End If
End Sub

:!:
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

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

Сообщение tyomitch » 16.01.2005 (Вс) 15:25

Потому что на родителе есть ссылка на этот контрол.
И потому что в результате оба становятся неубиваемые :-)
Изображение

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 16.01.2005 (Вс) 17:22

Так все работает. По твоему, если в объекте1 есть ссылка на объект2, и в объекте2 есть ссылка на объект1 они оба станояться неубиваемые?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

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

Сообщение GSerg » 16.01.2005 (Вс) 17:25

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

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 16.01.2005 (Вс) 18:13

Почему? В моем воде есть процедура ручного разрыва? Если да, то где, если нет - то почему работает?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

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

Сообщение GSerg » 16.01.2005 (Вс) 18:16

Когда я делаю процедуры разрыва, я делаю их friend. Не вижу причин, по которым создатели Word сделали бы их публичными. Это раз.
Два: они могут спокойно вызывать Release, пока объект не сдохнет. Мы не можем, без предварительной подготовки.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 16.01.2005 (Вс) 18:34

При чем здесь Word?
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

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

Сообщение GSerg » 16.01.2005 (Вс) 18:35

В моем воде

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

ANDLL
Великий гастроном
Великий гастроном
Аватара пользователя
 
Сообщения: 3450
Зарегистрирован: 29.06.2003 (Вс) 18:55

Сообщение ANDLL » 16.01.2005 (Вс) 18:48

коде.
Однако, вернемся к старой теме.
Гастрономия - наука о пище, о ее приготовлении, употреблении, переварении и испражнении.
Блог

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

Сообщение tyomitch » 16.01.2005 (Вс) 20:24

ANDLL писал(а):Если да, то где, если нет - то почему работает?

Работает. Не знаю, почему :roll:
Не должно...

Но это в любом случае привязка контрола к конкретному контейнеру. Даже в VB5 его уже нельзя будет юзать.

А так, похоже, приемлемый способ... Но только "нечистый" он. Того и гляди, где-нибудь что-нибудь скособочится из-за этих циклических ссыло :-)
Изображение

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

Сообщение GSerg » 16.01.2005 (Вс) 20:45

Думается мне, дело в унаследованной реализации обработчика этого дела. Ведь у usercontrol есть свойство parent, и это не приводит к циклическим ссылкам. Вернее приводит, но есть встроенный механизм противоборства.
А вот на классах это уже не прокатит.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

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

Сообщение tyomitch » 16.01.2005 (Вс) 21:31

Думается мне, что дело не в этом, а в том, что форма не полностью управляется ссылками, а вместо этого имеет дублирующийся механизм Load/Unload и Initialize/Terminate.
Т.е. код ANDLL счётчик ссылок формы, безусловно, увеличивает, но ей это побоку - она уничтожается не когда исчезнут ссылки, а когда захочет сама ;-)
С классами это, безусловно, не прокатит. И это хорошо :-)
Изображение


Вернуться в Компоненты

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

    TopList