Показать сообщение отдельно
Старый 03.02.2005, 13:27   #9  
lexa_q is offline
lexa_q
Участник
 
12 / 10 (1) +
Регистрация: 02.02.2005
Адрес: Спб
В общем, как я понял, подход такой:
I. Модифицируем форму SysPrintForm, чтобы она предлагала новый канал вывода - наш. В методе initSendTo() добавляем пункт в список
II. В SysPrintForm.closeOK() надо задать параметры генерации, хранимые в clientSysPrintOptions. 2 параметра:
1) clientSysPrintOptions.parmTarget(PrintMedium::ViewerClass)
это прводит к тому, что ReportRun() вызывает ClassFactory::createViewer().
2) clientSysPrintOptions.parmViewerType( *XXX*)
*XXX* передатся в createViewer как параметр outputType.
III. Модифицируем метод
<div class='XPPtop'>X++</div><div class='XPP'>ClassFactory::createViewer(PrintJobHeader jobsCursor, PrintJobPages pagesCursor, ReportOutputUserType outputType, ReportRun report=NULL)
{
   ...
   [color=:blue]case[/color] *XXX*: [color=:blue]return[/color] [color=:blue]new[/color] MyViewer();
}</div>

Внимание, вопрос! 8)
Перечисление ReportOutputUserType не расширяемо - в него не добавить свое значение *XXX* ! Там есть неиспользуемое значение Viewer4, но не хотелось бы на него завязываться. Я попробовал в качестве *XXX* передавать просто число 100, и ловить в createViewer() тоже 100. Работает. Но пахнет это плохо! Как быть? Верен ли описанный подход?
Тут народ в http://www.axforum.ru/forums/showthread.ph...32267#post32267 тоже делал свой канал, они наверняка в курсе. Но при попытке написать им письмо сайт просит обратиться к админу, т.е. к mazzy. Обращаюсь! Mazzy, ка им написать?