Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Имя родительского контрола / 15 сообщений из 15, страница 1 из 1
29.07.2004, 11:15:33
    #32626672
HornetBlack
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имя родительского контрола
Либо я что-то запамятовал, либо одно из двух :)
Как можно узнать имя контрола в котором находится подотчет из самого подотчета? В Access-XP Parent.Name возвращает имя основного отчета, а в более ранних акцессах возвращалось, если не ошибаюсь, имя контрола.
Если теперь имя контрола невозможно вернуть, то как можно передать информацию о том из какого контрола вызывается подотчет (при наличии нескольких одинаковых подотчетов)?
...
Рейтинг: 0 / 0
29.07.2004, 15:22:36
    #32627444
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имя родительского контрола
Никак. Самый простой способ - завести в подотчете глобальную переменную, из родительского отчета задать значения обоим ее экземплярам, а в самом подотчете проверять ее значение.
...
Рейтинг: 0 / 0
29.07.2004, 16:23:06
    #32627627
HornetBlack
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имя родительского контрола
Спасибо. Значит я еще в своем уме :)
Именно этот вариант я уже и реализовал, хотя и не уверен, что эта кривизна не всплывет в один прекрасный момент...
Блин, когда же мелкомягкие научатся все делать по уму?!... Хотя бы упомянули об этом факте в MSDN...
...
Рейтинг: 0 / 0
29.07.2004, 16:24:44
    #32627633
HornetBlack
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имя родительского контрола
Вдогонку: а поля связи из подотчета также не поймать?
...
Рейтинг: 0 / 0
29.07.2004, 16:42:24
    #32627677
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имя родительского контрола
HornetBlackВдогонку: а поля связи из подотчета также не поймать?
Но это же свойства того же контрола. Значит, точно так же. В эту переменную можно загнать либо имя этого контрола, либо вообще ссылку на него.
...
Рейтинг: 0 / 0
29.07.2004, 17:16:21
    #32627782
АлексейК
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имя родительского контрола
что касается подчиненных форм то там есть два способа
возможно и здесь сгодится?

1

if parent.Sub1.form is ME then ....


2
if parent.Sub1.form.hwnd = ME.hwnd then ...
...
Рейтинг: 0 / 0
29.07.2004, 18:28:35
    #32627975
IgorM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имя родительского контрола
Продублирую и здесь:
Код: plaintext
1.
2.
3.
Dim ctrl As Control
 For Each ctrl In Me.Parent
  If TypeOf ctrl Is SubForm Then If InStr(ctrl.SourceObject, Me.Name) <>  0  Then MsgBox ctrl.Name
 Next
...
Рейтинг: 0 / 0
29.07.2004, 18:34:45
    #32627993
Владимир Саныч
Модератор форума
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имя родительского контрола
IgorMПродублирую и здесь:
Код: plaintext
1.
2.
3.
Dim ctrl As Control
 For Each ctrl In Me.Parent
  If TypeOf ctrl Is SubForm Then If InStr(ctrl.SourceObject, Me.Name) <>  0  Then MsgBox ctrl.Name
 Next

Это не решает поставленную задачу - различить два контрола, у которых одинаковый SourceObject.
...
Рейтинг: 0 / 0
29.07.2004, 18:57:24
    #32628042
IgorM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имя родительского контрола
Согласен. Не решает. Был не прав, прошу простить. :)
...
Рейтинг: 0 / 0
30.07.2004, 08:45:44
    #32628434
HornetBlack
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имя родительского контрола
Владимир Саныч HornetBlackВдогонку: а поля связи из подотчета также не поймать?
Но это же свойства того же контрола. Значит, точно так же. В эту переменную можно загнать либо имя этого контрола, либо вообще ссылку на него.

Да нет, про переменную и так все ясно - что нужно мы всегда сможем передать. Получается, что вложенный объект знать не знает о том, откуда его вызвали (по кр.мере о контроле)?
Сейчас опробую вариант с хэндлом окна, но IMHO он маловероятен...
...
Рейтинг: 0 / 0
30.07.2004, 08:59:25
    #32628458
HornetBlack
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имя родительского контрола
Владимир СанычВ эту переменную можно загнать либо имя этого контрола, либо вообще ссылку на него.

Кстати, как-то плохо представляю вариант с пересылкой через переменную ссылки на сам объект, т.к. в этом случае основной отчет должен менять эту переменную в момент форматирования (инициализации?) каждого подотчета, а такого события у него нет - только форматирование раздела. Я сейчас просто сделал глобальный счетчик. В Open и Page основного отчета его инициализирую, а в Open подотчета инкрементирую и использую для корректировки запроса-источника.
...
Рейтинг: 0 / 0
30.07.2004, 09:07:38
    #32628479
IgorM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имя родительского контрола
Утро вечера мудренее. :) Так подойдет?

Код: plaintext
1.
2.
3.
4.
5.
6.
 On Error GoTo errCatch
 Dim ctrl As Control
 For Each ctrl In Me.Parent
  If TypeOf ctrl Is SubForm Then If ctrl.Report Is Me Then MsgBox ctrl.Name
 Next
errCatch:
 '...
...
Рейтинг: 0 / 0
30.07.2004, 10:05:31
    #32628602
HornetBlack
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имя родительского контрола
АлексейКчто касается подчиненных форм то там есть два способа
возможно и здесь сгодится?
if parent.Sub1.form is ME then ....
if parent.Sub1.form.hwnd = ME.hwnd then ...

Похоже при Open подотчета в контроле он еще не инициализирован (parent.ctrl.Report - недоступен), т.ч. никакие свойства контрола, связанные с подотчетом не вызвать :(
...
Рейтинг: 0 / 0
30.07.2004, 10:09:03
    #32628616
HornetBlack
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имя родительского контрола
IgorMУтро вечера мудренее. :) Так подойдет?

Код: plaintext
1.
2.
3.
4.
5.
6.
 On Error GoTo errCatch
 Dim ctrl As Control
 For Each ctrl In Me.Parent
  If TypeOf ctrl Is SubForm Then If ctrl.Report Is Me Then MsgBox ctrl.Name
 Next
errCatch:
 '...


Увы-увы, см. мой ответ Алексею, а заодно сам проверь этот вариант ;)
...
Рейтинг: 0 / 0
30.07.2004, 10:25:30
    #32628659
HornetBlack
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Имя родительского контрола
Спасибо всем, решение, связаное с перебором контролов, действительно рабочее.
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Имя родительского контрола / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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