powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Обращение элементу подчиненная форма из контекста подчиненной формы
15 сообщений из 15, страница 1 из 1
Обращение элементу подчиненная форма из контекста подчиненной формы
    #39315142
iKaRus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Суть вопроса: Есть ли способ получить ссылку на контрол Subform из подчиненной формы открытой в этом контроле?
По свойству Parent возвращается родительская форма, а нужен элемент родительской формы в котором эта подчиненная форма открыта. Собственно основная задача отловить потерю фокуса элементом управления подчиненной формы при переходе к родительской (в идеале любом выходе за ее пределы) насколько я понял, после тыканий и лазания по форумам единственный сколько-то приемлемый метод - перехват OnExit контрола субформы, но подписаться на него по условиям задачи можно только из контекста контрола самой подчиненной формы.
Это все нужно в рамках экспериментов с плавающей кнопкой.
Подопытный экземпляр во вложении.
...
Рейтинг: 0 / 0
Обращение элементу подчиненная форма из контекста подчиненной формы
    #39315175
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iKaRus,

После имени контрола Subform нужно просто добавить ".Form", после чего становятся доступны все контролы субформы.
...
Рейтинг: 0 / 0
Обращение элементу подчиненная форма из контекста подчиненной формы
    #39315200
iKaRus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MrShin, Спасибо за ответ. Но к сожалению это не совсем то что я имел ввиду. Насколько я понял вы предлагаете прямо обратиться по имени контрола но я могу его не знать, форма может быть открыта как подчиненная в разных контролах. Вероятно я не вполне корректно сформулировал. Задача находясь в подчиненной форме определить в каком контроле она была открыта и получить на него ссылку
...
Рейтинг: 0 / 0
Обращение элементу подчиненная форма из контекста подчиненной формы
    #39315202
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iKaRus,

В свое время у меня был аналогичный вопрос, но применительно к отчетам.
Мне очень помогли.
Посмотрите эту тему Как из отчета узнать имя контрола (подчиненный отчет), в кот. этот отчет лежит? .
...
Рейтинг: 0 / 0
Обращение элементу подчиненная форма из контекста подчиненной формы
    #39315218
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iKaRus,
Я не предлагаю обратиться по имени. Если вы, находясь в подчиненной форме укажете
Код: vbnet
1.
Me.Parent.Form


то получите ссылку на контрол (форму), в котором была открыта подформа. Вот хороший ресурс по ссылкам.
...
Рейтинг: 0 / 0
Обращение элементу подчиненная форма из контекста подчиненной формы
    #39315219
