Как передать несколько массивов в отчет

отредактировано 19:35 Раздел: FastReport 4.0
Всем привет.

Есть необходимость передать неколько мссивов в отчет.

Пример, идущий в поставке Fastreports передает 1 массив. У меня есть необходимость передать 4 массива. Как это сделать?

Как делал я:

все мои массивы одинаково длинны. 91 элемент.

На форму положил 4 TfrxUserDataset: ArrayDS1 ArrayDS2 ArrayDS2 ArrayDS4
их name и username в инспекторе объектов обозвал как приведено (жирным) выше

По щелчку кнопки вычисляются зн-я массивов моих: mas0,mas1mas2,mas3


и далее идет код

ArrayDS0.RangeEnd := reCount;
ArrayDS0.RangeEndCount := 91;

ArrayDS1.RangeEnd := reCount;
ArrayDS1.RangeEndCount := 91;


ArrayDS2.RangeEnd := reCount;
ArrayDS2.RangeEndCount := 91;


ArrayDS3.RangeEnd := reCount;
ArrayDS3.RangeEndCount := 91;


и далее идет:

procedure TMain_Form.frxReport1GetValue(const VarName: String;
var Value: Variant);
begin
if CompareText(VarName, 'mas0') = 0 then
Value := mas0[ArrayDS0.RecNo+1];

if CompareText(VarName, 'mas1') = 0 then
Value := mas1[ArrayDS1.RecNo+1];


if CompareText(VarName, 'mas2') = 0 then
Value := mas2[ArrayDS2.RecNo+1];


if CompareText(VarName, 'mas3') = 0 then
Value := mas3[ArrayDS3.RecNo+1];

end;

в итоге по 1-му массиву значения есть..а по остальным не пойми что..

Насколько я понимаю данная процедура

в procedure TMain_Form.frxReport1GetValue(const VarName: String;

расчитана на 1 параметр..и получая его первым - остальные игнорирует..как же тогда решить данную задачу?

Заранее спасибо

Комментарии

  • отредактировано 19:35
    Частично решил этот вопрос но есть другой.

    procedure TMain_Form.frxReport1GetValue(const VarName: String;
    var Value: Variant);

    var Lb_Memo1,Lb_Memo2,Lb_Memo3,Lb_Memo_tv:TfrxMemoView;
    begin
    if CompareText(VarName, 'mas0') = 0 then
    Value := mas0[ArrayDS0.RecNo+1];

    inc(cnt_tot);

    Lb_Memo_tv:=frxReport1.FindObject('Mem_tv') as TfrxMemoView;


    Lb_Memo1:=frxReport1.FindObject('Mem_sy') as TfrxMemoView;

    if Lb_Memo1<>nil then
    Lb_memo1.Text:=FloatToStr(mas1[cnt_tot]);

    ...
    end;

    т.е. использовал пример в из демо для одного массива и добавил данные остальных массивов через FindObject.

    Но проблема другая вылезла. При таком раскладе высота ячеек автоматом не выставляется. Stratched поставил и на tfrxMemo и на masterdata. Не рабоатет при таком раскладе. Для интереса один из tfrxMemo забил кучей текста что бы он высоту поднял в соответствии с его наполнением..и прямо из дизайнера отчетов запустил..все нормлаьно высота выравнивается..а вот при моем примере - нет
  • отредактировано 19:35
    cnt_tot у меня глобальная и обнулена до начала работа отчета.

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

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.