Форум: "Основная";
Текущий архив: 2002.12.05;
Скачать: [xml.tar.bz2];
ВнизКомпозитный отчет 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;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.011 c