您的位置:程序门 -> delphi -> vcl组件开发及应用



quick.report.pro.v4.07.delphi.2007 打印预览汉化问题


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


quick.report.pro.v4.07.delphi.2007 打印预览汉化问题[已结贴,结贴人:kingkee]
发表于:2007-09-05 12:07:39 楼主
我在delphi   2007   下使用   quick.report.pro.v4.07.delphi.2007。
现打算把打印预览窗体中的显示信息改为中文,   qrprev.dfm   qrprev.pas

我把按钮英文提法改为中文后,编译包,把.bpl   .dcp   分发到   ..\codegear\rad   studio\5.0\\bin     以及   \codegear\rad   studio\5.0\quickrep\bpl   下,  
可重新build原来的工程后,预览窗体中的按钮提示信息仍然是英文。

请问如何解决?
发表于:2007-09-05 13:10:541楼 得分:20
编译后,找到bpl再手动安装quickreport
发表于:2007-09-05 13:15:582楼 得分:0
还是没有用啊
发表于:2007-09-05 13:26:513楼 得分:0
把编译后的bpl和dcp放到我的文档中的bdsproject/bpl文件夹中,2006好像是这个目录,2007没用过,不太清楚,你找找
发表于:2007-09-05 13:31:334楼 得分:0
quickreport   4.07   原来的安装程序安装后,   它是bpl就只在这两个目录中:

..\codegear\rad   studio\5.0\\bin
..\codegear\rad   studio\5.0\quickrep\bpl  

真是搞不懂了。

我查了   .bpl   文件中(二进制文件),修改的文字已经在里面了,   可新建工程编译运行后,仍然是英文提示。
发表于:2007-09-05 13:36:145楼 得分:0
可以在beforeprint里头对预览窗口直接进行获取按钮对象,然后对其进行汉化。
发表于:2007-09-05 13:37:516楼 得分:0
以下小代码可以实现把   close   按钮汉化成“关闭”

procedure   tform2.quickrepbeforeprint(sender:   tcustomquickrep;
    var   printreport:   boolean);
var
    i,j:   integer;
    fmpreview:   tform;
    tbar,   tbutton:   tcomponent;
begin
    if   (quickrep.qrprinter.client=nil)   or
          (not   (quickrep.qrprinter.client.parent   is   tform))   then   exit;
    fmpreview   :=   tform(quickrep.qrprinter.client.parent);

    for   i   :=   0   to   fmpreview.controlcount   -   1   do
    begin
        tbar   :=   fmpreview.controls[i];
        if   tbar   is   ttoolbar   then
        begin
            for   j   :=   0   to   ttoolbar(tbar).controlcount   -   1   do
            begin
                tbutton   :=   ttoolbar(tbar).controls[j];
                if   (tbutton   is   tspeedbutton)   then
                begin
                    tspeedbutton(tbutton).font.name   :=   '宋体';
                    tspeedbutton(tbutton).font.size   :=   9;
                    tspeedbutton(tbutton).hint   :=   '关闭';
                    tspeedbutton(tbutton).caption   :=   '关闭';
                end;
            end;
        end;
    end;
end;
发表于:2007-09-05 13:45:027楼 得分:0
我是指直接调用       quickrep1.preview;     出现的打印预览窗体。
发表于:2007-09-05 14:21:458楼 得分:0
tquickrep   报表对象有一个   beforeprint   事件,在响应时间里头做汉化。
发表于:2007-09-05 14:40:559楼 得分:80
unit   unit2;

interface

uses
    windows,   messages,   sysutils,   variants,   classes,   graphics,   controls,   forms,
    dialogs,   db,   adodb,   quickrpt,   qrctrls,   extctrls,toolwin,
    comctrls,   buttons;

