⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 20010714001.htm

📁 C++Builder教学大全
💻 HTM
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<HTML><HEAD><TITLE>在C ++ Builder中自定义预览窗口</TITLE>

<META content="text/html; charset=gb2312" http-equiv=Content-Type>

<META content="Microsoft FrontPage 4.0" name=GENERATOR></HEAD>

<BODY aLink=#ff0000 bgColor=#ffffff leftMargin=0 link=#187800 topMargin=0 

vLink=#990099>

<DIV align=center>

<TABLE border=0 cellPadding=0 cellSpacing=0 height=76 width=744>

  <TBODY>

  <TR>

    <TD>

      <TABLE align=center width=680>

        <TBODY>

        <TR>

          <TD align=middle><BR>

            <H2 align=center><FONT size=3>在C ++  

            Builder中自定义预览窗口</FONT></H2><BR><B>装备指挥技术学院 林华君 鲜思德</B>  

      </TD></TR></TBODY></TABLE><BR> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>Borland C++  

            Builder是基于C++语言的可视化编程环境,它提供了可重用组件库和一系列RAD设计工具,使得编程者只需用少量的手工代码就可以创建出高效的Windows应用程序,尤其是复杂的数据库访问应用程序,因此深受软件开发人员的喜爱。</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>在开发数据库访问应用程序时,会经常涉及到报表的打印问题。C++ Builder中提供了Quick  

            Report(快速报表)组件供编程人员设计报表。Quick Report是挪威的QuSoft AS公司专门为C++  

            Builder设计的用于制作报表的一组控件,在C++ Builder中关于Quick Report的帮助文档不是很详细。另外它与C++  

            Builder的其他控件的风格也不太一致。直接使用Quick  

            Report的报表预览功能总是不能达到令人满意的效果,因此有必要自定义快速报表的预览窗口。</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14><B>设置预览窗口</B></TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD  

        class=a14>新建工程,在Form1窗体上添加一个ToolBar控件,并在其上添加以下按钮:“打印”、“打印设置”、</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>“上一页” 、“下一页”、“放大”、“缩小”和“关闭”。  

            在Form1窗体上添加一个Panel控件,对齐方式设为alBottom,再在此Panel控件上添加一个ProgressBar控件(对齐方式设为alLeft)和一个Panel控件(Name  

            为Panel2,对齐方式设为alRight,BevelOuter设为bvLowered),这两个控件分别用来显示报表装载进度和其他提示信息。在Form1窗体上添加一个QRPreview控件,对齐方式设为alClient。Form1窗体的外观如图1所示:</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD align=middle class=a14 height=19><IMG height=206  

            src="images/01_6_29_3.jpg" width=300  

            tppabs="http://www.info365.com.cn/develop/bcb/img/01_6_29_3.jpg">  

        </TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD align=middle class=a14>图1 自定义快速报表的预览窗口</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>再新建一个窗体,设其Name为Form2,  

            在该窗体上添加TQuickRep控件,设其Name为QuickRep1,其PrinterSetting中的Units属性设为mm(以毫米为计量单位),然后建立报表。</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14><B>编程实现</B></TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD  

        class=a14>1.在Form2上选择QuickRep1,在其事件中选择OnPreview,输入以下代码:</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD  

            class=a14>Form1-&gt;QRPreview1-&gt;QRPrinter=Form2-&gt;QuickRep1-&gt;QRPrinter;</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD  

      class=a14>2.在Form1的头文件中找到对象TForm1的定义,在其中添加以下的代码:</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>int OldPaperSize;</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>int OldOrientation;</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>int OldTop;</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>int OldBottom;</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>int OldLeft;</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>int OldRight;</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>void RefreshPanel();</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>3.选择Form1的Activate事件,输入以下代码:</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>//初始化</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD  

            class=a14>OldPaperSize=Form2-&gt;QuickRep1-&gt;Page-&gt;PaperSize;</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD  

            class=a14>OldOrientation=Form2-&gt;QuickRep1-&gt;Page-&gt;Orientation+1;</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD  

            class=a14>OldLeft=Form2-&gt;QuickRep1-&gt;Page-&gt;LeftMargin*100;</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD  

        class=a14>OldRight=Form2-&gt;QuickRep1-&gt;Page-&gt;</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>RightMargin*100;</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD  

        class=a14>OldTop=Form2-&gt;QuickRep1-&gt;Page-&gt;Top</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>Margin*100;</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD  

        class=a14>OldBottom=Form2-&gt;QuickRep1-&gt;Page-&gt;</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>BottomMargin*100;</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>Form2-&gt;QuickRep1-&gt;Prepare();</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>RefreshPanel();</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>Form2-&gt;QuickRep1-&gt;Preview();</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>4.在Form1中添加更新提示代码:</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>void TForm1::RefreshPanel()</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>{ //更新提示信息</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD  

            class=a14>Panel2-&gt;Caption=“第”+IntToStr(Form1-&gt;QRPreview1-&gt;PageNumber)+“页”+“共”  

      IntToStr(Form2-&gt;QuickRep1-&gt;PageNumber)+“页”;</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>}</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD  

          class=a14>5.从Form1中选择QRPreview1,在其事件中选择OnProgressUpdate,输入以下代码:</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>//显示报表装载进度</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD  

class=a14>ProgressBar1-&gt;Position=Progress;</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>RefreshPanel();</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>6.打印:</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>Form2-&gt;QuickRep1-&gt;Print();</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>7.打印设置:</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>DEVMODE *pDev;</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>LPPAGESETUPDLG mylp=new  

      PAGESETUPDLG;</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>memset((void *)mylp,0,sizeof</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>(PAGESETUPDLG));</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD  

        class=a14>mylp-&gt;lStructSize=sizeof(PAGESETUPDLG);</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD  

class=a14>mylp-&gt;hwndOwner=this-&gt;Handle;</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

        <TBODY> 

        <TR> 

          <TD class=a14>mylp-&gt;Flags=PSD_RETURNDEFAULT;</TD></TR></TBODY></TABLE> 

      <TABLE align=center width=620> 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -