Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / несколько экз форм. обновление родительских форм по цепи / 25 сообщений из 28, страница 1 из 2
04.08.2016, 15:56
    #39286391
Игортан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
несколько экз форм. обновление родительских форм по цепи
Господа, снова к вам.
Осваиваю, наконец, работу с классами и работу с несколькими экз форм.
При клике на Кн. Открыть форму открываю ее экземпляр.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Set MyProject = New Form_Project_Add
MyProject.MyClsProject.TypeWork = 1 ' параметр в класс
MyProject.MyClsProject.MyLineId = 0  ' параметр в класс
MyProject.MyClsProject.clsStart MyProject  ' присваиваю экз формы и перехватываю события
' также заношу эту форму в глобальную коллекцию экземпляров этой формы. Для того, чтобы не закрылась после выхода из функции

'смотреть описание после кода
MyProject.MyClsProject.PreviosForms = myCol
MyProject.visible = True


В Form_Open открываемой формы открываю класс для работы такой формы

вот тут у меня возникла идея, чтобы в поднятый из экземпляра формы класс передавать "родительские формы", как бы цепочку до самого начала. Решил сделать на коллекции. т.е. будет последовательное добавление экз форм в коллекцию в цепочке. после изменения в каком то экземпляре - вниз по цепочке обновить зависимые данные
Создал начальную коллекцию и при старте "основной" формы саму себя добавляю в коллекцию
и передаю "начальный набор форм(ы)" коллекцией в класс открытого экземпляра:
MyProject.MyClsProject.PreviosForms = myCol

В классе есть своя private коллекция.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
' установка коллекции форм, породивших этот экземпляр формы
' и добавление рабочего экземпляра формы в коллекцию
Public Property Let PreviosForms(ByVal colForms As Collection)
    Set m_colPreviosForm = colForms
    m_colPreviosForm.Add m_MyFormId, Str(m_colPreviosForm.Count + 1)
'    MsgBox m_colPreviosForm.Count
End Property



Передается коллекция "родительских форм" нормально. После отработки PreviosForms в коллекции класса 2 формы. Основная и сама она(для возможной передаче следующей форме)
одна беда. После возврата кода в начальную форму - в:
MyProject.visible = True
В основной форме в НАЧАЛЬНОЙ КОЛЛЕКЦИИ myCol -УЖЕ ДВЕ 2 ФОРМЫ, как и в коллекции класса.

Собственно. Что я делаю не так? Почему в Первую(начальную) коллекцию попадает/присваивается набор из класса, в который передавалась эта коллекция?

Брал инф. старое обсуждение и здесь
И параллельно обращаюсь еще к nord-woolf, Программист-Любитель, Вакшуль Сергей и др. участникам) с вопросом.
А как вы обновляете формы по цепочке после изменений в экземпляре.
...
Рейтинг: 0 / 0
04.08.2016, 18:56
    #39286542
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
несколько экз форм. обновление родительских форм по цепи
Игортан... А как вы обновляете формы по цепочке после изменений в экземпляре.
Каждое звено цепочки имеет ссылки с подпиской на порожденные им звенья,
каждое звено генерирует соответствующие событие,
все подписавшиеся обрабатывают его в своих нуждах
и транслируют дальше по цепочке, генерируя собственные события.

Однако, после того разговора с Сергеем Вакшуль, я все-таки поборол лень,
и переделал так, чтобы все поднятые инстансы, даже в других цепочках,
"слушали" события изменений.

В прицепе простенький пример, дабы показать суть.
зы: макрос autoexec в наличии.
...
Рейтинг: 0 / 0
04.08.2016, 19:59
    #39286582
Игортан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
несколько экз форм. обновление родительских форм по цепи
Predeclared,

Спасибо за пример.
Не знал, что обращение к свойству класса, поднимает его экзмпляр
Set AltService = AlterationService.Instance

