Для примера см классы InventOnHand, PriceDisc и т.д.
Суть: Инициализируется класс, у которого имеется несколько (в Вашем случае 3) методов, возвращающих переменные Цена1, Цена2 и Цена3. Дополнительно в классе объявляется переменная-флажок isCalculated. При расчете, который выполняется в методе МетодОбщий рассчитываются переменные Цена1, Цена2, Цена3, а также взводится флажок isCalculated. В методах, которые возвращают соответствующие переменные производится проверка - а не взведен ли флажок? Если флажок не взведен - то вызывается МетодОбщий. Если флажок взведен - то ничего не вызывается - просто возвращается соответствующая переменная.
Т.о. без разницы - какой метод будет вызван раньше - Цена1 или Цена3 - первый же вызов вызовет МетодОбщий и рассчитает все переменные. При этом повторного вызова МетодОбщий не произойдет.
Само собой, при использовании такого подхода в гриде нужно будет позаботиться, чтобы флажок isCalculated сбрасывался в методе active(), чтобы расчет делался для каждой записи.
Ну и конечно дисплей-методы должны ссылаться на методы этого класса (Цена1, Цена2, Цена3).
__________________
Возможно сделать все. Вопрос времени
Последний раз редактировалось sukhanchik; 22.08.2013 в 19:40.
|