Динамическое создание отчета с использованием Frxuserdataset
Здравствуйте!
Создаю отчет динамически с использованием frxUserDataSet. За основу взял пример с распечаткой StringList'а из демонстрации. Возникла проблема с обработкой события OnGetValue.
Код следующий:
Ставлю брекпоинт в событии frxReport1GetValue. Но остановки в этом событии не происходит. И в отчете в мемо элементе остается текст 'element'. Такое впечатление, что это событие не обрабатывается frxReport1. Подскажите что я делаю не так.
Или посоветуйте как решить эту проблему.
Создаю отчет динамически с использованием frxUserDataSet. За основу взял пример с распечаткой StringList'а из демонстрации. Возникла проблема с обработкой события OnGetValue.
Код следующий:
procedure TForm1.Button1Click(Sender: TObject);
begin
frxReport1.ShowReport;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
frxDBDataset1: TfrxDBDataset;
frxDesigner1: TfrxDesigner;
Page: TfrxReportPage;
DataBand: TfrxMasterData;
Memo: TfrxMemoView;
begin
sl := TStringList.Create;
sl.Add('1');
sl.Add('2');
sl.Add('3');
sl.Add('4');
sl.Add('5');
sl.Add('6');
sl.Add('7');
sl.Add('8');
sl.Add('9');
frxReport1 := TfrxReport.Create(nil);
frxReport1.CreateUniqueName;
frxReport1.OnGetValue := frxReport1GetValue;
frxUserDataSet1 := TfrxUserDataSet.Create(nil);
frxUserDataSet1.Name := 'frxUserDataSet';
frxUserDataSet1.RangeEnd := reCount;
frxUserDataSet1.RangeEndCount := sl.Count;
Page := TfrxReportPage.Create(frxReport1);
Page.CreateUniqueName;
Page.SetDefaults;
DataBand := TfrxMasterData.Create(Page);
DataBand.CreateUniqueName;
DataBand.DataSet := frxUserDataSet1;
DataBand.Height := 20;
Memo := TfrxMemoView.Create(DataBand);
Memo.CreateUniqueName;
Memo.Height := 20;
Memo.Width := 20;
Memo.Text := 'element';
frxReport1.DataSets.Add(frxUserDataSet1);
frxReport1.EnabledDataSets.Add(frxUserDataSet1);
end;
procedure TForm1.frxReport1GetValue(const VarName: String;
var Value: Variant);
var
i: integer;
begin
if CompareText(VarName, 'element') = 0 then
Value := sl[frxUserDataSet1.RecNo];
end;
Ставлю брекпоинт в событии frxReport1GetValue. Но остановки в этом событии не происходит. И в отчете в мемо элементе остается текст 'element'. Такое впечатление, что это событие не обрабатывается frxReport1. Подскажите что я делаю не так.
Или посоветуйте как решить эту проблему.
Комментарии