Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.10.2012, 20:45   #1
NaumOff
Пользователь
 
Регистрация: 25.07.2011
Сообщений: 48
По умолчанию Доступ к полю класса из другого поля это класса

Собственно сабж. Немного поясню: есть объект, в нем 2 поля - форма и массив данных. Как из формы получить доступ к данным?
То что сразу приходит в голову-при создании объекта записывать ссылку на этот объект в переменную формы.
NaumOff вне форума Ответить с цитированием
Старый 07.10.2012, 21:10   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,442
По умолчанию

А в чем проблема?
Человек_Борща вне форума Ответить с цитированием
Старый 07.10.2012, 21:40   #3
NaumOff
Пользователь
 
Регистрация: 25.07.2011
Сообщений: 48
По умолчанию

Торможу наверно. Как получить указатель на объект имея другой объект-его поле?
Не могу подобрать слово, обозначающее в Delphi экземпляр класса по отношению к его полю. Как Родитель в наследовании, только в данном случае композиция.
NaumOff вне форума Ответить с цитированием
Старый 07.10.2012, 22:40   #4
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Цитата:
Как из формы получить доступ к данным?
для начала ответьте на вопрос "зачем", возможно, это и даст ответ на вопрос "как".
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 07.10.2012, 23:05   #5
NaumOff
Пользователь
 
Регистрация: 25.07.2011
Сообщений: 48
По умолчанию

Как зачем? Форме нужны данные, которые хранятся в объекте уровнем "выше".
Через переменную естественно все работает, но возможно есть другое решение.
Кстати слово - Owner. Ну по крайней мере применительно к компонентам.
NaumOff вне форума Ответить с цитированием
Старый 08.10.2012, 09:41   #6
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,876
По умолчанию

А не логично ли чтобы массив данных был у формы? Если к нему кто-то ещё обращается помимо формы - то пусть через форму обращается (конечно, надо чтобы оба были public)
На случай, если и это не приемлемо в задаче, то тут только с передачей в форму некоего владельца, можно использовать и существующее свойство Owner , но если объект верхнего уровня не компонент, то , скорее всего, не выйдет. Ну а по владельцу в методах формы обратиться к массиву несложно.
phomm вне форума Ответить с цитированием
Старый 08.10.2012, 10:01   #7
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 18,136
По умолчанию

Цитата:
Как зачем? Форме нужны данные, которые хранятся в объекте уровнем "выше".
Сделайте их public, либо введите методы для доступа к таким данным. А Ваша форма уже пусть их берет. Так и не понял в чем вопрос-то?
И от ссылок избавляйтесь. Если есть у Вас ООП, не смешивайте все в одну кучу - обратились к объекту, он предоставил Вам сведения и все.
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Старый 08.10.2012, 18:11   #8
NaumOff
Пользователь
 
Регистрация: 25.07.2011
Сообщений: 48
По умолчанию

phomm, это все понятно. В контексте моей задачи форма имеет второстепенное значение, данные обрабатываются объектом-ее владельцем (не компонент).
Utkin, чтобы обратиться к объекту и воспользоваться его методами, надо как то "выйти" на него, найти ссылку на него. Таких объектов много, создаются и разрушаются динамически, и иногда надо выходить на объект работая с его формой.
В общем мне кажется самым правильным будет создать в форме поле и записывать имя владельца туда. То бишь самому реализовать свойство Owner.
Посижу еще, подумаю. Я ожидал что в Delphi у всех объектов есть свойство Owner, а оно оказывается применительно только к TComponent.
NaumOff вне форума Ответить с цитированием
Старый 08.10.2012, 18:41   #9
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

Цитата:
Как зачем? Форме нужны данные
ну, это не ответ ) понятно, что нужны. Но зачем? Просто показать их на экране? А по чьей инициативе (формы, юзера, самих данных)? Или не просто показать, а ещё и что-то поменять в них?

От ответа на вопрос "зачем" зависит всё.

Ну вот сделаете вы ссылку в форме на объект-хозяина данных, а завтра появится возможность/необходимость получить данные не от своего хозяина, а от другого. Будете добавлять ещё одну ссылку?

От источника инициативы зависит организация передачи данных. Допустим, данные нужны по инициативе юзера. Тогда неплохо у формы иметь доступ к менеджеру данных, котрый сможет эти данные предоставить форме, по её требованию. И пусть это будет вечный менеджер, который не прыгает туда-сюда по памяти, а живет всё время жизни программы.

А если источник инициативы сами данные, то лучше у формы добавить метод, типа

Код:
procedure АВотВамСвежиеДанные(данные: пданные);
и пусть форма спокойно заберет/обработает в этом методе данные, и забудет о них.


С обратной стороны, хранить ссылку на форму вместе с данными не очень верное решение, имхо. Данные могут храниться в базе данных, передаваться по сети. Форма тут при чём? А если завтра надо будет похожее консольное приложение сделать, или сервис. Все будете переписывать?
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 08.10.2012, 22:33   #10
Utkin
Старожил
 
Аватар для Utkin
 
Регистрация: 04.02.2009
Сообщений: 18,136
По умолчанию

Объекты - экземпляры одного класса?
Маньяк-самоучка
Utkin появился в результате деления на нуль.
Осторожно! Альтернативная логика
Utkin вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Доступ к окнам из другого класса Стремящийся Win Api 18 01.09.2012 22:47
Доступ к обьекту другого класса. the27mart Общие вопросы по Java, Java SE, Kotlin 6 08.08.2012 19:30
Доступ к TextBox в WPF из другого класса CoderWPF WPF, UWP, WinRT, XAML 2 15.03.2012 11:07
Доступ к полю класса(используя STL) shocker Помощь студентам 1 29.03.2011 17:15
Доступ из другого класса KipZ Windows Forms 1 06.02.2011 15:22