Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Влияние способа обращения к полю формы на функциональность / 15 сообщений из 15, страница 1 из 1
21.09.2016, 08:31
    #39312380
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние способа обращения к полю формы на функциональность
Попалось мне тут чужое приложение, где я нашел такую строку:

Код: vbnet
1.
Form_frm_Subform.Form.SaleDate = Me.VDate



Она копирует дату из основной формы в субформу, работает нормально. Я не привык обращаться к субформам таким образом, впрочем и к формам тоже не люблю из-за того, что при переименовании формы все перестает работать, хотя разрабатывать удобнее. Поэтому заменил на более привычное:

Код: vbnet
1.
Me.frm_Subform.Form.SaleDate = Me.VDate



Эта, казалось бы, незначительная замена привела к изменению работы соседнего поля с выпадающим списком, которым управляет класс быстрого поиска - он стал раскрываться когда не нужно при переходе с этого поля в нижележащую подформу, если текущая запись новая, чего никогда не было. Причем список не раскрывается, если переходить в любое другое место или запись не новая. В общем, не суть важно что именно стало происходить, там слишком сложные взаимосвязи, чтобы здесь их описывать, факт, что изменилось поведение класса, который использовался годами в десятках проектов и нареканий на неожиданное раскрытие не было никогда.

Никто не сталкивался с подобным необъяснимым поведением при похожей замене способа обращения?
...
Рейтинг: 0 / 0
21.09.2016, 08:46
    #39312390
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние способа обращения к полю формы на функциональность
MrShinНикто не сталкивался с подобным необъяснимым поведением при похожей замене способа обращения?При первом обращении (приведённый пример) неявно поднимается экземпляр формы, тк обращаются к модулю класса. Форма отсутствует в коллекции открытых форм...
Подобное обращение я считаю недопустимым, вот одно из последствий.
...
Рейтинг: 0 / 0
21.09.2016, 08:47
    #39312391
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние способа обращения к полю формы на функциональность
MrShin, кстати, это отмечено в факе.
...
Рейтинг: 0 / 0
21.09.2016, 08:47
    #39312392
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние способа обращения к полю формы на функциональность
Всегда обращаюсь к формам как к классу.
MrShin
Код: vbnet
1.
Form_NameFom.SaleDate=Me.VDate


Очень удобно и наплевать Форма она или субформа субформа/субформа.
С уважением.
...
Рейтинг: 0 / 0
21.09.2016, 08:49
    #39312393
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние способа обращения к полю формы на функциональность
ROIВсегда обращаюсь к формам как к классу.Очень зря.
...
Рейтинг: 0 / 0
21.09.2016, 08:53
    #39312396
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние способа обращения к полю формы на функциональность
ПанургПодобное обращение я считаю недопустимым, вот одно из последствий.
Так и я считаю! Потому и исправил на правильное, а оно перестало работать. Про поднятие класса знаю, но в данном случае он не поднимается, насколько я понимаю, т.к. новой отдельной формы в виде субформы не появляется, а значение даты в субформе благополучно меняется.

А с проблемами при обращении как классу я много раз встречался, поймать их довольно сложно потом, трассировать проблематично.
...
Рейтинг: 0 / 0
21.09.2016, 09:03
    #39312401
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние способа обращения к полю формы на функциональность
ПанургROIВсегда обращаюсь к формам как к классу.Очень зря.
Да ну!
Просветите меня. (без сарказма).
С уважением.
...
Рейтинг: 0 / 0
21.09.2016, 09:21
    #39312414
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние способа обращения к полю формы на функциональность
ROI,
Все работает замечательно, пока не начинаешь копировать формы под другим названием для создания форм с похожей функциональностью или переменовывать существующие. Чуть проглядел, не переименовал обращение к классу и начинаются чудеса в решете. Короче, это создает проблемы при дальнейшей поддержке.
Я обычно для ускорения разработки пишу обращения к полям другой формы через обращения к модулю, чтобы видеть сразу список полей, а потом заменяю на другие типы, чтобы избавиться от обращений к модулям.
...
Рейтинг: 0 / 0
21.09.2016, 09:28
    #39312420
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние способа обращения к полю формы на функциональность
MrShinА с проблемами при обращении как классу я много раз встречался, поймать их довольно сложно потом, трассировать проблематично.
Да ни каких проблем.
Кого поqмать их?
Трассировка (если вы имели в виду по шаговую трассировку ) на ура.
Вообщем ни каких проблем.
Если вы много раз работали с формами как с классами должны знать, что ни каких проблем нет
(если канечно не считать, что если форма не загружено и к ней есть обращение как к классу то она сагрузиться в память скрытно) но я на это не обращаю внимания так как клиент толстый.
С уважением.
...
Рейтинг: 0 / 0
21.09.2016, 09:32
    #39312428
