14.04.2008, 14:43
|
#1
|
Участник
Регистрация: 23.03.2008
Адрес: Санкт-Петербург
|
Проблема вызова метода доступа (Enum'ы!)
Добрый день!!! Столкнулась с непреодолимой для себя проблемой (занимаюсь программированием в Axapt’е целых две недели, параллельно осваивая ООП J ). В двух словах: Программа для печати некоторых документов. По нажатию на разные кнопки в форме вызываются два разных метода (назовем их Meth_A и Meth_B), которые передают в специальный класс для передачи данных Cls_PassParam данные из одного поля, заполненного пользователем («Категория»). Данное поле имеет расширенный тип Enum, Z_Category. Метод доступа класса cls_PassParam имеет стандартный вид:
PHP код:
public Z_Category Pass_z_c (Z_Category _z_c = z_c) { z_c = _z_c; return z_c;}
Обращение к данному методу из двух разных методов печати приводит к разным результатам: в первом случае, при вызове из метода PrintCategory, категория отображается как положено, во втором - при вызове из метода PrintShowReport – она вообще не отображается. Понимаю, что чудес не бывает, поэтому хотелось бы как-то рационально объяснить происходящее. Для чистоты эксперимента строки вызова сделала идентичными и в методах, записывающем параметры в класс PassParam (например, метод meth_PrintCATEGORY),
PHP код:
void meth_PrintCATEGORY() {Cls_PrintStockLabel z_cls_PrintStockLabel; Z_category z_category; Cls_PassParam z_cls_PassParam = new Cls_PassParam(); Args _args; ; _args = element.args(); <…> z_category = str2enum(Z_Category, UserCategoryComboBox.valueStr()); z_cls_PassParam.Pass_z_c(z_category); <...> }
,
и в методах, вызывающих форму для печати (например, метод PrintShowReport)
PHP код:
void PrintShowReport(Cls_PassParam cls_passParam, container ElemCont) {FormDataSource formDataSource; SysOperationProgress operationProgress; Z_Category z_c; <…> if (this.CategMeth(cls_PassParam.Pass_z_c()) != "PR_0") { fr.setVar('Categoria', '\''+ this.CategMeth(cls_PassParam.Pass_z_c()) + '\''); } <…> fr.show();}
Да, и сам метод CategMeth
PHP код:
str CategMeth(Z_Category z_c) {switch (z_c) {case Z_Category::PR1: return "PR_1"; <…> } return "PR_0"; }
Еще хочу отметить, что при отладке метод Pass_z_c возвращает 0. И, казалось бы, программка не должна была бы вообще работать... Однако на практике она не работает только во втором случае, в первом же – печатает безотказно и все как положено...
Простите меня, я в самом деле дилетант и прошу вашей помощи. Спасибо заранее огромное!
|
|