Como reiniciar a contagem de linhas a cada inicio da página e limitando o número de registro nela inserida?
Exemplo:
Pagina 1
1. Fulano de tal
2. Beltrano de Tal
3. Devmedia
4. ClubeDelphi
Pagina 2
1. Dicas de Delphi
2. Conteudo FastReports
3. Outros não especificados
4. Conteúdo fácil
Vocês podem perceber que quero reiniciar a contagem de linha cada vez que uma nova página é adicionada dinamicamente de acordo com a quantidade de registros.
Vamos lá:
- No Masterdata sempre deixe a quantidade de registros igual a 0 (zero), basta dar clique duplo em cima do seu masterdata;
- Com o masterdata selecionado, clique na aba eventos;
- Ja na aba eventos clique duas vezes em OnBeforePrint;
- Antes do inicio da procedure declare a variavel var contarlinha:integer;
- Dentro do Begin e End insira o codigo abaixo:
inc(contarlinha);
linharegistro.Text := inttostr(contarlinha);
MasterData1.StartNewPage := contarlinha = 20;
Comentário:
contarlinha = Nome do Nosso contador que será reiniciado a cada página
inc = Função que irá acrescentar números a variavel contarlinha
linharegistro = Nome de nossa MEMO que exibe o numero da linha dentro do MasterData1
MasterData1 = Nome da Banda que exibe os dados
Inttostr = Converte inteiro para string para poder ser inserido dentro do componente MEMO que é do tipo texto;
20 = É o número de registro que queremos exibir em cada página.
Continuando...
Após inserir o conteúdo no evento OnBeforePrint do MasterData1, vamos inserir agora o código abaixo dentro do evento OnBeforePrint do componente MEMO (nomeado para linharegistro em nosso exemplo), deve ser feito dentro do Begin e End:
If contarlinha > 20 then
begin
contarlinha := 20-20;
inc(contarlinha);
linharegistro.Text := inttostr(contarlinha);
Comentário:
Quando o contador for maior que 20 o sistema fara a subtração de 20-20, ou seja, numero de registro por página (-) menos numero de registro por página, assim ira fazer com que o contador inicie do 1(um) novamente, utilizando a função inc() e após isso torna a gravar o resultado na linharegistro.
Código completo para análise:
var contarlinha:integer;
procedure MasterData1OnBeforePrint(Sender: TfrxComponent);
begin
inc(contarlinha);
linharegistro.Text := inttostr(contarlinha);
MasterData1.StartNewPage := contarlinha = 20;
end;
procedure linharegistroOnBeforePrint(Sender: TfrxComponent);
begin
If contarlinha > 20 then
begin
contarlinha := 20-20;
inc(contarlinha);
linharegistro.Text := inttostr(contarlinha);
end;
end;
begin
end.
Espero que esse exemplo possa ajudar alguém, algum dia, fica aí dica, e se precisar me envie uma mensagem que posso estar esclarecendo mais sobre esse assunto