Динамическое создание отчета с использованием 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. Подскажите что я делаю не так.
Или посоветуйте как решить эту проблему.
Комментарии