Работа с отчетами Rave Report в режиме RunTime

...
var
 TmpRaveReport: TRaveReport;
 TmpDataView: TRaveDataView;
 TmpDataField: TRaveDataField;
 TmpRaveRegion: TRaveRegion;
 TmpRaveDataBand: TRaveDataBand;
 TmpRaveDataText: TRaveDataText;
 TmpField: TField;
begin
 TmpDataField := nil;
 if not RvProjectRTR.SelectReport(NewRep, true) then
  EXIT;
 if (ADOTableRTR.FieldCount < 1) or (not ADOTableRTR.Active) then
  EXIT;
 // Поиск строкового поля
 TmpField := RvDataSetConnectionRTR.DataSet.FindField(FieldStr);
 if TmpField = nil then
  EXIT;
 TmpRaveReport := RvProjectRTR.ProjMan.ActiveReport;
 // Создание TRaveDataView обеспечивающий работу с источником данных
 TmpDataView := TRaveDataView.Create(RvProjectRTR.ProjMan);
 RvProjectRTR.ProjMan.DataObjectList.Add(TmpDataView);
 with TmpDataView do
 begin
  Name := NewDataView;
  Parent := RvProjectRTR.ProjMan;
  DataCon.Connection := RvDataSetConnectionRTR;
  ConnectionName := TmpDataView.DataCon.Connection.Name;
 end;
 // В зависимости от типа данных поля создается поле данных для отчета
 // Rave Report соотвествующего типа
 case TmpField.DataType of
  ftString,
  ftWideString: TmpDataField := TRaveStringField.Create(TmpDataView);
  ftInteger: TmpDataField := TRaveIntegerField.Create(TmpDataView);
 end;
 if TmpDataField = nil then
  EXIT;
 // Заполение свойств поля данных
 with TmpDataField do
 begin
  Name := TmpField.Name; // Имя компонента
  FieldName := TmpField.FieldName; // Имя поля
  FullName := TmpField.DisplayName; // Альтернативное имя поля
  // Порядковый номер в списке полей источника данных (таблице)
  DataIndex := TmpField.Index;
  Parent := TmpDataView; // Родительский компонент
 end;
 // Создание TRaveRegion на котром будут расположены компоненты для работы с источником данных
 TmpRaveRegion := TRaveRegion.Create(TmpRaveReport.FirstPage);
 with TmpRaveRegion do
 begin
  Name := 'NewRaveRegion';
  Parent := TmpRaveReport.FirstPage;
  Left := SetPointInPercent(TmpRaveReport.FirstPage.PageWidth, 5);
   := SetPointInPercent(TmpRaveReport.FirstPage.PageHeight, 15);
  Width := SetPointInPercent(TmpRaveReport.FirstPage.PageWidth, 70);
  Height := SetPointInPercent(TmpRaveReport.FirstPage.PageHeight, 60);
 end;
 // Создание TRaveDataBand для размещения елементов оформления отчета на нем
 TmpRaveDataBand := TRaveDataBand.Create(TmpRaveRegion);
 with TmpRaveDataBand do
 begin
  Name := 'NewDataBand';
  Parent := TmpRaveRegion;
  Left := SetPointInPercent(TmpRaveRegion.Width, 5);
   := SetPointInPercent(TmpRaveRegion.Height, 5);
  Width := SetPointInPercent(TmpRaveRegion.Width, 90);
  Height := SetPointInPercent(TmpRaveRegion.Height, 5);
  DataView := TmpDataView;
 end;
 // TRaveDataText обеспечит отображение информации из источника данных
 TmpRaveDataText := TRaveDataText.Create(TmpRaveDataBand);
 with TmpRaveDataText do
 begin
  Name := 'NewDataText';
  Parent := TmpRaveDataBand;
  Left := SetPointInPercent(TmpRaveDataBand.Width, 1);
   := SetPointInPercent(TmpRaveDataBand.Height, 1);
  Width := SetPointInPercent(TmpRaveDataBand.Width, 50);
  DataView := TmpDataView;
  DataField := TmpDataField.FieldName;
 end;
 RvProjectRTR.ExecuteReport(NewRep);
 ...

Создав новый отчет или изменив существующий можно сохранить внесенные изменения. Чтобы ваши труды не пропали даром, измененный проект отчета можно сохранить, воспользовавшись методом «Save». Если возникнет необходимость сохранить проект отчета Rave Report под другим именем, то следует изменить имя файла проекта в свойстве «ProjectFile» или воспользоваться методом «SetProjectFile» перед сохранением проекта. Все данные свойства и методы доступны у менеджера отчета TRvProject или TRaveProjectManager. Пример сохранения проекта отчета под другим именем:

...

// Сохраниение новго отчета под именем 'TestSave.rav'

RvProjectRTR.SetProjectFile('TestSave.rav');

RvProjectRTR.Save;

...

P.S. Ну, вот вроде и все о чем хотелось поведать. Надеюсь после выхода данной статьи, у пользователей генератора отчета Rave Report работа хоть сколько-то облегчится. Если вы заметили какие-либо ошибки, недочеты в данной статье, а также если у вас есть какие либо предложения или дополнения к данной статье, то все ваши отзывы будут приятны здесь: Sun-bittern@mail.ru
Турушев Виталий (Sun bittern ©)Нижний Тагил 2004г.

Отправить комментарий

Проверка
Антиспам проверка
Image CAPTCHA
...