Essa dica é para dar uma opção de rolagem no relatório do QuickReport ou para quem usa também a classe TQRPrinter.
1 - para traduzir seu relatório coloque essa função no beforeprint:
procedure TF_TFtApl.QuickRep1BeforePrint(Sender: TCustomQuickRep; var PrintReport: Boolean); begin // Configurar o Preview...
SetupStandardPreview('Visualizaçao do Relatório '+QuickRep1.ReportTitle); end;
2 - E na função escreva o seguinte:
{ Redefine hints de botoes e o caption da janela de preview } procedure SetupStandardPreview(PreviewTitle: String); begin with TQRStandardPreview(Application.FindComponent('QRStandardPreview')) do begin
ZoomFit.Hint := 'Janela Inteira';
Zoom100.Hint := 'Zoom';
ZoomToWidth.Hint := 'Largura da Página';
FirstPage.Hint := 'Primeira Página';
PreviousPage.Hint := 'Página Anterior';
ToolButton2.Hint := 'Próxima Página';
LastPage.Hint := 'Ultima Página';
PrintSetup.Hint := 'Configurar Impressora';
Print.Hint := 'Imprimir';
SaveReport.Hint := 'Salvar relatório';
LoadReport.Hint := 'Abrir relatório salvo previamente';
ExitButton.Caption := '&Fechar';
ExitButton.Width := 60;
ExitButton.Hint := 'Fechar tela de visualização';
Caption := PreviewTitle;
OnKeyPress := F_princ.KPRESS;
OnMouseWheel := F_princ.MouseWheel; end; end;
3 - Até aqui todos sabem fazer, mas tem o KPRESS e MouseWheel:
procedure TF_Princ.MouseWheel(Sender: TObject; Shift: TShiftState;
WheelDelta: Integer; MousePos: TPoint; var Handled: Boolean); begin with TQRStandardPreview(Application.FindComponent('QRStandardPreview')) do begin
Application.ProcessMessages;
VertScrollBar.Range := 1350;
VertScrollBar.Position := VertScrollBar.Position - trunc(WheelDelta / 4); end; end;
e ... para rolar com as teclas...
procedure TF_Princ.KPRESS(Sender: TObject; var Key: Char); begin with TQRStandardPreview(Application.FindComponent('QRStandardPreview')) do begin case key of
'8': begin
Application.ProcessMessages;
VertScrollBar.Range := 1350;
VertScrollBar.Position := VertScrollBar.Position - 30; end;
'2': begin
Application.ProcessMessages;
VertScrollBar.Range := 1350;
VertScrollBar.Position := VertScrollBar.Position + 30; end; end; end; end;
Conclusão: se não pode rolar o relatório, role o form inteiro...