Показать сообщение отдельно
Старый 14.04.2008, 14:43   #1  
Zoe is offline
Zoe
Участник
 
14 / 10 (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_CategoryUserCategoryComboBox.valueStr());
z_cls_PassParam.Pass_z_c(z_category);
<...> } 
,
и в методах, вызывающих форму для печати (например, метод PrintShowReport)
PHP код:
void PrintShowReport(Cls_PassParam cls_passParamcontainer 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. И, казалось бы, программка не должна была бы вообще работать... Однако на практике она не работает только во втором случае, в первом же – печатает безотказно и все как положено...
Простите меня, я в самом деле дилетант и прошу вашей помощи. Спасибо заранее огромное!