|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
10.09.2010, 12:22 | #1 |
Форумчанин
Регистрация: 01.02.2007
Сообщений: 785
|
получить значение поля другого класса
Вот мой модуль с несколькими классами.
Код:
Ничего лучшего, кроме как передать эти значения в виде параметров процедуры я не придумал. Вот так: procedure CalcNormSowing(Area, Productivity: real); Возможно ли обойтись без параметров? Как-то сослаться на значения этих полей (FArea, FProductivity) в самой процедуре?
Изо всей благодати
В руках крепко сжатых Я донесу только капли |
10.09.2010, 12:38 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Ну а чем параметры то не угодили?
В крайнем случае можно вытянуть эти поля в отдельный класс (оъект - хранилище), а во всех остальных его использовать Код:
I'm learning to live...
|
10.09.2010, 12:51 | #3 |
Форумчанин
Регистрация: 01.02.2007
Сообщений: 785
|
Параметры угодили но меня не покидала мысль - что можно сделать проще/по-другому.
Смысл я понял, спасибо. В моем случае с параметрами проще реализовать, на мой взгляд.
Изо всей благодати
В руках крепко сжатых Я донесу только капли |
10.09.2010, 13:02 | #4 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Можно еще сделать привязку к тем другим объектам, в к-рых нужные свойства. Так удобно делать, если объекты взаимосвязаны и работают в комплексе, в одной системе, неразлучно друг от друга, но при этом они разные объекты. Тогда делаешь public поля:
Land: TLand; Traktor: TTraktor; // и т.д. На момет создания объекта они будут ссылаться в nil. Но после создания ты можешь им присвоить ссылки (должны быть уже созданы): Object.Land := Land1; Object.Traktor := Belarus; И потом внутри класса можешь использовать их не получая ничего в параметрах. И еще, разновидность этого способа: если нужно получить целую кучу параметров, но из одного объекта, передавай просто ссылку на объект и вытягивай из него, что нужно. Код:
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог Последний раз редактировалось mutabor; 10.09.2010 в 13:18. |
10.09.2010, 13:24 | #5 | ||
Форумчанин
Регистрация: 01.02.2007
Сообщений: 785
|
2 mutabor - второй способ понял, но, думаю, использовать такое только если действительно надо получить кучу параметров. Хотя я стараюсь разбивать на отдельные процедуры, чтобы избежать как раз таки кучи параметров.
А вот Цитата:
Цитата:
Код:
Изо всей благодати
В руках крепко сжатых Я донесу только капли Последний раз редактировалось Roof; 10.09.2010 в 13:31. |
||
10.09.2010, 13:44 | #6 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
10.09.2010, 13:46 | #7 | ||
Форумчанин
Регистрация: 01.02.2007
Сообщений: 785
|
2 Stilet - это понятно. Но они поля другого класса. Я не понял вот этого:
Цитата:
Цитата:
Изо всей благодати
В руках крепко сжатых Я донесу только капли |
||
10.09.2010, 13:55 | #8 |
Телепат с дипломом
Старожил
Регистрация: 10.06.2007
Сообщений: 4,929
|
Посмотрел внимательней код, можно сделать еще лучше. У тебя ведь он (FSeedGrowing) внутри TLand, тогда в конструктор ему передавай ссылку на хозяина.
Создание тогда у тебя будет иметь вид: FSeedGrowing := TSeedGrowing.Create(Self); Объявление конструктора такое: constructor Create(AOwner: TLand); Доступ к полям, внутри TSeedGrowing: Owner.FArea Поля эти в TLand вынеси в паблик, иначе не будет доступа к ним.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог |
10.09.2010, 14:38 | #9 |
Форумчанин
Регистрация: 01.02.2007
Сообщений: 785
|
2 mutabor - пробовал, пробовал, так и не получилось обратиться к полям, внутри TSeedGrowing через Owner
В реализации процедуры TSeedGrowing.CalcNormSowing; в строке Код:
Код:
Изо всей благодати
В руках крепко сжатых Я донесу только капли Последний раз редактировалось Roof; 10.09.2010 в 14:41. |
10.09.2010, 14:44 | #10 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Имелось ввиду это:
Код:
Код:
I'm learning to live...
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как вызвать метод из другого класса в C# | KobolD | Помощь студентам | 6 | 25.06.2010 14:12 |
получить данные поля исходя из lookup-поля | malayka | Помощь студентам | 0 | 21.04.2010 21:19 |
как получить значение поля грид на основе значения другого lookUp поля | malayka | БД в Delphi | 0 | 21.04.2010 19:06 |
Подписаться на событие другого класса | boris-blade | Общие вопросы .NET | 1 | 06.04.2010 22:53 |
Если в классе объявить объект другого класса,будет ли видно переменные первого класса из объекта второго? | TwiX | Общие вопросы Delphi | 3 | 15.11.2009 00:54 |