MrShin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние способа обращения к полю формы на функциональность
ROIесть обращение как к классу то она сагрузиться в память скрытно) но я на это не обращаю внимания так как клиент толстый.
Видимо, не активно пользуетесь классами с событиями от формы. Вот здесь чудеса и начинаются за сценой. Однажды полдня убил, пока нашел причину, с тех пор и не использую.
...
Рейтинг: 0 / 0
21.09.2016, 09:34
    #39312430
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние способа обращения к полю формы на функциональность
MrShinROI,
Все работает замечательно, пока не начинаешь копировать формы под другим названием для создания форм с похожей функциональностью или переменовывать существующие. Чуть проглядел, не переименовал обращение к классу и начинаются чудеса в решете. Короче, это создает проблемы при дальнейшей поддержке.
Я обычно для ускорения разработки пишу обращения к полям другой формы через обращения к модулю, чтобы видеть сразу список полей, а потом заменяю на другие типы, чтобы избавиться от обращений к модулям.
Дык если вы скопировали форму то имя изменилось естествено при обращении при любом нужно быть внимательней.(так что это не аргумент)
>> Я обычно для ускорения разработки пишу обращения к полям другой формы через обращения к модулю,
>>чтобы видеть сразу список полей, а потом заменяю на другие типы, чтобы избавиться от обращений к модулям.
Дак это и есть обращение к классу (то бишь к модулю) ставте точку и вам вываляться все поля все функции и т.д.
С уважением.
...
Рейтинг: 0 / 0
21.09.2016, 09:35
    #39312432
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние способа обращения к полю формы на функциональность
MrShinROIесть обращение как к классу то она сагрузиться в память скрытно) но я на это не обращаю внимания так как клиент толстый.
Видимо, не активно пользуетесь классами с событиями от формы. Вот здесь чудеса и начинаются за сценой. Однажды полдня убил, пока нашел причину, с тех пор и не использую.
Еще как пользую даже свои события создаю все работает.
С уважением.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
08.06.2019, 10:53
    #39824393
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние способа обращения к полю формы на функциональность
Тут намеднись захотелось посмотреть как живет моя прога (в плане потребления памяти и всяких скрытых червячков)
Создал процедуру для вывода списка всех загруженных форм (видимых и скрытых)
И начал препарировать свое приложение.
И малость опупел (внутри жило и плодилась приличное количество скрытых классов форм)
Хотя приложение работает.
Код: 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.
'***********************************************************
'
'Процедура поиска и составления списка открытых форм
'
'***********************************************************
Private Sub roiListForms()

Dim vFormName As String
Dim vForm As Form
Dim vControl As Control
Dim vFormSub As Control

On Error GoTo HandleError
    
    vFormName = ""
    
    For Each vForm In Forms
        vFormName = vFormName & "Форма — '' " & vForm.Name & " ''" & vbCrLf
        For Each vControl In vForm.Controls
            'Если у формы есть подчиненные
            If vControl.ControlType = acSubform Then
                
                vFormName = vFormName & "    Контрол — '' " & vControl.Name & " ''" & vbCrLf
                vFormName = vFormName & "                Форма — '' " & vControl.Form.Name & " ''" & vbCrLf
                
                For Each vFormSub In vControl.Form.Controls
                    'Если у подчиненной есть подчиненные
                    If vFormSub.ControlType = acSubform Then
                        vFormName = vFormName & "                          Контрол — '' " & vFormSub.Name & " ''" & vbCrLf
                        vFormName = vFormName & "                                      Форма — '' " & vFormSub.Form.Name & " ''" & vbCrLf
                    End If
                Next
                
            End If
            
        Next
    Next
    
Me.ctr_Text = vFormName

ExitProc:
    Exit Sub
HandleError:
    MsgBox vbCrLf & Err.Description & _
            vbCrLf & vbCrLf & "  Имя объекта = " & Me.Name & _
            vbCrLf & vbCrLf & "  Имя процедуры = roiListForms", _
            vbCritical, "Ошибка " & Err.Number
    Resume ExitProc
End Sub



Вывод:
очень осторожно пользоваться обращением к форме как к классу
следить за уборкой "мусора" (в ручную)
вести стек вызовов
Так-что начинающим не советую (каюсь был не прав
)
...
Рейтинг: 0 / 0
08.06.2019, 15:00
    #39824428
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние способа обращения к полю формы на функциональность
ROIвнутри жило и плодилась приличное количество скрытых классов форм Всё-таки экземпляров наверное?..
...
Рейтинг: 0 / 0
09.06.2019, 05:10
    #39824538
ROI
ROI
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Влияние способа обращения к полю формы на функциональность
ПанургROIвнутри жило и плодилась приличное количество скрытых классов форм Всё-таки экземпляров наверное?..
да экземпляров (как тараканов) на кухне
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Влияние способа обращения к полю формы на функциональность / 15 сообщений из 15, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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