Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
3-14442
koks
2002-11-06 13:37
2002.12.05
D5, IB6, WinXP


6-14722
Piton X
2002-10-09 09:22
2002.12.05
Как узнать список имен компьютеров в сети?


8-14699
Groove
2002-06-19 15:37
2002.12.05
mediaplayer & tarckbar


3-14363
KMZ
2002-11-11 14:30
2002.12.05
Привет всем!, Trigger в MS SQL Server


14-14816
lak
2002-11-14 17:27
2002.12.05
флэш в делфях





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский