Olá pessoal, bem vindos a mais uma aula de Fast Report. Desta vez iremos falar sobre impressão de etiquetas.
Primeiro iremos preparar nosso ambiente de dados. Geralmente eu uso uma tabela temporária (em memória ou ClientDataSet - qual você estiver acostumado a usar), pra poder preencher os dados das etiquetas, com uma estrutura simples:
Texto1 - String - 100
Texto2 - String - 100
Primeiro iremos preparar nosso ambiente de dados. Geralmente eu uso uma tabela temporária (em memória ou ClientDataSet - qual você estiver acostumado a usar), pra poder preencher os dados das etiquetas, com uma estrutura simples:
Texto1 - String - 100
Texto2 - String - 100
Texto3 - String - 100
Texto4 - String - 100
Texto5 - String - 100
Dessa forma, eu pego os dados de qualquer tabela e vou inserindo nessa tabela temporária. Assim eu consigo, por exemplo, imprimir várias cópias da mesma etiqueta, como por exemplo, quando é necessário etiquetar produtos, e existem várias peças de um mesmo produto. Veja um exemplo de produtos/estoque:
Primeiro eu percorro a tabela, e vou inserindo um registro pra cada item. Se o item possui estoque maior que um 1 (por exemplo, estoque = 10), eu insiro 10 registros do mesmo item. Veja o código abaixo:
procedure ...
var i: Integer;
begin
// ABRE TABELA COM DADOS
qProdutos.Close;
qProdutos.SQL.Text := 'SELECT codigo, descricao, marca, preco_venda, '+
'estoque, unidade, cod_barras FROM produtos';
qProdutos.Open;
// LIMPA TABELA TEMPORARIA
memDados.Close;
memDados.Open;
while not qProdutos.Eof do
begin
for i := 1 to qProdutos.FieldByname('estoque').AsInteger do
begin
memDados.Append;
memDadosTexto1.AsString := qProdutos.FieldByname('codigo').AsString;
memDadosTexto2.AsString := qProdutos.FieldByname('descricao').AsString;
memDadosTexto3.AsString := qProdutos.FieldByname('marca').AsString;
memDadosTexto4.AsString := FormatFloat(',0.00', qProdutos.FieldByname('preco_venda').AsCurrency);
memDadosTexto5.AsString := qProdutos.FieldByname('cod_barras').AsString;
memdados.Post;
end;
qProdutos.Next;
end;
qProdutos.Close;
frxReport1.Clear;
frxReport1.LoadFromFile(ExtractFilePath(ParamStr(0))+'Etiquetas.fr3');
frxReport1.ShowReport;
end;
Agora, adicione o componente frxBarCodeObject ao form, e vamos ao designer do Fast. Adicione somente a banda MasterData, ligue ela a sua tabela temporária.
Nós temos que configurar a colunas. Existem duas formas de fazer isso:
Na página: desta forma as etiquetas irão ser formadas no sentido vertical, ou seja, a primeira coluna será preenchida até o fim da página, e só então a segunda coluna será preenchida, e assim sucessivamente, até finalizar a página inteira.
No MasterData: as colunas serão preenchidas no sentido horizontal, ou seja, a primeira coluna, a segunda coluna, a terceira...., depois será aberta uma nova linha de colunas e o processo inicia novamente. Veja os prints:
Agora só adicionar os componentes dentro das etiquetas e executar.
O componente código de barras, ao ser inserido no relatório, vai exibir o seguinte formulário:
Caso você deseje configurar as etiquetas na página, a propriedade é Columns, mas se for no MasterData, use as propriedades:
Columns: quantidade de colunas
ColumnWidth: largura da coluna
ColumnGap: distância entre colunas.
Não esquçam de configurar as margens da página também.
Bom pessoal, por hoje é isso. Em casos de dúvidas, ou elogios (hehehe), usem os comentários.
Dessa forma, eu pego os dados de qualquer tabela e vou inserindo nessa tabela temporária. Assim eu consigo, por exemplo, imprimir várias cópias da mesma etiqueta, como por exemplo, quando é necessário etiquetar produtos, e existem várias peças de um mesmo produto. Veja um exemplo de produtos/estoque:
Primeiro eu percorro a tabela, e vou inserindo um registro pra cada item. Se o item possui estoque maior que um 1 (por exemplo, estoque = 10), eu insiro 10 registros do mesmo item. Veja o código abaixo:
procedure ...
var i: Integer;
begin
// ABRE TABELA COM DADOS
qProdutos.Close;
qProdutos.SQL.Text := 'SELECT codigo, descricao, marca, preco_venda, '+
'estoque, unidade, cod_barras FROM produtos';
qProdutos.Open;
// LIMPA TABELA TEMPORARIA
memDados.Close;
memDados.Open;
while not qProdutos.Eof do
begin
for i := 1 to qProdutos.FieldByname('estoque').AsInteger do
begin
memDados.Append;
memDadosTexto1.AsString := qProdutos.FieldByname('codigo').AsString;
memDadosTexto2.AsString := qProdutos.FieldByname('descricao').AsString;
memDadosTexto3.AsString := qProdutos.FieldByname('marca').AsString;
memDadosTexto4.AsString := FormatFloat(',0.00', qProdutos.FieldByname('preco_venda').AsCurrency);
memDadosTexto5.AsString := qProdutos.FieldByname('cod_barras').AsString;
memdados.Post;
end;
qProdutos.Next;
end;
qProdutos.Close;
frxReport1.Clear;
frxReport1.LoadFromFile(ExtractFilePath(ParamStr(0))+'Etiquetas.fr3');
frxReport1.ShowReport;
end;
Agora, adicione o componente frxBarCodeObject ao form, e vamos ao designer do Fast. Adicione somente a banda MasterData, ligue ela a sua tabela temporária.
Nós temos que configurar a colunas. Existem duas formas de fazer isso:
Na página: desta forma as etiquetas irão ser formadas no sentido vertical, ou seja, a primeira coluna será preenchida até o fim da página, e só então a segunda coluna será preenchida, e assim sucessivamente, até finalizar a página inteira.
Agora só adicionar os componentes dentro das etiquetas e executar.
O componente código de barras, ao ser inserido no relatório, vai exibir o seguinte formulário:
Caso você deseje configurar as etiquetas na página, a propriedade é Columns, mas se for no MasterData, use as propriedades:
Columns: quantidade de colunas
ColumnWidth: largura da coluna
ColumnGap: distância entre colunas.
Não esquçam de configurar as margens da página também.
Bom pessoal, por hoje é isso. Em casos de dúvidas, ou elogios (hehehe), usem os comentários.
Obrigado por compartilhar o conhecimento.
ResponderExcluirObrigado por compartilhar!!
ResponderExcluir