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 шаг:
Компилируем, линкуем, запускаем приложение и нажимаем кнопку, в открывшемся отчете видим измененные текстовые объекты, теперь отчет можно распечатать или сохранить в электроном виде. Здесь можно скачать пример приложения.