В вашем примере еще пока не разобрался до конца. Для меня новый принцип работы...
Вижу, что идет обновление всех ЭКЗЕМПЛЯРОВ одной формы.
Я же хотел настроить работу так, когда из форма1 открывается экз. формы2, потом из экз. формы2 открывается экз. формы3.
Получается цепочка:
Форма1 - экз Формы2 - экз Формы3
И вот при изменении в экз Формы3 - автоматом обновить измененные данные в экз Формы2 и Форма1.
По факту думал обозвать зависимые поля в экз Формы2 и Форма1 одинаково.
И потом (в случае с коллекцией) сделать циклом по коллекции в классе:
m_colPreviosForm(i).НазваниеПоля.Requery

Или я в принципе что то не так в уме складываю и ваш принцип укладывается в мою схему?
...
Рейтинг: 0 / 0
04.08.2016, 20:25
    #39286604
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
несколько экз форм. обновление родительских форм по цепи
Игортан... обращение к свойству класса, поднимает его экзмпляр...
Это утверждение валидно не для всех описаний классов.

Игортан...Я же хотел настроить работу так, когда из форма1 открывается экз. формы2, потом из экз. формы2 открывается экз. формы3.
Получается цепочка:
Форма1 - экз Формы2 - экз Формы3...

Я выше словами описал как делать цепочки.
Только в этом случае три нюанса имеются:
1. Цепочка может быть разорвана, и, следовательно, не все звенья цепочки будут вовремя обновлены.
2. Обновления возможны только в одну сторону.
3. Экземпляры в других цепочках не будут обновлены.
...
Рейтинг: 0 / 0
04.08.2016, 20:59
    #39286628
Игортан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
несколько экз форм. обновление родительских форм по цепи
Тоже понял. Не помню только как точно называется))) дескриптор, что ли, окна..
Но тут же поднятый экземпляр сможет обратиться только к "пред окну", а "пред пред окно"?
или ловить событие по принципу Predeclared в этом "пред окне" и передавать дальше?.

Ведь цепочка может состоять и из 5 последовательно открытых инстансов разных форм.
Это я для понимания цепочку из 3 описал...


PredeclaredЯ выше словами описал как делать цепочки.
Да, поэкспериментировал, открывать из инстанса другую форму(экз). Нормально обновляются.

1. Кстати, я про это и думал, когда коллекцию придумывал... А так, цепочку прогнал сверху вниз. Нету экземпляра, ошибку обработал и дальше пошел и так до конца цепочки.
2. Не совсем понял. При пробе на вашей базе - обновляются все инстансы, не зависимо в каком экземпляре изменения сделал.
3. Тоже не понял. Посмотрите ваш вариант с моей пробой... Вроде все обновляет.
Другое дело, что источник один.... Кликните по Кнопке6 в открытой форме
...
Рейтинг: 0 / 0
04.08.2016, 21:15
    #39286633
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
несколько экз форм. обновление родительских форм по цепи
Давай отделим мух от котлет:

Пример, который я выложил ранее, не имеет отношения к цепочкам ровном счетом никакого.
Он аккурат обратный. Ему цепочки фиолетово.

Про цепочки я писал здесь: 19501369 , аккурат до слова "Однако".
...
Рейтинг: 0 / 0
04.08.2016, 23:06
    #39286708
Игортан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
несколько экз форм. обновление родительских форм по цепи
Predeclared,

А, я по ходу начал понимать.
Получается, что при 100500 поднятых инстансах они все обновляются.
Пойду разбирать ваш принцип обновления. Пока понимаю больше интуитивно, чем знаниями.
Я так понимаю, если остальные молчат, то этот пример или самый распространённый или самый адекватный....
...
Рейтинг: 0 / 0
04.08.2016, 23:26
    #39286724
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
несколько экз форм. обновление родительских форм по цепи
Игортан... этот пример или самый распространённый или самый адекватный....
Ни то, ни другое.
На больших объемах данных одномоментное обновление нескольких "тяжелых" источников может заметно притормаживать.
Да и в случае пользования MS SQL сервера я бы поостерегся такой методы.
:)
...
Рейтинг: 0 / 0
04.08.2016, 23:33
    #39286734
Игортан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
несколько экз форм. обновление родительских форм по цепи
Predeclared,

