Как передать несколько массивов в отчет
Всем привет.
Есть необходимость передать неколько мссивов в отчет.
Пример, идущий в поставке 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 параметр..и получая его первым - остальные игнорирует..как же тогда решить данную задачу?
Заранее спасибо
Есть необходимость передать неколько мссивов в отчет.
Пример, идущий в поставке 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 параметр..и получая его первым - остальные игнорирует..как же тогда решить данную задачу?
Заранее спасибо
Комментарии
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 забил кучей текста что бы он высоту поднял в соответствии с его наполнением..и прямо из дизайнера отчетов запустил..все нормлаьно высота выравнивается..а вот при моем примере - нет