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

📄 delp025.html

📁 对于学习很有帮助
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<html><!-- #BeginTemplate "/Templates/delphi.dwt" -->
<head>
<!-- #BeginEditable "doctitle" --> 
<title>独孤之所 - 用DELPHI 3.0制作应用软件经验谈</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<meta NAME="author" VALUE="独孤求败(Fwolf)">
<!-- #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>
<table width="98%" border="0" align="center">
  <tr> 
    <td width="33%"><a href="../../../index.html"><img src="../../../logos/fwolf9.gif" width="271" height="60" alt="独孤之所首页" border="0"></a></td>
    <td width="67%"> 
      <div align="center"> </div>
    </td>
  </tr>
</table>
<table width="100%" border="0" align="center" cellspacing="1" bgcolor="#66FF66">
  <tr> 
    <td width="90%"><a href="../../../index2.html">独孤之所</a> > <a href="../../book.htm">天下文章</a> 
      > <a href="../delphi.html">Delphi</a> > <font color="#FF3333"><!-- #BeginEditable "2%C7%F8" -->用DELPHI 
      3.0制作应用软件经验谈<!-- #EndEditable --></font> 
    </td>
    <td width="10%"> 
      <div align="center"><a href="javascript:window.close()">[关闭窗口]</a></div>
    </td>
  </tr>