В этом я с вами полностью согласен.
Простое описание:
Есть список проектов. Из нее вызываю др форму для редактирования какого то проекта.
В форме редактора проекта увидел, что фио менеджера написано с ошибкой. Вызываю форму редактирования менеджера и редактирую.
Так вот.
После закрытия формы редактирования менеджера должны обновиться данные менеджера в форме проекта и основной форме, где все проекты видны
...
Рейтинг: 0 / 0
04.08.2016, 23:39
    #39286737
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
несколько экз форм. обновление родительских форм по цепи
Если приложение настольное одно пользовательское, то сгодится.

Для других вариантов можно продумать последовательное обновление, в порядке получения фокуса инстансами форм.
...
Рейтинг: 0 / 0
04.08.2016, 23:45
    #39286743
Игортан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
несколько экз форм. обновление родительских форм по цепи
Predeclared,

Сейчас это простенькая базка, на пяток форм. Просто на ней решил обкатывать работу классами, именно объектами, и сюда же работа с несколькими экземплярами объектов...

А вообще это наработка опыта для многопользовательских баз. С вариантом работы с sql серверами.
Скажем база, дающая больше свободы пользователю
...
Рейтинг: 0 / 0
05.08.2016, 02:04
    #39286821
Вакшуль Сергей
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
несколько экз форм. обновление родительских форм по цепи
Добрый день,

ИгортанЯ так понимаю, если остальные молчат, то этот пример или самый распространённый или самый адекватный....
Пример Predeclared как всегда вполне адекватный.
А я молчу потому, что сказать то особо нечего, во всяком случае касательно Access.

Зато в приложении на C# тему отражения обновлений во всех открытых формах обыграл по полной. Хотя целесообразность этой затеи под вопросом. Да, после изменения/удаления/добавления записи все трансформации будут отображены во всех соотв.открытых формах. Но задаю себе вопрос, а почему важно тиражировать именно мои изменения, а чужие нет. И чувствую непоследовательность позиции.
Тем не менее, реализовал, причем в полной мере. Полностью описывать смысла нет.
Если коротко,
Создал класс FormUpdateManager, оснастил методами:
RegisterListener(string tableName, DataChangeEventHandler dataChangeEventHandler)
InformListeners(string tableName, ChangeType changeType, int id, IntPtr? handle)

Наборы данных(в Access - формы) регистрируются на прослушивание(RegisterListener). Как только какой-то набор генерирует событие изменения/удаления/добавления данных, то все зарегистрированные на прослушивание наборы извещаются(InformListeners). Событие сообщает набору имя таблицы, в которой произошли изменения. Если текущий набор тоже построен на основе этой таблицы, то его данные требуют обновления и будут обновлены.
Т.к. там .Net, то я не обновляю весь набор, а только ту запись, которая этого требует.
Если текущая запись слушающего набора находится в состоянии редактирования, то она не обновляется, а остается в состоянии редактирования.
Ведь код, определяющий поведение набора при обновлении вынесен в отдельный класс. Таких класса два: Grid(в Access - лент.форма) и Card(в Access - простая форма, карточка).

Да, сделал. Да, работает. Практически оптимально. Но как я уже сказал, вопрос, а нужно ли это вообще - открыт.
...
Рейтинг: 0 / 0
05.08.2016, 13:44
    #39287167
Игортан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
несколько экз форм. обновление родительских форм по цепи
Вакшуль Сергей,

Спасибо за ответ.
После вчерашнего общения более менее понимаю, что вы описали.

Есть над чем подумать...

А вот не подумайте, что уперся, но хочу вернуть внимание первому посту.
Почему при передаче классу коллекции
Код: vbnet
1.
MyProject.MyClsProject.PreviosForms = myCol


и отработке кода
Код: vbnet
1.
2.
3.
4.
5.
Public Property Let PreviosForms(ByVal colForms As Collection)
    Set m_colPreviosForm = colForms
    m_colPreviosForm.Add m_MyFormId, Str(m_colPreviosForm.Count + 1)
'    MsgBox m_colPreviosForm.Count
End Property



в коллекции myCol, появляется вторая форма (экз формы из класса)

Использую ByVal. По моему он не возвращает результат в вызывающую функцию....

