Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rzzanatta

Como fazer um Índice de Páginas? (FastReport)

Recommended Posts

Olá gostaria de saber como fazer um índice de páginas no meu relatório( fastresport).
tipo, a página 2 seria o índice de paginas e vou armazenando os dados que u quero em uma string no decorrer da montagem do relatório, e no final do relatório, que seria a pagina Conclusão ele faria o índice, que jogaria a string com as informações que guardou quando montou o relatório e jogaria no memoIndice que esta na página 2 que é a página de índice. Mas não estou conseguindo fazer o MemoIndice ser atualizado apos impresso na tela.
alguém saberia me informar se tem como fazer isso, ou tem como fazer de forma diferente?
Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo!

 

Li, reli e não compreendi muito bem o que você deseja. Entendi a parte que você quer atualizar um campo memo com as informações de páginas do seu relatório. Mas não compreendi o que seria esse índice, ou melhor, o porque e pra que.

 

Se tiver paciência de me explicar pode ser que eu consiga te ajudar.

 

Até a próxima. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

vamos lá rs, nao expliquei muito mesmo, desculpas...

Eu estou montando um relatorio no FastReports, tipo um TCC, monografia, que tenha capa, indices de páginas, conteudo do relatorio com procedimentos etcs, anexos, e conclusao, mas como a pagina de Indices de Pagina é a segunda na sequencia, eu nao consigo no final da montagem do relatorio no fastreport atualizar as informações na pagina 2 que é a do indice de paginas...

espero ter sido mais claro..

Obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo.

 

Sim, compreendi agora. Você pode compartilhar parte do que fez para que eu possa analisar e tentar lhe ajudar?

 

Até a próxima. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho um MasterData (mdIndice) que tem o MemoIndice que recebe o Texto montado ao longo da montagem do relatório no FastReport.

Tenho vários MasterData de procedimentos, utilizados na manutenção dos equipamentos da empresa, onde cada procedimento tem suas características e tal, mas só salvo a descrição do procedimento e a numeração dele e a página em uma String (StringIndice), e em cada MasterData eu faço o seguinte código:

 

procedure mdEnsaiosOnBeforePrint(Sender: TfrxComponent);

var

i, VTotal, VString, Resultado : Integer;

DadosMeio : String;

Begin

VString := Length('1. PROCEDIMENTOS); //aqui verifico a quantidade de letras para depois colocar pontos no final e inserir o numero da pagina

VTotal := VTotalPontos - VString; //eu defini que tem na tela 85 caracteres VTotalPontos = 85

for i:= 0 to VTotal do //faço com que preencha os espaços até o fim para depois por o numero da pagina

begin

DadosMeio := DadosMeio + '.';

end;

TextoIndice := TextoIndice + '1. PROCEDIMENTOS ' + DadosMeio + ' ' + intToStr(<Page#>) + #13#10;

DadosMeio := '';

VString := 11 + Length(<frxdsFaixas."descricao">);

VTotal := VTotalPontos - VString;

for i:= 0 to VTotal do

begin

DadosMeio := DadosMeio + '.';

end;

TextoIndice := TextoIndice + ' 1.' + IntToStr(nEnsaios) + ' ' + <frxdsFaixas."descricao"> + ' ' + DadosMeio + ' ' + intToStr(<Page#>) + #13#10;

DadosMeio := '';

End;

E assim, vai, se existir alguma imagem vincula a algum procedimento nessa parte ele irá inserir junto do procedimento, então aumentando o tamanho do relatório, e no final após terminar de montar o relatório, na pagina da Conclusao que é a ultima MasterData, eu jogaria essa StringIndice no MemoIndice da Página 2:

 

procedure mdConclusaoOnBeforePrint(Sender: TfrxComponent);

begin

if engine.finalpass then

begin

MemoIndice.Text := StringIndice;

End;

End;

 

Mas não consigo atualizar no final do relatório esse MemoIndice da Pagina 2 com StringIndice montada na confecção do relatorio, pois o relatório dependendo da quantidade de procedimentos aplicados no equipamento da empresa vai ter 8, 10, 15 , 20 paginas, não dá pra ter uma média de paginas, tudo depende do que será feito no equipamento.

É isso que eu posso mostrar que a empresa autoriza. Espero ter mais ou menos mostrado como estou tentando fazer...

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigo.

 

Sim, deu pra entender o que você está querendo fazer. Se você já tem todo conteúdo para ser impresso na sua página de indices, não teria como acrescentá-lo no evento BeforePrint do próprio fast report? Pra cada master detail você tem um evento vinculado para capturar as informações de que precisa, mas antes de imprimir o relatório como um todo, não tem como vinculá-lo nesse momento?

 

Obs: Veja sua caixa de mensagens, lhe enviei uma msg.

 

Até a próxima. :thumbsup:

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia eu estou tentando fazer um Índice também, sou iniciante não estou conseguindo alguem pode me ajudar, me baseei nesse código só que não consigo usar as variáveis.

 

 

esse é o meu código

 

procedure GroupHeader1OnBeforePrint(Sender: TfrxComponent);

var

i, VTotal, VString, Resultado, VTotalPontos : Integer;

DadosMeio: String;

begin

VTotalPontos := 180;

VString := Length(<frxDBDataset1."Folha_Descricao">); //aqui verifico a quantidade de letras para depois colocar pontos no final e inserir o numero da pagina

VTotal := VTotalPontos - VString; //eu defini que tem na tela 85 caracteres VTotalPontos = 85

for i:= 0 to VTotal do //faço com que preencha os espaços até o fim para depois por o numero da pagina

begin

DadosMeio := DadosMeio + '.';

end;

//Memo5.text := (<frxDBDataset1."Folha_Descricao"> + DadosMeio + intToStr(<Page#>) + #13#10);

StringIndice := (<frxDBDataset1."Folha_Descricao"> + DadosMeio + ' ' + intToStr(<Page#>) + #13#10);

DadosMeio := '';

end;

 

procedure Page5OnBeforePrint(Sender: TfrxComponent);

begin

//teste := Indice;

//Memo4.Text := StringIndice;

Memo4.text := StringIndice;

//Memo4.text := StringIndice;

end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.