高手请进,关于开发自定义打印预览控件,继承Tquickrep。但是就是不能显示自定义的打印预览窗体,而都是显示quickreport自已定义的窗体。 以下是控件

  • 主题发起人 主题发起人 saellen
  • 开始时间 开始时间
S

saellen

Unregistered / Unconfirmed
GUEST, unregistred user!
高手请进,关于开发自定义打印预览控件,继承Tquickrep。但是就是不能显示自定义的打印预览窗体,而都是显示quickreport自已定义的窗体。 以下是控件源程序,请问就如何修改?来者有分,不够再加. (50分)<br />unit IceQuickRep;
interface

uses
Windows, Messages, SysUtils, Classes, forms, Controls, ExtCtrls, QuickRpt, QRPrntr;
type
TIceQuickRep = class(TquickRep)
private
protected
procedure preview; dynamic;
public
{ Public declarations }
published
{ Published declarations }
property onpreview;
end;

procedure Register;

implementation
uses Pview;

procedure Register;
begin
RegisterComponents('iceboy', [TIceQuickRep]);
end;

procedure TIceQuickRep.preview;
begin
with TfrmPview.Create(Application) do //这里是打印预览窗体。
begin
QRPreview1.QRPrinter := TQRPrinter(getparentform(self));
CurRep := self;
show;
end;
end;

 
TICEReport = class(TQuickRep)
private
FOnPreview: TNotifyEvent;
procedure DoPreview(Sender: TObject);
public
constructor Create(AOwner: TComponent); override;
published
property OnPreview: TNotifyEvent read FOnPreview write FOnPreview;
end;
----------------------------
procedure TICEReport.Create(AOwner: TComponent);
begin
inherited;
inherted OnPreview := DoPreview;
end;

procedure TICEReport.DoPreview(Sender: TObject);
begin
if Assigned(FOnPreview) then
FOnPreview(Sender)
else
with TfrmPview.Create(Application) do //这里是打印预览窗体。
begin
QRPreview1.QRPrinter := TQRPrinter(getparentform(self));
CurRep := self;
show;
end;
end;

------------------------------------------------
上面的代码是可以了,不过我不这样用
我的预览窗有一个接口函数,建立TQuickRep,然后传给预览窗,由预览窗来处理,
这样好控制,可以ShowModal
 
To: 203010
能不能介绍一下你是怎样实现你的预览窗呢?
我的E-mail: delphibbs@163.com
OICQ:12063075
 
也简单,做个Preview窗,然后在Preview窗的代码里
1、写个方法
procedure TPreviewForm.DoPreview(Sender: TObject);
begin
QRPreview.QRPrinter := TQRPrinter(Sender);
^^^^^^^^^这是你那个QRPreview控件
end;
2、写接口方法
class procedure TPreviewForm.Execute(AReport: TQuickRep);
begin
with TPreviewForm.Create(Application) do
try
FActived := False; //这是个Boolean的私有变量,后边会用,这里初始化为False
FReport := AReport; //用一个私有变量保存AReport
FReport.OnPreview := DoPreview;
ShowModal;
finally
Free;
end;
end;
3、给PreviewForm写一个OnActivate事件
begin
if not FActived then
begin
FActived := False;
FReport.Preview;
end;
end;
 
To: 203010
您好.
我用你提供的方面,做成动态链接库的话,动态链接库生成的窗体就变的关不掉的,如果是
平常的窗体形式,都是在showmodal这里出错,请指教是为什么呢?
是否可以把你的源代码寄一份给我呢?
 
关不掉的话,这样试试:
放个退出Button,然后执行
QRPreview.QRPrinter := nil;
PostMessage(Handle, WM_Close, 0, 0);

另:ShowModal出错,不知道为什么,你先找找原因

原码发了,编译不了的,不过代码不多很容易看懂
 
接受答案了.
 
后退
顶部