Как так то? Чего я не знаю?
...
Рейтинг: 0 / 0
06.08.2016, 17:33
    #39287729
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
несколько экз форм. обновление родительских форм по цепи
Игортан... Использую ByVal. По моему он не возвращает результат в вызывающую функцию....

У меня:
1. есть "книжное" объяснение этому
2. есть пример-исключение, которому у меня нет "книжного" объяснения.

Итак:
1. Из справки А2003: "Object variables are stored as 32-bit (4-byte) addresses that refer to objects."

Передавая ByVal ссылку на объектную переменную, создается копия переменной,
которая один фиг указывает на тот же адрес памяти, что и сама ссылка.
Таким образом, полученный процедурой ByVal аргумент ссылается на тот же самый объект.

2. Теперь о грустном. :)
Если, например, создать панель инструментов с кнопкой,
и в процедуре обработки события кнопки посмотреть указатель на объект своей переменной,
и указатель ссылки, переданной в процедуру обработки события,
то это оказывается две большие разницы.
Виновата ли в этом передача ByVal или что иное, мне не ведомо.

Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
Private cb As Office.CommandBar
Private WithEvents cbb As Office.CommandBarButton

Private Sub Class_Initialize()
    Set cb = CommandBars.Add("My", msoBarFloating, , True)
    Set cbb = cb.Controls.Add(1, , , , True)
    cb.Visible = True
End Sub

Private Sub cbb_Click(ByVal Ctrl As Office.CommandBarButton, CancelDefault As Boolean)
    Debug.Print ObjPtr(Ctrl), ObjPtr(cbb)
End Sub



И я таки так и не понимаю, зачем вы передаваете ссылку на коллекцию одного класса в описание другого класса.
...
Рейтинг: 0 / 0
06.08.2016, 20:32
    #39287743
ByVal,
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
несколько экз форм. обновление родительских форм по цепи
Король В.И. VB 6.0, VBA 6.0Что означает передача по ссылке или по значению, для аргументов тех типов, которые по своей природе являются ссылочными, например для объектных переменных?
.. : если объектная переменная передаётся по значению, то она не может быть изменена, т.е., даже если в теле процедуры присвоить ей ссылку на другой объект, по возвращении из процедуры, исходная переменная будет связана со старым объектом, на который она ссылалась до вызова.
Соответственно, при передаче по ссылке, можно связать эту переменную с новым объектом и по возвращении из процедуры, переменная будет ссылаться уже на новый объект.
При этом, надо отметить, что изменение свойств объекта, вне зависимости от того, как был он передан, происходит одинаково, в том смысле, что все модификации свойств объекта, сделанные в теле процедуры, фиксируются в исх.объекте.
...
Рейтинг: 0 / 0
06.08.2016, 20:52
    #39287746
ByVal,
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
несколько экз форм. обновление родительских форм по цепи
Predeclared2. Теперь о грустном. :)
Король В.И. VB 6.0, VBA 6.0На самом деле ObjPtr возвращает адрес интерфейса, инициализированного при создании ссылки на объект.

тут Бенедикт "более лучше" проходится по вопросу:
БенедиктТеперь, быть может не совсем плавно, перейдём к вопросу – как это, результат ObjPtr() разный, а объект (экземпляр компонента) один? Или наоборот, запросили указатели на разные интерфейсы у экземпляра компонента, и получили одинаковые значения этих указателей? Если совсем кратко, такие особенности – детали реализации компонента, и не более, на которые нельзя (формально) закладываться. Теперь подробнее.
...
Рейтинг: 0 / 0
06.08.2016, 21:15
    #39287751
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
несколько экз форм. обновление родительских форм по цепи
ByVal,

Сенкс большое!

Но вот что меня еще "морозит", что (по примеру п.2)
ссылки не сознаются в родстве,
Debug.Print Ctrl Is cb
False
хотя типизированы переменные вроде одинаково.
...
Рейтинг: 0 / 0
06.08.2016, 21:44
    #39287759
