powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Object Is ЭтотЖеСамыйObjectНоВДругойПеременной = Ложь (А97)
9 сообщений из 9, страница 1 из 1
Object Is ЭтотЖеСамыйObjectНоВДругойПеременной = Ложь (А97)
    #32397183
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Драсте...
Угораздило меня маленькую БДшку пообещать под А97. Сколько, оказывается, оно (А97) не умеет по сравнению с А2к!!! Как раньше мирился вообще с этим? :) Ну да я о другом, о проблеме...
Проблема в том, что конструкция "Объект Is Объект" всегда дает "Ложь" (во всяком случае мне и только под А97). Единственное исключение - это когда я одну и туже переменую сравниваю (Переменная1 Is Переменная2). Под А2к, естественно, таких проблем нет, т.к. данный код (в котором вылезла "тихо_молчаливая" ошибка) прекрасно работает...
Всё варианты сравнения уже перепробовал - и просто так, и с предварительным присваиванием, и со скобками, и с матами - нифига! :(
Сравниваю контролы. Сравнивать по именам контролов - здесь не катит (могут возникнуть проблемы). Код сравнения следующий (гляньте, может к А97 особый подход нужен):
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
Public Sub MHTFormHandler_MouseOver(rControl As Control, _
  Button As Integer, Shift As Integer, ByRef Cancel As Integer)
  Dim obj2 As Object 'исключительно с целью поиска обхода _
  (и как Объект, и как Контрол, и как Вариант - пофик)'
  Dim bln 'исключительно с целью поиска обхода'
  Set obj2 = Me!eshpVSplitter 'исключительно с целью поиска обхода'
  bln = (rControl Is obj2) 'исключительно с целью поиска обхода (с разными вариациями)'
  'bln всегда = Ложь, соответственно, следующая процедура запущена никогда не будет!'
  If rControl Is Me!eshpVSplitter _
    Then eshpVSplitter_MouseOver Button, Shift, Cancel
End Sub

Public Sub MHTFormHandler_MouseOut(rControl As Control, _
  Button As Integer, Shift As Integer)
  'а так выглядит аналогичный еще не изуродованный вариант'
  If rControl Is Me!eshpVSplitter _
    Then eshpVSplitter_MouseOut Button, Shift
End Sub
Поставив точку останова вижу в деббагере следующее:
? rControl Is Me!eshpVSplitter
Ложь
? rControl.name
eshpVSplitter
? Me!eshpVSplitter.Name
eshpVSplitter

Что не так? Как лечить? Хде выход?
Спасибо...
...
Рейтинг: 0 / 0
Object Is ЭтотЖеСамыйObjectНоВДругойПеременной = Ложь (А97)
    #32397199
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как эти функции вызываешь?
Сейчас 97-го нет под рукой, но я таких проблем не припомню.

З.Ы. Здарова кстати. Давненько тебя слышно не было. 8 постов осталось?
...
Рейтинг: 0 / 0
Object Is ЭтотЖеСамыйObjectНоВДругойПеременной = Ложь (А97)
    #32397218
(c)VIG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нуф-Нуф, привет. Как дела ?
Это не твой случай ?
TypeOf Operator Does Not Recognize Form Object
...
Рейтинг: 0 / 0
Object Is ЭтотЖеСамыйObjectНоВДругойПеременной = Ложь (А97)
    #32397225
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть в msa 97 такая фигня. Тоже пример
Private Sub btn0_Click()
Dim a As Object
Dim b As Object
Set a = Me.btn0
Set b = Me.btn0
MsgBox (a Is b) ' в msa 97 возвращает False
End Sub

Private Sub btn0_Click()
Dim a As Object
Dim b As Object
Set a = Me.btn0
Set b = a
MsgBox (a Is b) ' возвращает True
End Sub
...
Рейтинг: 0 / 0
Object Is ЭтотЖеСамыйObjectНоВДругойПеременной = Ложь (А97)
    #32397234
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛП, дарова!
Угу... 8 постов... Жаль Пяточка :) На да к проблеме:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
'Откуда растут ноги:'
Private Sub eshpVSplitter_MouseMove(Button As Integer, _
  Shift As Integer, X As Single, Y As Single)
  On Error Resume Next
    Call MHTOnMouseMove(Me!eshpVSplitter, Button, X, Y, _
      MHTGenerateOptionsParametr(MHTcApplicLevel, MHTcLeftButton, _
      MHTcFormHandler,  10 ))
   ...
End Sub

