Тема: MenuItem
Показать сообщение отдельно
Старый 30.10.2004, 17:51   #4  
George Nordic is offline
George Nordic
Модератор
Аватар для George Nordic
Злыдни
 
4,480 / 1255 (50) ++++++++
Регистрация: 17.12.2003
Адрес: Moscow
Записей в блоге: 9
1) Отчет можно вызвать, при этом передав в виде переметра Enum:
PHP код:
    Args                            parameters = new Args();
    
ReportRun                       report;
    ;

            
parameters.name(reportstr(MyReportName));
            
parameters.caller(this);
            
parameters.record(Record);
            
parameters.parmEnumType(enumnum(MyEnum));
            
parameters.parmEnum(MyEnum::Value);
            
report = new ReportRun(parameters);
            
report.run(); 
2) Обычно такие отчеты содержат в себе переменную - экземпляр вызвавшего её класса. Напишите метод - пересылку и проверку к ней.
PHP код:
enumnum parmCallerEnumNum()
{
   return 
this.args().parmEnumType()
}

и 

Myenum parmMyEnum
()
{
   return 
this.args().parmEnum()

.. где -нибуть в init, после присвоения переменной класа попробуйте
PHP код:
MyClass   callerClass;
MyEnum   emum;

    if (
classIdGet(this.args().caller()) != classnum(MyClass))
            throw 
error("@SYS73002");

    
callerClass this.args().caller();

    if (
calerClass.parmCallerEnumNum != enumnum(MyEnum))
        throw 
error("@SYS73002");

    
enum calerClass.parmMyEnum() 
первый метод более простой и более грамотный. Однако он действует, если отчет вызывается явно. Иначе попробуйте способ №2.

С Уважением,
Георгий