FastReports C++. Быстрый старт.
Ситуация, нужно сделать распечатку данных, несколько путей решений, первый, не самый удобный, рисовать в контексте принтера, как показано ниже:
Способ 1:
CPrintDialog cp(FALSE);
if (cp.DoModal()==IDOK)
{
CDC PrintDC;
PrintDC.Attach(cp.GetPrinterDC());
DOCINFO infStru;
::ZeroMemory (&infStru, sizeof (DOCINFO));
CString title="Анализ данных";
infStru.cbSize = sizeof (DOCINFO);
infStru.lpszDocName=title;
infStru.lpszOutput=NULL;
if (PrintDC.StartDoc(&infStru )==-1)AfxMessageBox("Ошибка StartDoc") ;
PrintDC.StartPage();
PrintDC.MoveTo(10,10);
PrintDC.LineTo(100,100);
PrintDC.TextOut(250,25,”Test”);
if (PrintDC.EndPage()<0) AfxMessageBox("Ошибка EndPage");
if (PrintDC.EndDoc()==0) AfxMessageBox("Ошибка EndDoc");
PrintDC.Detach();
}
Способ 2: Использовать генератор отчётов FastReports, очень гибкий и удобный инструмент создания отчетов. Рассмотрим в шагах как быстро начать его использовать.
1 шаг:
Скачиваем с сайта http://www.fast-report.com/ru/ генератор отчетов FASTREPORT® STUDIO и устанавливаем.
2 шаг:
Открываем, дизайнер отчетов(FastReport Designer), создаем пустой отчет, и помещаем на листе отчета два объекта текст с именами по умолчанию Memo1 и Memo2, сохраняем отчет рядом с файлом приложения, из которого будет вызываться отчет.
3 шаг:
Создаем приложение на основе диалога, открываем файл исходника реализации функций диалога и в самом начале пишем:
#if _MSC_VER < 1300
#import "C:\Program Files\FastReports\FastReport Studio Trial\Bin\FastReport3.dll" named_guids
#else
#import "libid:d3c6fb9b-9edf-48f3-9a02-6d8320eaa9f5" named_guids
#endif
using namespace FastReport; [/cpp]
4 шаг:
Добавляем на форму диалога кнопку, в функции реализации которой пишем:
[cpp]
void CTestFRDlg::OnButtonTest()
{
CoInitialize(NULL);
IfrxReportPtr pReport(__uuidof(TfrxReport));
pReport->LoadReportFromFile("Test.fr3");
IfrxComponent * Obj= pReport->FindObject(_bstr_t("Memo1"));
IfrxMemoView * pMemoObj;
Obj->QueryInterface(__uuidof(IfrxMemoView), (PVOID*) &pMemoObj);
pMemoObj->put_Memo(_bstr_t("Test 1"));
Obj= pReport->FindObject(_bstr_t("Memo2"));
Obj->QueryInterface(__uuidof(IfrxMemoView), (PVOID*) &pMemoObj);
pMemoObj->put_Memo(_bstr_t("Test 2"));
pReport->ShowReport();
pMemoObj-> Release();
Obj -> Release();
CoUninitialize();
}
5 шаг:
Компилируем, линкуем, запускаем приложение и нажимаем кнопку, в открывшемся отчете видим измененные текстовые объекты, теперь отчет можно распечатать или сохранить в электроном виде. Здесь можно скачать пример приложения.