Использование Crystal Reports Print Engine API в C++Builder.
Для объявления функций Print Engine следует добавить в проект заголовочный файл CRPE.H, в котором объявлены все функции и структуры Print Engine API, и сослаться на него в тексте модуля, в котором из библиотеки CRPE32 DLL вызываются эти функции. Исходный текст примера, подобного рассмотренному выше примеру для Delphi, имеет следующий вид: //------------------------------------------- #include <vcl.h> #pragma hdrstop #include "U1.h" #include "crpe.h" //------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; int JN; //------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { if (OpenDialog1->Execute()) { PEOpenEngine(); JN=PEOpenPrintJob((OpenDialog1->FileName).c_str()); if (JN==0) ShowMessage("Ошибка открытия отчета"); } } //------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { PEClosePrintJob(JN); PECloseEngine(); Close(); } //------------------------------------------- void __fastcall TForm1::Button3Click(TObject *Sender) { PEOutputToWindow(JN,"Пример использования Crystal Reports Print Engine",30,30,600,400,0,0) ; if (!PEStartPrintJob(JN,1)) ShowMessage("Ошибка вывода отчета"); } //-------------------------------------------
Отметим, что имя файла отчета, являющееся свойством компонента TOpenDialog, принадлежит к типу ANSIString, являющемуся классом С++Builder, созданным для совместимости с библиотекой VCL. Поэтому и в этом случае перед вызовом функций Print Engine API также требуется преобразование к стандартному для языка С++ строковому типу переменной, содержащей имя файла отчета.