做中文界面的打印预览(50分)

  • 主题发起人 主题发起人 wangabc
  • 开始时间 开始时间
W

wangabc

Unregistered / Unconfirmed
GUEST, unregistred user!
谁能告诉我用DELPHI5的原有控件怎样能够做出漂亮的有中文界面的打印预览
 
汉化资源
 
to dz2050
汉化资源是什么意思?
 
去网上下在吧,有这些汉化包的
比如说要汉化qreport,就要更改delphi6/lib目录下的qr*.dcu文件
 
to naughtboy
请问哪里有下载
 
用qrpreview控件自己做吧, 相当简单:
用qrpreview控件显示报表。 其它按钮都自己做。 按钮的事件几乎都是一行代码解决问题。
只要在QuickRep1.OnPreview中指定
qrpreview1.qrprinter := TQrPrinter(sender);
就可以关联报表和qrpreview控件了
qrpreview.qrprinter.pagecount可以知道总共几页。
qrpreview.PageNumber属性可以设置当前显示那一页。
qrpreview.zoom属性可以设置缩放比例。
quickrep.printersetup可以调出打印机设置。
qrpreview.qrprinter.print可以打印报表。
用上面几个属性和方法就可以很容易做出自定义的预览窗口(弹出窗口或当前界面的一部分都可以)了
别忘了退出时调用一下qrpreview1.qrprinter:=nil;
 
to pearl.
我用你的方法试了一下,不好使。我是这么试的,我是把quickrep1和qrpreview1两个
控件放在一个表单里,然后写上那行代码,当quickrep1 预览时什么也没有,不知道哪里
出了问题。麻烦你能不能解释的更详细些,在此深表感谢。
 
反正DELPHI里自带了QUICKREPORT的预览窗体文件(.dfm),你用
DELPHI打开它,把里面的英文改成中文不就行了,我就是这么做的。
 
>>我是把quickrep1和qrpreview1两个控件放在一个表单里
问题就出在这里, 你肯定漏了一句话
请在QuickRep1.Preview前加上:
那个包含qrpreview控件的form.Show
 
to pearl.:
谢谢你告诉我这么详细,我按你教的方法,显示出了正确预览,
但还有一些地方不近如人意或者还有弄不明白的地方。你能不能给
发一个你自己做的完整的打印预览程序代码,我将表示衷心的感谢。
发到即给分。
 
嗯.....完整程序要求太高了吧? (我没做过专门的报表预览form或控件, 只在我做的程序中某个当前显示界面上放一个qrpreview)
只能给你一些代码片断(临时加了点注释希望你能看懂):
procedure TForm1.QRPreview1PageAvailable(Sender: TObject;
// qrpreview1.OnPageAvailable事件
PageNum: Integer);
begin
label1.caption := format('%d/%d',[qrpreview1.PageNumber, qrpreview1.QRPrinter.PageCount]);
// label1 显示 "当前页/总页数"
end;

procedure TForm1.SpeedButton1Click(Sender: TObject);
// speedbutton1 为显示第一页
begin
qrpreview1.PageNumber := 1;
QRPreview1PageAvailable(nil, 1);
end;

procedure TForm1.SpeedButton4Click(Sender: TObject);
// speedbutton4为"前一页"
begin
if qrpreview1.PageNumber>1 then
begin
qrpreview1.PageNumber := qrpreview1.PageNumber-1;
QRPreview1PageAvailable(nil, 0);
// 更新label1.caption
end;
end;

procedure TForm1.SpeedButton3Click(Sender: TObject);
// "后一页"
begin
if assigned(qrpreview1.qrprinter) then
if qrpreview1.pagenumber < qrpreview1.qrprinter.PageCount then
begin
qrpreview1.pagenumber := qrpreview1.PageNumber+1;
QRPreview1PageAvailable(nil, 0);
end;
end;

procedure TForm1.SpeedButton2Click(Sender: TObject);
// "最后一页"
begin
if assigned(qrpreview1.qrprinter) then
begin
qrpreview1.PageNumber := qrpreview1.QRPrinter.PageCount;
QRPreview1PageAvailable(nil, 0);
end;
end;

procedure TForm1.SpeedButton6Click(Sender: TObject);
// "打印机设置"
begin
// TTinyOutlookBar是Another_eYes大虾写的一个类似outlookbar的pagecontrol控件, 动画切换哦。
// 我在各个页面上上放了不同的控制各个报表生成条件的东东(edit啦,listbox啦,combobox啦,
// 当然也是another_eYes大虾的控件)
if tinyoutlookbar3.Actived then

form2.QuickRep1.PrinterSetup
else
if tinyoutlookbar7.Actived then
form2.QuickRep2.PrinterSetup
else
if tinyoutlookbar4.actived then
form3.QuickRep1.PrinterSetup
else
if tinyoutlookbar5.Actived then
form3.QuickRep2.PrinterSetup;
end;

procedure TForm1.SpeedButton5Click(Sender: TObject);
// "打印"
begin
if assigned(qrpreview1.qrprinter) then
begin
speedbutton5.enabled := false;
qrpreview1.QRPrinter.Print;
speedbutton5.enabled := true;
end;
end;

procedure TForm1.SpeedButton8Click(Sender: TObject);
// "缩小显示模式"
begin
qrpreview1.ZoomToFit;
end;

procedure TForm1.SpeedButton7Click(Sender: TObject);
// 全真显示模式
begin
qrpreview1.Zoom := 100;
end;

procedure TForm1.TinyBrightBtn4Click(Sender: TObject);
// 某个page上的"执行"按钮
// TTinyBrightBtn是一个类似speedbutton的控件,不同的是鼠标移上去时出现的不是一个突出来的方框,
// 而是沿图片和文字边缘出现一圈光晕, 点击时文字和图片下陷并且光晕加大加深
begin
killpreview;
form2.QuickRep1.Preview;
end;

procedure TForm1.KillPreview;
// 删除上一次报表的preview结果,在程序退出时也调用了一次
begin
killformedtfocus(self);

// another_eYes大虾控件包中提供的一个函数。
// 他说如果用了他的tiny组控件,在speedbutton类button点击事件里最好先调用这句
qrpreview1.QRPrinter := nil;
label1.caption := '1/0';
end;

//报表form, 里面放了几个TQuickRep, 举一个例子
procedure TForm2.QuickRep1Preview(Sender: TObject);
// quickrep1.onpreview
begin
form1.QRPreview1.QRPrinter := tqrprinter(sender);
form1.speedbutton8.Down := true;
end;
 
接受答案了.
 
后退
顶部