Игортан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
несколько экз форм. обновление родительских форм по цепи
убили...
PredeclaredПередавая ByVal ссылку на объектную переменную, создается копия переменной,
которая один фиг указывает на тот же адрес памяти, что и сама ссылка.
Таким образом, полученный процедурой ByVal аргумент ссылается на тот же самый объект.
и это был контрольный в голову
Король В.И. VB 6.0, VBA 6.0Что означает передача по ссылке или по значению, для аргументов тех типов, которые по своей природе являются ссылочными, например для объектных переменных?
.. : если объектная переменная передаётся по значению, то она не может быть изменена, т.е., даже если в теле процедуры присвоить ей ссылку на другой объект, по возвращении из процедуры, исходная переменная будет связана со старым объектом, на который она ссылалась до вызова.
Соответственно, при передаче по ссылке, можно связать эту переменную с новым объектом и по возвращении из процедуры, переменная будет ссылаться уже на новый объект.
При этом, надо отметить, что изменение свойств объекта, вне зависимости от того, как был он передан, происходит одинаково, в том смысле, что все модификации свойств объекта, сделанные в теле процедуры, фиксируются в исх.объекте.

По факту получается, что передавая коллекцию(как объект) в др функцию и присваивая ее другой(новой) коллекции мы получаем одну коллекцию, просто по схеме: коллекция - СсылкаНаНее1 - СсылкаНаНее2.

Пока у меня было время сегодня, игрался с коллекцией, что бы хоть за что то зацепиться, что бы объясняло такое поведение..
Пробовал ее и уничтожать перед манипуляцией с новой коллекций. И добавлять форму уже на совсем другом этапе работы с формой (что по моему разумению должно было разорвать связь обеих коллекций)....
Ничего не помогало...

А вообще чего хотел изначально.
Представляем себе некую форму2, которую открыли из другой формы1.
Так вот я хотел, что бы в форме2 сохранялась ссылка на форму1(из которой была открыта). Чтобы в последствии обновить форму1(поле в форме1) при изменении данных в форме2.
А т.к. цепочка открытия форм одна из другой может быть длинной, то решил хранить ссылки на формы в коллекции.
А первая коллекция - это что то типа приведения к одному формату перед передачей.
Просто так форму не передашь(в смысле тогда не будет единообразия механизма для всех форм). А передавая коллекцию я думал настроить универсальный механизм для передачи/приема набора с любым количеством форм в цепочке открытия форм.

Хотя после ответа (Вакшуль Сергей), призадумался и повторно пошел перечитывать осмысливать механизм.
То что он нужен, я думаю да.
Вот только из за своего пока еще процедурного(плоского) мышления. Я об обновлении думал, как о механизме или только по вертикали(по цепочке) или горизонтали - несколько инстансов одной формы.
А тут все смешалось...кони, люди)))...
Хороший момент - при получении фокуса обновлять... это и менее затратно и кодом и ресурсом...
Хотя не так "кошерно". Изменил данные и пока в него фокус не попал - ты видишь старое. Будет сбивать с толку...

Спасибо всем за участие.
Если вдруг кто то захочет что то добавить, буду благодарен.
А я пока буду думать какой способ выбрать для обновления.
Тотально тоже не хочется, в случае тяжелых форм это никому не понравится...
...
Рейтинг: 0 / 0
06.08.2016, 21:57
    #39287764
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
несколько экз форм. обновление родительских форм по цепи
Игортан... Так вот я хотел, что бы в форме2 сохранялась ссылка на форму1(из которой была открыта). Чтобы в последствии обновить форму1(поле в форме1) при изменении данных в форме2....
Это неправильная хотелка. У нее неверный вектор.

Форма2 (точнее говоря, сервисный класс, обслуживающий форму2), должна сгенерировать событие "Я_Имею_Таки_Что_Вам_Сказать".
Форма1 (точнее говоря, сервисный класс, обслуживающий форму1) имеет уши ссылку с подпиской на события на
Форму2 (точнее говоря, на сервисный класс, обслуживающий форму2), где в процедурах обработки этих событий
может реализовывать необходимый экшн.

Вы же пытаетесь организовать обратное, таким образом, чтобы "дети" управляли "родителями".
...
Рейтинг: 0 / 0
06.08.2016, 22:18
    #39287769
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
несколько экз форм. обновление родительских форм по цепи
Во вложении простенький пример,
без коллекций, без сервисных классов,
дабы понять правильный вектор.
...
Рейтинг: 0 / 0
06.08.2016, 23:31
    #39287789
