Страница 2 из 3

Re: ООП и формы

СообщениеДобавлено: 11.09.2019 07:06:50
S_Gur
CynicRus, спасибо, я попробую

Re: ООП и формы

СообщениеДобавлено: 11.09.2019 13:51:23
vada
Из азов ООП
Каждый класс не зависимо от его предков и потомков создается в своем разделе памяти.
Эти участки памяти никак не пересекаются с памятью предков и генетической памятью. Потомок только
в момент своего создания хватает ЗНАЧЕНИЯ свойств предка. И все. На этом взаимодействия
предка и потомка заканчиваются, как правило. Если не принять специальные меры.
Да предок и потомок имеют ссылки на общие методы, а вот свойства у них находятся
по разные стороны баррикады. При вызове метода, первый параметр (который вы не видите)
это ссылка на область памяти класса из которого метод дергается. Self так называемый (иди, например, this в других языках программирования).
Соответственно, доступ к полям класса, отсчитывается от этого Self. Если вы волевым решением
Присвоите этому Self другой адрес, получите по носу.
Упрощенно, класс в памяти выглядит как массив ссылок на методы и свойства.
Воспользоваться свойствами предка можно. Для этого вы в класс предка делегируете как одно из полей
класс предка. Ну и дальше ковыряйтесь с ними по вашему усмотрению.

Re: ООП и формы

СообщениеДобавлено: 11.09.2019 13:52:24
CynicRus
Разговор про визуальное наследование в рамках IDE :D

Re: ООП и формы

СообщениеДобавлено: 11.09.2019 14:01:25
S_Gur
vada, я так понимаю, что вы тоже решили поучить меня азам ООП, не поняв суть моего вопроса? Может, все-таки не стоит так торопиться нести просвещение в массы? Для начала разберитесь с разницей между DesignTime и RunTime, потом ВНИМАТЕЛЬНО почитайте мой вопрос, потом (если к этому времени до вас еще не дойдет) выполните набор действий, которые я рекомендовал выполнить господину DedFrend 3-4 поста назад. А потом я с удовольствием обсужу с вами азы ООП, Self и прочие тонкости.

Re: ООП и формы

СообщениеДобавлено: 11.09.2019 15:13:27
vada
S_Gur Вы, коллега, хам. Сами почитайте свой первый пост. Из которого следует что вы ничего не понимаете в ООП.

Re: ООП и формы

СообщениеДобавлено: 11.09.2019 15:41:40
S_Gur
vada, понятно. Вместо того, чтобы обратить внимание на то, что уже два человека объяснили вам, что вы не понимаете, о чем идет речь, вы предпочли обострить конфликт. Бывает, и таких видели. Изучайте азы ООП дальше, "коллега"... :D

Добавлено спустя 1 час 30 секунд:
В общем, результатов я не добился. Пытался и закрывать формы, и удалять из проекта, чтобы добавить после изменения в предке. Те же яйца, только в профиль. Подозреваю, что все будет работать, если спроектировать систему полностью, и прописывать каждого предка от начала и до конца перед созданием потомков, чтобы потом совсем ничего не изменять. Поэтому пока с этим проектом перехожу в обычную Дельфи и пишу там - благо, там таких проблем нет. Потом попробую модуль за модулем перенести все это в Лазарус. Но такая работа, конечно, дико некомфортная.

Re: ООП и формы

СообщениеДобавлено: 11.09.2019 17:57:33
serbod
Это из-за кеширования скомпилированных модулей предков. В дельфях та же проблема. Нужно удалить все временные файлы, пересобрать Lazarus, пересобрать компоненты и проект.

Re: ООП и формы

СообщениеДобавлено: 11.09.2019 18:25:09
S_Gur
serbod, это все хорошо, но проблема в том, что в течении большего времени я при разработке вношу изменения то в одного, то в другого предка, а конечный потомок при этом в идеале должен находиться у меня перед глазами, чтобы оттестировать эти изменения. Если после каждого такого изменения пересобирать Лазарус, компоненты и проект, разработка несколько затянется... :D В принципе, я даже особо не помню, когда я в Дельфях натыкался на такую проблему - разве что известная проблема с тулбарами, но она, кажется, несколько не из той серии

Re: ООП и формы

СообщениеДобавлено: 12.09.2019 06:30:17
iskander
serbod писал(а):Нужно удалить все временные файлы, пересобрать Lazarus, пересобрать компоненты и проект.

serbod, имхо вы сильно сгущаете краски. По крайней мере простейший пример вроде даже работает.

Re: ООП и формы

СообщениеДобавлено: 12.09.2019 08:10:34
S_Gur
iskander писал(а):простейший пример вроде даже работает


Насколько простейший? У меня уже на дедушке (предке предка) начинаются проблемы

Re: ООП и формы

СообщениеДобавлено: 12.09.2019 09:58:51
Vadim
S_Gur писал(а):У меня уже на дедушке (предке предка) начинаются проблемы

Т.е. при одном уровне наследования (типа, родитель-потомок) при изменении чего-либо в родителе, у потомка наследованые свойства автоматом меняются, а при двух уровнях (типа, родитель-потомок-потомокПотомка), у потомокПотомка при изменениях в родителе ничего не меняется, я правильно понял?
А в Дельфи второй случай работал?

Re: ООП и формы

СообщениеДобавлено: 12.09.2019 10:40:28
S_Gur
Vadim, я вчера перенес этот проект на Дельфи и сейчас работаю с 6-ю уровнями наследования, периодически внося доработки в каждый из предков. Пока никаких проблем. Я, правда, еще не возился с тулбарами, поэтому очень надеюсь, что в 10.3.2 эту проблему исправили, но в любом случае у меня есть для нее решение. Больше никаких траблов пока не вижу. В Лазарусе я создавал форму, кидал на нее грид и на FormShow писал самый примитивный Grid.SetFocus. После чего создавал от нее потомка, работающего со справочником списковых переменных, а от этого потомка - форму, которая работает с конкретным справочником (передает предку идентификатор этого справочника). При открытии этой формы грид не фокусируется. Но если перекрыть ему FormShow и уже в конечном наследнике прописать тот же самый Grid.SetFocus, все отрабатывает. Это одна из многих проблем, на которые я натыкался. Честно говоря, не особо тестировал, через сколько поколений начинаются проблемы, вряд ли это будет жестко фиксированное количество

Re: ООП и формы

СообщениеДобавлено: 13.09.2019 10:25:48
iskander
S_Gur писал(а):У меня уже на дедушке (предке предка) начинаются проблемы

Хмм, звучит забавно...

Простейший пример - три формы, каждая унаследована от предыдущей, с одним ActionList,
несколькими контролами и обработчиком OnClick. Но сильно долго его мучать мне как-то лениво было.

Re: ООП и формы

СообщениеДобавлено: 13.09.2019 13:02:21
S_Gur
iskander, пробовали после создания в дизайне всех трех форм убивать акции из ActionList? Из всех наследников убиваются?

Re: ООП и формы

СообщениеДобавлено: 13.09.2019 17:06:30
iskander
Мне не сильно интересна эта фича, поэтому я просто подобавлял/поудалял на первой форме несколько контролов/экшенов и проверил, что они добавляются/исчезают в дочерних формах. Если для вас она важна, сильно рекомендую лазаревский форум и багтрекер.

Кстати, одному мне кажется, что сегодня День Программиста?