Public Sub MHTOnMouseMove( _
                          CallerControl As Control, _
                          Button As Integer, X As Single, Y As Single, _
                          Options As Long)
  'здесь разные действия... в итоге переданный контрол запоминается в _
  переменной, чтобы позже (по таймеру) вернуться в код приведенный мной _
  в предыдущем посте'
End Sub

'Здесь запускаю процедуру, код которой привел в пред.посте:'
Private Sub RaiseEnterEventForTrackingControl()
Dim Cancel As Integer
On Error GoTo ErrH
  With HTControl
    If (.Options And MHTcFormHandler) Then
    ' Событие через Общий обработчик уровня формы !!! ЗАПУСКАЮ КОД:'
      Call .Control.Parent.MHTFormHandler_MouseOver( _
        .Control, mfGetMouseButtonsState(), mfGetShiftKeysState(), Cancel)
   #If ACCESS97 Then
  ...
End Sub
ЛП, ты не поверишь чего у меня творится на входе процедуры из моего пред.поста Смори:
Данные получены строкой "Debug.Print ObjPtr(rControl) & " = " & ObjPtr(obj2) & " = " & ObjPtr(Me!eshpVSplitter)":
rControl = __obj2__ = Me!eshpVSplitter
12979152 = 12979064 = 12979192
12979108 = 12978972 = 12979148
12979152 = 12979064 = 12979192
12979108 = 12978972 = 12979148
12979152 = 12979064 = 12979192
12979108 = 12978972 = 12979148
12979152 = 12979064 = 12979192
12979108 = 12978972 = 12979148
12979152 = 12979064 = 12979192
12979108 = 12978972 = 12979148
12979108 = 12978972 = 12979148
12979108 = 12978972 = 12979148
12979152 = 12979064 = 12979192
12979152 = 12979064 = 12979192
12979108 = 12978972 = 12979148

Ты можешь мне объяснить, как адрес объекта, контрола Me!eshpVSplitter может меняться (последняя колонка) и как он может не совпадать три ссылки на один и тот же объект?!
Может такое быть из-за использования APIшных таймеров (SetTimer / KillTimer)?
Щас пороюсь здесь...
...
Рейтинг: 0 / 0
Object Is ЭтотЖеСамыйObjectНоВДругойПеременной = Ложь (А97)
    #32397236
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ой... Извиняюсь перед всеми, кроме ЛП (он обойдется) :) Не нажал "предварительный просмотр" перед ответом и не увидел ответов... Приветствую приветствующих :) Читаю...
...
Рейтинг: 0 / 0
Object Is ЭтотЖеСамыйObjectНоВДругойПеременной = Ложь (А97)
    #32397247
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
VIG, не, не оно... Это явно баг 97го... Под 2к всё отлично работает... //и у меня всё корошо :) Правда, со временем сапсем плохо :( и баги 97го нападают :)

Serge Gavrilov (и All), ясно... Какие-нибудь "бубны" не знаешь, случаем? Мне идентифицировать контрол по имени ну никак нельзя :( Эта тема у меня используется для отслеживания выхода мыши за пределы контрола, так вот если я буду идентифицировать текущий "мышиный" контрол по имени контрола, то могут появиться функциональные баги - курсор уже ушел на другой контрол другой формы (контрол с таким же именем на другой форме), а у меня все "нормально", имена контролов совпадают :( Идентифицировать по имени контрола и формы - тоже не вариант, т.к. может быть несколько экземпляров одной и той-же формы... Кругом подстава... Радует, что только под А97, хотя, конечно, не хотелось бы именно в данном случае обла... хм...
Буду думать...
...
Рейтинг: 0 / 0
Object Is ЭтотЖеСамыйObjectНоВДругойПеременной = Ложь (А97)
    #32397253
Фотография Serge Gavrilov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Идентифицировать по имени контрола и формы - тоже не вариант, т.к. может быть несколько экземпляров одной и той-же формы.

Ну, формы можно по hwnd отличать.
Кстати, сравнение форм с использованием Is по моему должно работать и в msa 97
...
Рейтинг: 0 / 0
Object Is ЭтотЖеСамыйObjectНоВДругойПеременной = Ложь (А97)
    #32397257
Фотография Нуф-нуф
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Придумал! Идентифицировать буду по имени контрола и хВнде окна :) (с) Serge Gavrilov, как оказалось :)
По поводу Is для форм попробую, спасибо!
и...
Спасибо всем огромное за "мозговой штурм" :)
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Object Is ЭтотЖеСамыйObjectНоВДругойПеременной = Ложь (А97)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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