Обработки ситуации с несуществующим объектом ни в одном компоненте на данный момент никем не реализовано, Нужно в каждой процедуре каждого "контроллера печати" (то есть простая правка их родителя тут не поможет) просто делать выход при FItem = nil. Это должно исправить заодно существующую на данный момент проблему фатальной ошибки при незаполненности или неправильном заполнении каких-либо полей в свойствах контроллеров. В таких случаях InitItem, (потому я его и начал править в первую очередь), не может выдать ничего вразумительного (что понятно - он не знает, что от него просят инициализировать) и выдаёт недействительную структуру FItem, при работе с которой сейчас (в штатных компонентах) вылетает фатальная ошибка. То есть исправлять компоненты контроллеров однозначно нужно. За одно в их родителя (а точнее - в PrintController.InitItem) добавить работу с пришедшими с верхней точки именами искомых объектов печати внутри шаблона. Полностью отказаться от _data_Object и от экземпляра TDocItem, на который эта точка была изначально расчитана, на данный момент не получается как раз из-за отсутствия правильной обработки не инициализированного объекта. Если статически, вручную прописанные объекты печати кое-как работали (хотя опечатка в одной букве приводит к фатальной ошибке во время работы приложения), то при динамической "подаче" их "сверху" в наши кубики крайне желательно предупредить грозящие фатальным вылетом ситуации ненахождения имени в списке печати.
Ответов: 3889
Рейтинг: 362
|
|||
карма: 1 |
|