</table>
<hr size="1">
<br>
<table width="584" border="0" align="center" cellspacing="1">
  <tr> 
    <td width="582"> <font color="#FF3333"> 
      <div align="center"><!-- #BeginEditable "%B1%EA%CC%E2" -->用DELPHI 3.0制作应用软件经验谈<!-- #EndEditable --></div>
      </font> </td>
  </tr>
  <tr> 
    <td width="582"> 
      <div align="center"><!-- #BeginEditable "%D7%F7%D5%DF" --><!-- #EndEditable --></div>
    </td>
  </tr>
  <tr> 
    <td width="582"><!-- #BeginEditable "%CE%C4%B1%BE%C7%F8" --> 
      <center>
        <p>  DELPHI3.0提供了强大的数据库程序开发工具和组件,从底层的BDE(BorlandDatabaseEngine)到桌面的DatabaseDesktop,从各式各样的数据库开发组件,到完整的Client/Server解决方案。以下是我在使用DELPHI3.0制作数据库应用程序时悟得的几点“真经”,著之为文,与大家切磋。<br>
          <br>
          <br>
          <br>
          <strong>一、2000年问题<br>
          <br>
          </strong>  在程序中使用有关日期的组件,如DatetimePicker,MaskEdit等时,均使用长日期格式即可。<br>
          <br>
          <br>
          <br>
          <strong>二、赋予初始值<descript></strong></p>
        <p align="left"><strong><br>
          <br>
          </strong>  你可能希望在使用Append增加一条记录时,能自动填写某些字段,这时,可以使用数据库组件的隐含属性。由于面向对象语言的继承特性,父对象的属性被子对象所屏蔽、继承或扩充。出于安全因素,部分属性在子对象的Object 
          Inspector中没有显式的列出,但实际上并未屏蔽,仍然可以使用,如DBEdit、DBCombobox的text属性,DBCheckedbox的Checked属性,报表组件QRDBText的Caption属性等都可以在程序中使用。如下面一段程序:<br>
          <br>
            procedure Tform1.Button1Click(Sender:TObject);<br>
          <br>
            Var<br>
          <br>
            S:string;<br>
          <br>
            begin<br>
          <br>
            Table1.append;<br>
          <br>
            DBEdit1.text:='锦江区';<br>
          <br>
            DBComboBox1.text:='望滨路';<br>
          <br>
            S:=DBComboBox1.text;<br>
          <br>
            DBCheckedBox1.checked:=false;<br>
          <br>
            End;<br>
          <br>
            以上,将为DBEdit1、DBComboBox1、DBCheckedBox1赋予初始值。通过对象浏览器研究组件对象的继承关系后,你一定还可以发现更多的隐含属性,这将为我们的编程工作提供很大的帮助。<br>
          <br>
          <br>
          <br>
          <strong>三、动态问题<br>
          <br>
          </strong>  1、动态组合框(DBLookupComboBox)<br>
          <br>
            为了使用户可以自己方便地改变组合框中的内容,例如经常变动的工作人员名单,应该使用DBLookupComboBox代替一般的DBComboBox。步骤如下:<br>
          <br>
            (1)建立一个工作人员名单数据库,在程序中提供对此库的增加、修改、删除等操作。<br>
          <br>
            (2)使用DBLookupComboBox时,将属性ListSource指向名单库,Listfield和Keyfield指向名称字段,DataSource和Datafield指向欲写入的数据库和字段。在运行时,程序从名单库中提取名称信息,从而实现动态产生组合框中的内容。DataSource和Datafield也可以不填,这时提供动态信息,但不向任何数据库写入内容。<br>
          <br>
            这种方法也适用于Dbgrid,方法见后所述的“lookup字段的使用”一节。<br>
          <br>
          <br>
          <br>
            2、动态SQL<br>
          <br>
            在程序中可以动态地为Query组件写入SQL语句,填入参数。例如:<br>
          <br>
            procedure Tform1.Button1Click(Sender:TObject);<br>
          <br>
            Var<br>
          <br>
            S:string;<br>
          <br>
            begin<br>
          <br>
            Query1.active:=false;<br>
          <br>
            S:='select*fromt1.dbf'<br>
          <br>
            Query1.SQL.add(s);<br>
          <br>
            S:='whereid=:id';<br>
          <br>
            Query1.SQL.add(s);<br>
          <br>
            Query1.Params[0].AsString:='1';<br>
          <br>
            Query1.active:=true;<br>
          <br>
            End;<br>
          <br>
          <br>
          <br>
            以上程序将选出t1.dbf所有id为1的记录。使用动态SQL,可以实现动态查询、动态报表等功能,十分有用。<br>
          <br>
          <br>
          <br>
          <strong>四、报表制作<br>
          <br>
          </strong>  在DELPHI3.0中,不再有DELPHI1.0、DELPHI2.0原有的ReprotSmith报表制作工具,改为一套完整的QuickReport报表组件,使得报表与应用程序的连接更为紧密,运用更加灵活方便。具体的制作可参考DELPHI3.0提供的例子程序Qr2demo。有以下几点值得注意:<br>
          <br>
            (1)建立新报表可以在File菜单的New...中选取Report,也可以先建立一个空表单(Form)后,再放上一个QuickReport组件。前者建立一个从TQuickReport继承的对象,后者不进行继承,若程序中使用了复杂报表(几个报表的组合)。<br>
          <br>
            (2)主要对明细报表制作(Master/Detail)。<br>
          <br>
            这类报表可以用两种方法生成,一种是像Qr2demo中一样,使用两个Table组件,另一种是使用一个Query组件,配合SQL语句实现。例如:<br>
          <br>
            Select*fromxl.dbfa,byq.dbfb Wherea.xlmc=b.xlmc<br>
          <br>
            则将选出两个库中所有xlmc字段相同的记录,从而实现了主要对明细关系。<br>
          <br>
          <br>
          <br>
            (3)BeforePrint事件和OnPrint事件可提供打印前的预处理。<br>
          <br>
            以下程序中,Qrimage画了一个“勾”,通过BeforePrint事件和OnPrint事件预处理当前记录的下一条记录,从而在产生报表时决定在当前记录的“高压”还是“低压”处打勾。Qrimage的enabled属性决定其是否显示和打印。<br>
          <br>
            procedure do1(s1:string);<br>
          <br>
            begin<br>
          <br>
            if s1='高压'then<br>
          <br>
          <br>
          begin<br>
          <br>
            qr1.qrimage1.enabled:=true;<br>
          <br>
            qr1.qrimage2.enabled:=false;<br>
          <br>
           end<br>
          <br>
          elseif <br>
          s1='低压'then<br>
          <br>
          begin<br>
          <br>
            qr1.qrimage1.enabled:=false;<br>
          <br>
            qr1.qrimage2.enabled:=true;<br>
          <br>
            end<br>
          <br>
          else begin<br>
          <br>
            qr1.qrimage1.enabled:=false;<br>
          <br>
            qr1.qrimage2.enabled:=false;<br>
          <br>
            end;<br>
          <br>
            end;<br>
          <br>
          <br>
          <br>
            procedure Tqr1.qr2BeforePrint(Sender:TQuickRep;varPrintReport:Boolean);<br>
          <br>
            begin<br>
          <br>
            query2.active:=true;<br>
          <br>
            query2.first;<br>
          <br>
            qrimage1.enabled:=false;<br>
          <br>
            qrimage2.enabled:=false;<br>
          <br>
            end;<br>
          <br>
          <br>
          <br>
            procedure Tqr2.QRDBText5Print(sender:TObject;varValue:String);<br>
          <br>
            begin<br>
          <br>
            do1(query2.fieldbyname('DianYa').asstring);<br>
          <br>
            if not query2.eof then<br>

⌨️ 快捷键说明

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