ООП и формы

Общие вопросы программирования, алгоритмы и т.п.

Модератор: Модераторы

Re: ООП и формы

Сообщение S_Gur » 11.09.2019 07:06:50

CynicRus, спасибо, я попробую
S_Gur
постоялец
 
Сообщения: 120
Зарегистрирован: 30.12.2018 22:17:42

Re: ООП и формы

Сообщение vada » 11.09.2019 13:51:23

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

Re: ООП и формы

Сообщение CynicRus » 11.09.2019 13:52:24

Разговор про визуальное наследование в рамках IDE :D
CynicRus
постоялец
 
Сообщения: 106
Зарегистрирован: 28.06.2012 14:31:11

Re: ООП и формы

Сообщение S_Gur » 11.09.2019 14:01:25

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

Re: ООП и формы

Сообщение vada » 11.09.2019 15:13:27

S_Gur Вы, коллега, хам. Сами почитайте свой первый пост. Из которого следует что вы ничего не понимаете в ООП.
Аватара пользователя
vada
энтузиаст
 
Сообщения: 691
Зарегистрирован: 14.02.2006 13:43:17

Re: ООП и формы

Сообщение S_Gur » 11.09.2019 15:41:40

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

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

Re: ООП и формы

Сообщение serbod » 11.09.2019 17:57:33

Это из-за кеширования скомпилированных модулей предков. В дельфях та же проблема. Нужно удалить все временные файлы, пересобрать Lazarus, пересобрать компоненты и проект.
Аватара пользователя
serbod
постоялец
 
Сообщения: 449
Зарегистрирован: 16.09.2016 11:03:02
Откуда: Минск

Re: ООП и формы

Сообщение S_Gur » 11.09.2019 18:25:09

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

Re: ООП и формы

Сообщение iskander » 12.09.2019 06:30:17

serbod писал(а):Нужно удалить все временные файлы, пересобрать Lazarus, пересобрать компоненты и проект.

serbod, имхо вы сильно сгущаете краски. По крайней мере простейший пример вроде даже работает.
iskander
энтузиаст
 
Сообщения: 590
Зарегистрирован: 08.01.2012 18:43:34

Re: ООП и формы

Сообщение S_Gur » 12.09.2019 08:10:34

iskander писал(а):простейший пример вроде даже работает


Насколько простейший? У меня уже на дедушке (предке предка) начинаются проблемы
S_Gur
постоялец
 
Сообщения: 120
Зарегистрирован: 30.12.2018 22:17:42

Re: ООП и формы

Сообщение Vadim » 12.09.2019 09:58:51

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

Т.е. при одном уровне наследования (типа, родитель-потомок) при изменении чего-либо в родителе, у потомка наследованые свойства автоматом меняются, а при двух уровнях (типа, родитель-потомок-потомокПотомка), у потомокПотомка при изменениях в родителе ничего не меняется, я правильно понял?
А в Дельфи второй случай работал?
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: ООП и формы

Сообщение S_Gur » 12.09.2019 10:40:28

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

Re: ООП и формы

Сообщение iskander » 13.09.2019 10:25:48

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

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

Простейший пример - три формы, каждая унаследована от предыдущей, с одним ActionList,
несколькими контролами и обработчиком OnClick. Но сильно долго его мучать мне как-то лениво было.
iskander
энтузиаст
 
Сообщения: 590
Зарегистрирован: 08.01.2012 18:43:34

Re: ООП и формы

Сообщение S_Gur » 13.09.2019 13:02:21

iskander, пробовали после создания в дизайне всех трех форм убивать акции из ActionList? Из всех наследников убиваются?
S_Gur
постоялец
 
Сообщения: 120
Зарегистрирован: 30.12.2018 22:17:42

Re: ООП и формы

Сообщение iskander » 13.09.2019 17:06:30

Мне не сильно интересна эта фича, поэтому я просто подобавлял/поудалял на первой форме несколько контролов/экшенов и проверил, что они добавляются/исчезают в дочерних формах. Если для вас она важна, сильно рекомендую лазаревский форум и багтрекер.

Кстати, одному мне кажется, что сегодня День Программиста?
iskander
энтузиаст
 
Сообщения: 590
Зарегистрирован: 08.01.2012 18:43:34

Пред.След.

Вернуться в Общее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13

Рейтинг@Mail.ru