Игортан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
несколько экз форм. обновление родительских форм по цепи
PredeclaredФорма2 (точнее говоря, сервисный класс, обслуживающий форму2), должна сгенерировать событие "Я_Имею_Таки_Что_Вам_Сказать".
Форма1 (точнее говоря, сервисный класс, обслуживающий форму1) имеет уши ссылку с подпиской на события на
Форму2 (точнее говоря, на сервисный класс, обслуживающий форму2), где в процедурах обработки этих событий
может реализовывать необходимый экшн.

Тоже да, благодаря вашему первому примеру научился подписываться на события из вне.

Но тут попадаем в ситуацию вероятного разрыва цепочки.
При попытке сделать "свободный функционал" модальность как то "не приветствуется.
Потому и думал, скидывать в следующий инстанс именно весь набор цепочки.
Т.е. у 2й формы их было бы 1шт в коллекции. У 10й - 9шт.
Тогда как раз и обходится вероятность разрыва цепочки закрытием "средней" формы.
Я, кстати, уже подумал грешным делом. А не сохранять ли в массив(и его передавать) дискрипторы, стрингом, открытых форм. Или будет та же песня, что и с коллекцией....
Тогда в AllForms их можно будет найти

Посмотрел ваш примерExAlt2
Единственное, про что не смог найти информации:
Код: vbnet
1.
2.
3.
4.
5.
Private Sub frm_Alteration()
    With Me.ItemID
        .Requery
    End With
End Sub


Me.ItemID - понимаю, что это обращение к самой себе. Но сейчас нигде не нашел информации по ItemID...гугл как то знает только Item))))

Упс.
PredeclaredВы же пытаетесь организовать обратное, таким образом, чтобы "дети" управляли "родителями".
А вот это ..., поворот на 180 градусов...
Спасибо за терпение.
Попробую сначала на бумаге это обрисовать....

А можно еще вопрос, пока в голове сомнения.
Я работаю с экземплярами форм так.

1. Поднимаю инстанс формы
2. В форме поднимаю класс для ее работы
3. В классе запихиваю форму во внешнюю Паблик коллекцию открытых форм(чтобы жила). Можно было и при поднятии инстанса это делать, но особой разницы не вижу. Просто все стараюсь запихнуть в класс, что бы меньше копипасте заниматься.
- Работаю с формой
- При закрытии формы
4. Удаляю форму из Паблик коллекции
5. Убиваю класс формы(из самого же этого класса)
6. На Class_Terminate класса убиваю ссылку на форму

Если не затруднит, подтвердить или опровергнуть адекватность по крайней мере действий при закрытии.
Никак не могу избавиться чувства какого то излишества.
А проверить правильности как то не очень получается.
Писал, писал....удалил...какая то каша в мыслях
...
Рейтинг: 0 / 0
07.08.2016, 02:23
    #39287816
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
несколько экз форм. обновление родительских форм по цепи
Игортан... Но тут попадаем в ситуацию вероятного разрыва цепочки...
Да, и я об этом писал в самом начале.
Но Вас же не очень огорчает, то, что в других цепочках не будет происходить обновление.
Из своего опыта работы могу сказать, что цепочки фактически никогда не рвутся,
если только специально не задаться целью это сделать. Они обычно короткие, два-три звена.

Игортан... При попытке сделать "свободный функционал" модальность как то "не приветствуется...
Да, модальность не нужна.

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

Игортан...ItemID......
Это имя контрола (и поля источника данных) формы frmAny.

Игортан... 3. В классе запихиваю форму во внешнюю Паблик коллекцию открытых форм(чтобы жила)...
Вроде как последовательность правильная, но, мне не нравится история с внешней коллекцией.
Скоро вы дойдете до того момента, когда возникнет необходимость из одного звена создавать несколько дочерних звеньев,
следовательно, все-равно потребуются описания коллекций дочерних звеньев.
Получится история, где ссылки на один инстанс будут разбросаны по множеству коллекций разных объектов.

