Fast Reports 5.0 в Red Studio XE7
Раздел: Разработки Fast Reports
Добрый день! Знакомлюсь с FastReport встроенном в среду разработке Red Studio XE7. На форме есть компонент StringGrid. Нужно построчно из него вывести в печатную форму в виде ценников на одном листе. С чего начать?
Пока получилось только в собственным переменным созданным Fast Reports присвоить значения одной из строк StringGrid.
Комментарии
В платной версии это делается так:
procedure TfrmPrintStringGridMain.frxReport1BeforePrint(c: TfrxReportComponent);
var
Cross: TfrxCrossView;
i, j: Integer;
begin
if c is TfrxCrossView then
begin
Cross := TfrxCrossView(c);
for i := 1 to 16 do
for j := 1 to 16 do
Cross.AddValue([i], [j], [StringGrid1.Cells[i - 1, j - 1]]);
end;
end;
В бесплатной кроссов нет. Попробуйте через TfrxUserDataset (пример для таблицы. Для грида аналогично)
procedure TfrmUserDataset.frxUserDataSet1First(Sender: TObject);
begin
ADOTable1.First;
end;
procedure TfrmUserDataset.frxUserDataSet1Next(Sender: TObject);
begin
ADOTable1.Next;
end;
procedure TfrmUserDataset.frxUserDataSet1Prior(Sender: TObject);
begin
ADOTable1.Prior;
end;
procedure TfrmUserDataset.frxUserDataSet1CheckEOF(Sender: TObject;
var Eof: Boolean);
begin
Eof := ADOTable1.Eof;
end;
procedure TfrmUserDataset.FormShow(Sender: TObject);
begin
frxUserDataSet1.Fields.Clear;
frxUserDataSet1.Fields.Add('Company');
frxUserDataSet1.Fields.Add('Addr1');
frxUserDataSet1.Fields.Add('Contact');
frxUserDataSet1.Fields.Add('Phone');
frxUserDataSet1.Fields.Add('FAX');
ADOTable1.Active := False;
{$IFNDEF CPUX64}
ADOTable1.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=..\..\Data\demo.mdb';
{$ELSE}
ADOTable1.ConnectionString := 'Provider=Microsoft.ACE.OLEDB.12.0;Data Source=..\..\Data\demo.mdb';
{$ENDIF}
ADOTable1.Active := True;
frxReport1.ShowReport();
Close;
end;
procedure TfrmUserDataset.frxUserDataSet1GetValue(const VarName: String;
var Value: Variant);
begin
if VarName = 'Company' then
Value := ADOTable1.FieldByName('Company').AsString
else if VarName = 'Addr1' then
Value := ADOTable1.FieldByName('Addr1').AsString
else if VarName = 'Contact' then
Value := ADOTable1.FieldByName('Contact').AsString
else if VarName = 'Phone' then
Value := ADOTable1.FieldByName('Phone').AsString
else if VarName = 'FAX' then
Value := ADOTable1.FieldByName('FAX').AsString;
end;