type
    tform2   =   class(tform)
        quickrep:   tquickrep;
        qrdbtext1:   tqrdbtext;
        qrlabel1:   tqrlabel;
        qrband1:   tqrband;
        qrlabel2:   tqrlabel;
        qrdbtext2:   tqrdbtext;
        adodataset1:   tadodataset;
        procedure   quickrepbeforeprint(sender:   tcustomquickrep;
            var   printreport:   boolean);
    private
        {   private   declarations   }
    public
        {   public   declarations   }
        procedure   doprint();
    end;

var
    form2:   tform2;

implementation

{$r   *.dfm}

//quickrep   汉化的函数
procedure   g_initquickrpt(const   quickrpt:   tquickrep);
var
    i,j:   integer;
    fmpreview:   tform;
    tbar,   tbutton:   tcomponent;
begin
    if   (quickrpt.qrprinter.client=nil)   or
          (not   (quickrpt.qrprinter.client.parent   is   tform))   then   exit;
    fmpreview   :=   tform(quickrpt.qrprinter.client.parent);

    for   i   :=   0   to   fmpreview.controlcount   -   1   do
    begin
        tbar   :=   fmpreview.controls[i];
        if   tbar   is   ttoolbar   then
        begin
            for   j   :=   0   to   ttoolbar(tbar).controlcount   -   1   do
            begin
                tbutton   :=   ttoolbar(tbar).controls[j];
                //汉化工具栏的   ttoolbutton   按钮
                if   tbutton   is   ttoolbutton   then
                begin
                    //根据tbutton.name作汉化。
                    if   lowercase(tbutton.name)='zoomfit'   then   ttoolbutton(tbutton).hint   :=   '适合整页';
                    if   lowercase(tbutton.name)='zoom100'   then   ttoolbutton(tbutton).hint   :=   '原始比例';
                    if   lowercase(tbutton.name)='zoomtowidth'   then   ttoolbutton(tbutton).hint   :=   '适合页宽';
                    if   lowercase(tbutton.name)='firstpage'   then   ttoolbutton(tbutton).hint   :=   '首页';
                    if   lowercase(tbutton.name)='previouspage'   then   ttoolbutton(tbutton).hint   :=   '上一页';
                    if   lowercase(tbutton.name)='toolbutton2'   then   ttoolbutton(tbutton).hint   :=   '下一页';
                    if   lowercase(tbutton.name)='lastpage'   then   ttoolbutton(tbutton).hint   :=   '末页';
                    if   lowercase(tbutton.name)='toolbutton3'   then   ttoolbutton(tbutton).hint   :=   '跳转到';                    
                    if   lowercase(tbutton.name)='printsetup'   then   ttoolbutton(tbutton).hint   :=   '打印设置';
                    if   lowercase(tbutton.name)='print'   then   ttoolbutton(tbutton).hint   :=   '打印';
                    if   lowercase(tbutton.name)='savereport'   then   ttoolbutton(tbutton).hint   :=   '保存报表';
                    if   lowercase(tbutton.name)='loadreport'   then   ttoolbutton(tbutton).hint   :=   '打开报表';
                end;
                //汉化   tspeedbutton   按钮,好像就一个   close   按钮。
                if   (tbutton   is   tspeedbutton)   then
                begin
                    tspeedbutton(tbutton).font.name   :=   '宋体';
                    tspeedbutton(tbutton).font.size   :=   9;
                    tspeedbutton(tbutton).hint   :=   '关闭';
                    tspeedbutton(tbutton).caption   :=   '关闭';
                end;
            end;
        end;
    end;
end;

procedure   tform2.doprint();
begin
    quickrep.preview;
end;

procedure   tform2.quickrepbeforeprint(sender:   tcustomquickrep;   var   printreport:   boolean);
begin
    //汉化工作.
    g_initquickrpt(quickrep);
end;

end.
发表于:2007-09-05 15:06:5610楼 得分:0
to   lynmison:   非常感谢你的热心,你的思路也不错。       你的分我是给定了。   :)

我再等等看,有没有我题目中的解决办法。


快速检索

最新资讯
热门点击