У меня единственная ссылка на инстанс формы описана в сервисном классе,
а класс держит себя "методом Мюнхгаузена".
...
Рейтинг: 0 / 0
07.08.2016, 13:33
    #39287878
Игортан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
несколько экз форм. обновление родительских форм по цепи
Predeclared,


PredeclaredНо Вас же не очень огорчает, то, что в других цепочках не будет происходить обновление.
Пока еще не привык думать в нескольких плоскостях.
PredeclaredИз своего опыта работы могу сказать, что цепочки фактически никогда не рвутся,
если только специально не задаться целью это сделать. Они обычно короткие, два-три звена.
В какой то степени это объясняет ваш первый пример. Идет тотальное обновление.
И посидев, подумав...думаю вы правы. Среднестатистический оператор не будет открывать много разветвленных цепочек, так как будет понимать, что сам запутается...
Кстати, всплывает в памяти принцип работы виндовского проводника.
Открываем "Мой компьютер", и дальше идет последовательное открытие следующего диалога в старом окне. С указанием всей цепочки в строке адреса.
Не есть ли это некий "идеальный" вариант последовательного открытия следующей формы с скрытием предыдущей. Ну и в открытой форме что то типа адресной строки - та самая цепочка последовательности попадания в эту форму.
А в левой части - Тривьюшка со всей схемой открытых инстансов и цепочек...
Да... фантазия...
Но это уже какой то менеджер цепочек получается...
PredeclaredЭто имя контрола (и поля источника данных) формы frmAny.
Тупанул вчера уже к ночи
PredeclaredВроде как последовательность правильная, но, мне не нравится история с внешней коллекцией.
Вот пока не обратили внимания на это, даже не дернулось нигде внутри...
Я же "для первого опыта" для каждой формы сделал свою коллекцию. Думал, когда все уляжется в голове, переделаю на что то взрослое.
А тут и вправду, зачем отдельная коллекция на формы, если ее можно в классе хранить.
А ведь ссылка на класс хранится в форме.
Ссылка на форму хранится в этом же классе.
По моему это и есть тот самый Мюнхаузен.
Не. Все равно нужно же как то обращаться к конкретным формам из вне. А найти их можно только или в коллекции или по вашему принципу - в сервисном классе.
Мне пока легче так. Иначе запутаюсь. Потом уже в процессе эволюции...

А никто не делал такой "менеджер цепочек" именно в этом понимании. Не для конфигурирования, как у ПЛ (если ошибся, прошу прощения), а именно для удобства работы с программой?
Слева - все ветвления и цепочки из них, справа - окна цепочек с последними диалогами в них с возможностью переходов по цепочке в обе стороны с возможностью открыть (делать видимым) "средние звенья".
Как в семерке проводник по аналогии.
...
Рейтинг: 0 / 0
07.08.2016, 13:53
    #39287881
Predeclared
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
несколько экз форм. обновление родительских форм по цепи
Игортан... Не. Все равно нужно же как то обращаться к конкретным формам из вне. ...
Нет такой нужды.
Абсолютно.

И еще:
У меня в свое время была дилемма: что первичней, курица или яйцо форма или сервисный класс.
Я выбрал второй вариант.
У меня поднимается сначала сервис, который сам поднимает инстанс формы и управляет им как марионеткой.
И все общение происходит между сервисами, как на этой картинке: 15035512
...
Рейтинг: 0 / 0
07.08.2016, 17:10
    #39287925
Игортан
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
несколько экз форм. обновление родительских форм по цепи
PredeclaredНет такой нужды.
Абсолютно.
Сначала призадумался, потом понял.
Вы же работаете по принципу: родительская форма слушает дочку
это все объясняет..
Даже, наверное, при работе без классов это тоже помогало бы.
Не нужно проверять открыта ли форма, перед обращением к ее контролам/свойствам.

теперь мой пробный код вероятно % на 30 уменьшу.

Predeclared , еще раз спасибо за терпение)) и участие.
ByVal, тут Бенедикт "более лучше" проходится по вопросу:
Пойду еще мал шаблоны себе поломаю....
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / несколько экз форм. обновление родительских форм по цепи / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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