iKaRus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Michelle, Посмотрел, спасибо, да это мой случай. Как я понял идея в переборе всех контролов родительской формы и сравнении в случае если это контрол субформы их объектов с собой по Is. Очень не хочется идти этим путем, проще при инициализации передать контрол доппараметром будет эффективнее. Я надеялся на какой-нибудь более прямой и изящный путь. К сожалению, похоже микрософт прямых путей не любит, - тупик, как с LostFocus`om в субформе...
...
Рейтинг: 0 / 0
Обращение элементу подчиненная форма из контекста подчиненной формы
    #39315222
Фотография Лапух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Michellei...Посмотрите эту тему ...
Как всегда, только ссылка на ссылку, а не конкретная помощь на конкретном примере.
Не каждый может применить чего то к своей БД.
Ссылающемуся это обычно раз плюнуть, а вопрошаюшему может и месяца не хватить, что бы по аналогии сотворить у себя.
Модератор: Та же настоятельна просьба: не занимайтесь провокациями. После того, как я банил Мишелле за то же самое, с вас будет двойной спрос. Обходите друг друга вниманием, пожалуйста. Или перенесите свои священные войны куда-нибудь в приват.

Спасибо.
...
Рейтинг: 0 / 0
Обращение элементу подчиненная форма из контекста подчиненной формы
    #39315224
iKaRus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MrShin, Да, я Вас не правильно понял. Я смотрел этот ресурс, возможно не разобрался, но как раз благодаря нему я пришел к выводу что просто эта задача не решается и решил обратиться сюда. мне нужна ссылка не на родительскую форму а на контрол типа Access.Subform родительской формы в котором в качестве подчиненной формы открыта форма из которой я ее запрашиваю. Почему так сложно - инициализация элемента управления происходит на уровне формы которая может открываться как подчиненная в разных местах. Почему нужен именно Access.Subform при переводе фокуса из подчиненной формы в родительскую не возникает события LostFocus у контрола подчиненной формы, но возникает OnExit у контррола Access.Subform в котором открыта подчиненная форма на которой находится контрол теряющий фокус. Именно этот момент надо отловить.
...
Рейтинг: 0 / 0
Обращение элементу подчиненная форма из контекста подчиненной формы
    #39315231
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iKaRus,
На всякий случай: я часто пользуюсь парой функций под катом для передачи ссылки на форму в текстовом виде вне зависимости от места нахождения формы, первая переводит ссылку на форму в текст, вторая восстанавливает ссылку из текста. Может помочь

Код: vbnet
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.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
Public Function GetFormPath(frmForm As Form) As String
'returns form form path like "frm_Main>frm_SubFormControl>frm_SubSubFormControl"

Dim strRes
Dim frm As Form

Set frm = frmForm

Do
    If IsFormStandalone(frm) Then
        strRes = frm.Name & IIf(strRes = "", "", ">" & strRes)
        Exit Do
    Else
        strRes = frm.Parent.ActiveControl.Name & IIf(strRes = "", "", ">" & strRes)
        Set frm = frm.Parent
    End If
Loop While True

GetFormPath = strRes
End Function

Public Function GetFormByPath(strFormPath As String) As Form
'returns form variable of last subform in path by form path like "frm_Main>frm_SubFormControl>frm_SubSubFormControl"
Dim astrFrm() As String
Dim i As Long
Dim frm As Form

astrFrm = Split(strFormPath, ">")

If UBound(astrFrm) < 0 Then
    GoTo ExitHere
End If
Set frm = Forms(astrFrm(0))

For i = 1 To UBound(astrFrm)
    Set frm = frm.Controls(astrFrm(i)).Form
Next

Set GetFormByPath = frm

End Function


Public Function IsFormStandalone(frm As Form) As Boolean
    Dim frmParent As Form
    
    IsFormStandalone = False
    
    On Error Resume Next
    Set frmParent = frm.Parent
    If Err.Number = 2452 Then
        On Error GoTo ErrorHandler
        Err.Clear
        IsFormStandalone = True
    ElseIf Err.Number <> 0 Then
        GoTo ErrorHandler
    End If

End Function

...
Рейтинг: 0 / 0
Обращение элементу подчиненная форма из контекста подчиненной формы
    #39315242
iKaRus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MrShin, Спасибо. Может пригодиться. А вот, кстати про frm.Parent.ActiveControl - я не подумал - эта идея может сработать, попробую
...
Рейтинг: 0 / 0
Обращение элементу подчиненная форма из контекста подчиненной формы
    #39315369
iKaRus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К сожалению через ActiveControl родительской формы не получилось - в момент инициализации Subform не имеет фокуса, дергать его тоже не выход. Попробовал инициализировать/разрушать кнопку через прямой контроль над событиями контрола из родительской формы - убедился что решение бесперспективное - т.к. субформы могут быть вложены одна в другую и при переходе из субформы с кнопками через одну события все равно не будет - так что смысл дальнейших поисков ссылки на контрол субформы теряется. Похоже придется ловить потерю фокуса и перемещения скролбоксов по таймеру - очень не хотелось.
Результаты экспериментов во вложении.
Всем пытавшимся помочь - спасибо)
...
Рейтинг: 0 / 0
Обращение элементу подчиненная форма из контекста подчиненной формы
    #39315410
MrShin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iKaRusК сожалению через ActiveControl родительской формы не получилось - в момент инициализации Subform не имеет фокуса
Если фокуса нет, то можно определить имя контрола субформы перебрав все контролы родительской формы и найдя субформу с именем в свойстве SourceObject, совпадающим с именем субформы
...
Рейтинг: 0 / 0
Обращение элементу подчиненная форма из контекста подчиненной формы
    #39315430
Фотография __Michelle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MrShiniKaRusК сожалению через ActiveControl родительской формы не получилось - в момент инициализации Subform не имеет фокуса
Если фокуса нет, то можно определить имя контрола субформы перебрав все контролы родительской формы
и найдя субформу с именем в свойстве SourceObject, совпадающим с именем субформыЯ так понимаю, что одна и та же форма становится источником разных контролов,
т. е. , имя в SourceObject будет одно и то же.
Вот здесь 19706232 ссылка на более надежный и универсальный способ.
...
Рейтинг: 0 / 0
Обращение элементу подчиненная форма из контекста подчиненной формы
    #39315448
iKaRus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MrShin, Это не очень красивый путь, но я возможно пошел бы на него если бы в процессе экспериментов сама идея себя не дискредитировала. Это был обходной маневр чтобы отловить LostFocus (при чем это решало только часть проблемы - оставались скроллы, рекордселектор и др.). для того чтобы отловить его таким путем нужен, видимо, еще более длинный обходной путь, а результат (надежный отлов потери фокуса контролом субформы), как выяснилось, даже в рамках частичной задачи этот способ не обеспечивает. Так что в рамках моей задачи этот вариант отпадает.
В качестве компенсации за потраченное время могу предложить свою базу-пустышку. полезна тем что содержит макросы для бэкапа/восстановления объектов базы данных. Отличается от имеющихся тем, что может сохранять информацию о прилинкованых таблицах. Довольно старая - косяков и мусора достаточно, но меня много раз выручала при повреждениях баз, - возможно полезна будет и вам.
Еще раз всем спасибо.
...
Рейтинг: 0 / 0
Обращение элементу подчиненная форма из контекста подчиненной формы
    #39315453
iKaRus
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сорри, не заметил, - была снята ссылка на DAO - исправлено.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Обращение элементу подчиненная форма из контекста подчиненной формы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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