Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.12.05;
Скачать: CL | DM;

Вниз

Композитный отчет QReport   Найти похожие ветки 

 
REP   (2002-11-25 07:47) [0]

Вот кусочек исходника

unit UPreView;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
QRPrntr, ToolWin, ComCtrls, ExtCtrls, ImgList, StdCtrls,Printers, Buttons,
QRExport, TeeProcs, TeEngine, Chart, DBChart, QrTee, QuickRpt, Spin;

type
{$WARNINGS OFF}
TfrmPV = class(TForm)
Prev1: TQRPreview;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
private
jPageNum:Integer;
{ Private declarations }
fQRPrinter : TQRPrinter;
public
constructor Create(AOwner : TComponent;
AQRPrinter : TQRPrinter); virtual;

{ Public declarations }
end;

//Создаем класс предварительного просмотра
TQRCustomPreviewInterface = class(TQRPreviewInterface)
public
function Show(AQRPrinter : TQRPrinter) : TWinControl; override;
function ShowModal(AQRPrinter : TQRPrinter): TWinControl; override;
end;
{$WARNINGS ON}

var
frmPV: TfrmPV;

function TQRCustomPreviewInterface.Show(
AQRPrinter: TQRPrinter): TWinControl;
var
frm : TfrmPV;
begin
frm := TfrmPV.Create(Application, AQRPrinter);
frm.Show;
Result := frm;
end;

function TQRCustomPreviewInterface.ShowModal(
AQRPrinter: TQRPrinter): TWinControl;
var
frm : TfrmPV;
begin
frm := TfrmPV.Create(Application, AQRPrinter);
frm.ShowModal;
Result := frm;
end;

procedure TfrmPV.FormShow(Sender: TObject);
begin

...

end;


constructor TfrmPV.Create(AOwner : TComponent;
AQRPrinter : TQRPrinter);
begin
inherited Create(AOwner);
fQRPrinter := AQRPrinter;
Prev1.QRPrinter := AQRPrinter;
end;

procedure TfrmPV.FormCreate(Sender: TObject);
begin

RegisterPreviewClass(TQRCustomPreviewInterface);

end;

В отчете:
procedure TfrmAmort.qrAmortPreview(Sender: TObject);
begin
IF frmMain.ActiveMDIChild is TfrmPV Then
(frmMain.ActiveMDIChild as TfrmPV).Prev1.QRPrinter:=TQRPrinter(Sender);
//frmPV.Show;
end;



Так вот, при создании обычного отчета:
Я пишу

1. Application.CreateForm(TfrmPV, frmPV);
2. frmAmort.qrAmort.Preview;

Выполняются процедуры:
1.
procedure TfrmPV.FormCreate(Sender: TObject);
procedure TfrmPV.FormShow(Sender: TObject);
procedure TfrmPV.FormActivate(Sender: TObject);
2.
procedure TfrmAmort.qrAmortPreview(Sender: TObject);

А если выполять композитный отчет:
Мой код:
1. Application.CreateForm(TfrmPV, frmPV);
2. frmRVyb.CR.Preview;//композитный отчет

Выполняются процедуры:
1.
procedure TfrmPV.FormCreate(Sender: TObject);
procedure TfrmPV.FormShow(Sender: TObject);
procedure TfrmPV.FormActivate(Sender: TObject);
2.
function TQRCustomPreviewInterface.Show( AQRPrinter: TQRPrinter): TWinControl;
constructor TfrmPV.Create(AOwner : TComponent;
AQRPrinter : TQRPrinter);
procedure TfrmPV.FormCreate(Sender: TObject);
procedure TfrmPV.FormShow(Sender: TObject);
procedure TfrmPV.FormActivate(Sender: TObject);

В результате образуется 2 экземпляра формы.
Один пустой второй с отчетом.

Я так понимаю, дело в том, что у композитного отчета нет события OnPreview. но как быть не представляю.

Помогите, кто чем может.


 
Lola ©   (2002-11-25 10:47) [1]

Честно говоря, я даже не стала смотреть код, потому что только на прошлой неделе сама делала композитный отчет.
Для формирования отчета делаешь обработчик события OnAddReport:
procedure TPagesDlg.QRCompositeReport1AddReports(Sender: TObject);
begin
QRCompositeReport1.Reports.Add(QRListForm1.QuickRep1);
QRCompositeReport1.Reports.Add(QRListForm2.QuickRep1);
end;

Предварительный просмотр составного отчета можно выполнить с помощью вызова метода QRCompositeReport1.Preview.
Больше ничего не надо. У меня работает на ура.


 
Lola ©   (2002-11-25 10:54) [2]

А если тебе необходимо обработать OnPreview, то делай это для каждого отчета, или, если надо, для какого-то отдельно.


 
REP   (2002-11-25 11:06) [3]

У меня создается композитный отчет и показывается в окне собственного просмотрщика. Дело в том, что создаю я preview в MDICild окне динамически. Т.е. окон может быть много и у каждого свой заголовок. Так вот, при создании окна создается 2 экземпляра окна. Причем в первом окне присваевается заголовок какой нужно, а сам отчет отображается в другом окне.:(((



Страницы: 1 вся ветка

Текущий архив: 2002.12.05;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.011 c
1-14616
wandp
2002-11-25 01:44
2002.12.05
Помогите начинающему с MEMO


1-14489
Eugene_T
2002-11-26 08:05
2002.12.05
Интерфейс


1-14577
Comp
2002-11-25 19:14
2002.12.05
В чём дело?


3-14407
Valery_N
2002-11-15 15:39
2002.12.05
Подсчет сумм в подчиненной таблице


1-14515
vich
2002-11-23 21:26
2002.12.05
Как повернуть, к примеру TImage