Olá, venho pela primeira vez deixar a minha contribuição, e sendo a primeira vou postar uma dica sobre o FastReports;

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