Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Не получается WithEvents F As Access.Form / 8 сообщений из 8, страница 1 из 1
07.12.2004, 13:23:49
    #32816413
Иван FXS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается WithEvents F As Access.Form
myForm_Access__cls:
Код: plaintext
1.
2.
3.
4.
Public WithEvents F As Access.Form
...
Private Sub F_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Stop
End Sub

z_Try__bas:
Код: plaintext
1.
2.
3.
4.
5.
6.
Public myForm As New myForm_Access__cls
...
Public Sub a____myForm__TEST()
Dim F As Form
Set F = Application.Screen.ActiveForm
Set myForm.F = F
End_SFP: End Sub
- пачиму активформ не стопает на маусмуве?
...
Рейтинг: 0 / 0
07.12.2004, 13:25:35
    #32816417
Программист-Любитель
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается WithEvents F As Access.Form
Внутри кода класса должно быть явное назначения обработчика события

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
    With ChildGrid
        .OnCurrent = "[Event Procedure]"
        .OnDblClick = "[Event Procedure]"
        .OnDelete = "[Event Procedure]"
        .BeforeDelConfirm = "[Event Procedure]"
        .AfterDelConfirm = "[Event Procedure]"
        .AfterInsert = "[Event Procedure]"
    End With
...
Рейтинг: 0 / 0
07.12.2004, 13:31:55
    #32816435
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается WithEvents F As Access.Form
Если в форме не прописана хоть какая-нибудь реакция на события - то она их и не генерит. Вот такой вот аксес экономный.

К сожалению программно задать обработчик события для MouseMove не получится, т.к. у формы нет св-ва OnMouseMove
Стал быть надо открыть в конструкторе все формы и ручками задать им "[Event Procedure]" для события MouseMove
...
Рейтинг: 0 / 0
07.12.2004, 13:38:25
    #32816455
Иван FXS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается WithEvents F As Access.Form
Есть OnMouseMove, но все равно - не работает!

Код: plaintext
1.
2.
3.
4.
5.
Public Sub a____myForm__TESTTTTT()
Dim F As Form
Set F = Application.Screen.ActiveForm
Set myForm.F = F
myForm.F.OnMouseMove = "[Event Procedure]"
End Sub

- может что другое нужно прописать - вместо "[Event Procedure]"?

А насчет "Вот такой вот аксес экономный" - очлюбопытно, как эта экономность реализована?
Есть объект Access.Form, у него есть событие MouseMove - чего еще?
...
Рейтинг: 0 / 0
07.12.2004, 13:40:10
    #32816463
Victosha
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается WithEvents F As Access.Form
Лох ПозорныйЕсли в форме не прописана хоть какая-нибудь реакция на события - то она их и не генерит. Вот такой вот аксес экономный.

К сожалению программно задать обработчик события для MouseMove не получится, т.к. у формы нет св-ва OnMouseMove
Стал быть надо открыть в конструкторе все формы и ручками задать им "[Event Procedure]" для события MouseMove

чё-то малость зарапартовался.
что за открытия такие - где нет - в каком акцессе?
...
Рейтинг: 0 / 0
07.12.2004, 13:46:31
    #32816479
Иван FXS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается WithEvents F As Access.Form
Уррррра! Все работает - с "[Event Procedure]" - нужно было мне просто до "тела формы" дотянуться!

Вопрос - теоретический - о способе реализации "экономности" - остается ...
...
Рейтинг: 0 / 0
07.12.2004, 14:20:53
    #32816576
Лох Позорный
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается WithEvents F As Access.Form
2 Victosha
чё-то малость зарапартовался.
что за открытия такие - где нет - в каком акцессе?
был неправ
есть OnMouseMove
заблудился слегка :)
перепутал с другими OnЧтотоТам (которых нет)

2 Иван FXS
Вопрос - теоретический - о способе реализации "экономности" - остается ...
Где-то внутри формы сидит код типа такого:
Код: plaintext
1.
2.
If Me.OnMouseMove<>"" Then
    RaiseEvent MouseMove
End If
Что тут может быть не понятно? Как условный оператор реализован?
...
Рейтинг: 0 / 0
07.12.2004, 14:46:04
    #32816651
Иван FXS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не получается WithEvents F As Access.Form
Да, пожалуй соглашусь: "движение мыши" - оно ведь активизирует Private Sub F_MouseMove не непосредственно, а опосредовано какими-то не-VB-шными (в смысле - не видимыми в пределах VB) процедурами ... Почему бы срединих и не быть этой самой проверке значения OnMouseMove - в целях, таксказать, "экономии"...

Есть друга забавная (нетривиальная, ИМХО) фишка: если у меня В ФОРМЕ имеется
Код: plaintext
1.
2.
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Debug.Print "1: " & Now
End Sub

а в myForm_Access__cls:
Код: plaintext
1.
2.
3.
4.
Public WithEvents F As Access.Form
...
Private Sub F_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
Debug.Print "2: " & Now
End Sub

- то видны будут ОБА Debug.Print!
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Не получается WithEvents F As Access.Form / 8 сообщений из 8, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]