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

📄 delp020.html

📁 对于学习很有帮助
💻 HTML
字号:
<html><!-- #BeginTemplate "/Templates/fwolf001.dwt" -->
<head>
<!-- #BeginEditable "doctitle" --> 
<title>独孤之所 - 在Delphi中运用QuickReport实现多栏列印</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<!-- #EndEditable --> 
<style type="text/css">
<!--
body {  font-family: "宋体"; font-size: 9pt}
td {  font-family: "宋体"; font-size: 9pt}
a:hover {  text-decoration: underline}
a {  text-decoration: none}
input {  font-family: "宋体"; font-size: 9pt}
select {  font-family: "宋体"; font-size: 9pt}
-->
</style>
</head>


<body>
<!-- #BeginEditable "2%C7%F8" --> <!-- #EndEditable -->
<table width="584" border="0" align="center" cellspacing="1">
  <tr> 
    <td width="582"> <font color="#FF3333"> 
      <div align="center"><font size="3"><!-- #BeginEditable "%B1%EA%CC%E2" --> </font> <!-- #EndEditable --></div>
      </font> </td>
  </tr>
  <tr> 
    <td width="582"> 
      <div align="center"><font size="3"><!-- #BeginEditable "%D7%F7%D5%DF" --></font><!-- #EndEditable --></div>
    </td>
  </tr>
  <tr> 
    <td width="582"><font size="3"><!-- #BeginEditable "%CE%C4%B1%BE%C7%F8" --><center><font color="#0000c0"><font color="#FF3333">在Delphi中运用QuickReport实现多栏列印</font><br>
        </font>湖北省荆州市荆州区气象局<br>
        胡佩敏 
      </center>
      </font>
      <p><font color="#ffffff"><font size="3">----</font></font> <font size="3"> 在所有有关Delphi的书籍中,都没有讲解如何实现一个打印项的多栏打印,而实现  
        生活中往往有许多报表要求同一项目多栏打印,QuickReport提供了报表打印一整套完 整的解决方案,完全可以实现同一项目的多栏打印,技术关键是如何控制表中记录提取  
        个数,如果在Treport的DataSet属性中选定一个Table,那么QuickReport每次打印详细 列表(BandType=rbDetail)属性的TQRBand时,系统会自动取出一个记录供打印,并将表  
        中的记录指针移到下一位,这样程序无法控制表中记录指针的移动,就无法实现多栏打 印,只要程序不在Treport的DataSet属性选定任何表,  
        QuickReport便不会控制表记录 的提取,QuickReport特为其它类型数据打印提供了一个OnNeedData事件,QuickReport  
        每次打印详细列表(BandType=rbDetail)属性的TQRBand时,会触发这个事件,要求提供 打印数据,如果程序在OnNeedData事件中编写运用表中数据提供打印资料,便能实现多  
        栏打印,现举例说明:</font>  
      <p><font color="#ffffff"><font size="3">----</font></font> <font size="3"> 现在要实现一个Table1中Name项两栏打印,在窗口上放TquickReport组件  
        quickReport1,并在上面放Tband组件band1,将其BandType属性改为Detail,在Tband 组件上并排放两个QRLabel组件QRLabel1和QRLabel2,在quickReport1的OnNeedData事  
        件中写如下代码:</font>  
      <pre><font size="3">
procedure TForm1.QuickRep1NeedData(Sender: 
	TObject; var MoreData: Boolean);
var
  I: integer;
begin
  MoreData := True;
  for I:= 1 to 2 do
  begin
    if Table1.Eof then Break;
    case I of
      1: QRLabel1.Caption := 
Table1.FieldByName('Name').AsString;
      2: QRLabel2.Caption := 
Table1.FieldByName('Name').AsString;
    end;
    Table1.Next;
  end;
  if Table1.Eof then MoreData := False;
end;
</font></pre>
      <font size="3">
      <font color="#ffffff">----</font> 为了保证打印或者打印预览开始时Table1指针在第一条记录,在quickReport1的  
      BeforePrint事件中写如下代码:</font>  
      <pre><font size="3">
procedure TForm1.QuickRep1BeforePrint
(Sender: TCustomQuickRep;
  var PrintReport: Boolean);
begin
  Table1.First;
end;

</font></pre>
      <font size="3">
      <font color="#ffffff">----</font> 这样程序调用QuickRep1.Preview或者QuickRep1.Print便能预览或者打印到一个关于  
      Name的从左至右,从上到下的多栏报表。 <!-- #EndEditable --></font></td> 
  </tr> 
  <tr> 
    <td width="582"><font size="3"><!-- #BeginEditable "%B1%B8%D7%A2" --></font><!-- #EndEditable --></td>
  </tr>
</table>
<p align="center"> 
<script language="JavaScript1.1" src=http://ad.t2t2.com/textclick.asp?user=fwolf&style=4&bkcolor=no></script>
</p>
<p align="center">&nbsp; </p>
</body>
<!-- #EndTemplate --></html>

⌨️ 快捷键说明

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