Tfrxpictureview + Tfrxuserdataset = баг?
Здравствуйте!
У меня есть такая задача: показывать в отчёте картинки, которых нет и не может быть в базе (это ГИС и надо рисовать в отчёте карты различных участков).
Для этого я попробовал использовать TfrxPictureView и TfrxUserDataSet с обработчиком IfrxUserDataSetEvents.raw_OnGetValue, который возвращает поле типа BLOB (IStream в VARIANT), по аналогии с просмотром картинок в biolife.Graphic из demo.mdb.
Проблема в том, что это не работает - TfrxPictureView просто не вызывает обработчик OnGetValue, при этом точно такой же (как мне кажется) код прекрасно работает с TfrxMemoView и точно такой же код для установки названий полей успешно подключает поле biolife.Graphic к TfrxPictureView. Другими словами, у меня не работает только сочетание TfrxPictureView и TfrxUserDataSet.
Вопрос первый: это баг или я что-то в своём коде в упор не вижу? К теме прицеплен архив с минимальным проектом на VC++ 2008, воспроизводящим проблему, самое интересное место отмечено комментарием //!!.
Прикреплённый к теме архив что-то не скачивается, можно взять отсюда.
Вопрос второй: можно ли вообще в TfrxUserDataSet иметь поле типа BLOB и правильно ли его возвращать, используя IStream?
Вопрос третий: какие есть альтернативы? Если у меня картинок постоянное число, то я могу просто делать TfrxPictureView.LoadViewFromStream перед выполнением отчёта, а если переменное? Обрабатывать IfrxReportEvents.OnBeforePrint и каким-то образом узнавать (как проще это делать?), какую именно запись сейчас печатаем и загружать соответствующую картинку? Заводить временную таблицу в базе для этой цели не хочется.
Спасибо за внимание :-)
Дополнение: версия - 4.6.179
У меня есть такая задача: показывать в отчёте картинки, которых нет и не может быть в базе (это ГИС и надо рисовать в отчёте карты различных участков).
Для этого я попробовал использовать TfrxPictureView и TfrxUserDataSet с обработчиком IfrxUserDataSetEvents.raw_OnGetValue, который возвращает поле типа BLOB (IStream в VARIANT), по аналогии с просмотром картинок в biolife.Graphic из demo.mdb.
Проблема в том, что это не работает - TfrxPictureView просто не вызывает обработчик OnGetValue, при этом точно такой же (как мне кажется) код прекрасно работает с TfrxMemoView и точно такой же код для установки названий полей успешно подключает поле biolife.Graphic к TfrxPictureView. Другими словами, у меня не работает только сочетание TfrxPictureView и TfrxUserDataSet.
Вопрос первый: это баг или я что-то в своём коде в упор не вижу? К теме прицеплен архив с минимальным проектом на VC++ 2008, воспроизводящим проблему, самое интересное место отмечено комментарием //!!.
Прикреплённый к теме архив что-то не скачивается, можно взять отсюда.
Вопрос второй: можно ли вообще в TfrxUserDataSet иметь поле типа BLOB и правильно ли его возвращать, используя IStream?
Вопрос третий: какие есть альтернативы? Если у меня картинок постоянное число, то я могу просто делать TfrxPictureView.LoadViewFromStream перед выполнением отчёта, а если переменное? Обрабатывать IfrxReportEvents.OnBeforePrint и каким-то образом узнавать (как проще это делать?), какую именно запись сейчас печатаем и загружать соответствующую картинку? Заводить временную таблицу в базе для этой цели не хочется.
Спасибо за внимание :-)
Дополнение: версия - 4.6.179