Работа с отчетами 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г.
Отправить комментарий