转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
用DELPHI 3.0制作应用软件经验谈         ★★★★

用DELPHI 3.0制作应用软件经验谈

作者:闵涛 文章来源:闵涛的学习笔记 点击数:891 更新时间:2009/4/23 18:24:12
  DELPHI3.0提供了强大的数据库程序开发工具和组件,从底层的BDE(BorlandDatabaseEngine)到桌面的DatabaseDesktop,从各式各样的数据库开发组件,到完整的Client/Server解决方案。以下是我在使用DELPHI3.0制作数据库应用程序时悟得的几点“真经”,著之为文,与大家切磋。

一、2000年问题
  在程序中使用有关日期的组件,如DatetimePicker,MaskEdit等时,均使用长日期格式即可。

二、赋予初始值IPT>
  你可能希望在使用Append增加一条记录时,能自动填写某些字段,这时,可以使用数据库组件的隐含属性。由于面向对象语言的继承特性,父对象的属性被子对象所屏蔽、继承或扩充。出于安全因素,部分属性在子对象的Object Inspector中没有显式的列出,但实际上并未屏蔽,仍然可以使用,如DBEdit、DBCombobox的text属性,DBCheckedbox的Checked属性,报表组件QRDBText的Caption属性等都可以在程序中使用。如下面一段程序:
  procedure Tform1.Button1Click(Sender:TObject);
  Var
  S:string;
  begin
  Table1.append;
  DBEdit1.text:=锦江区;
  DBComboBox1.text:=望滨路;
  S:=DBComboBox1.text;
  DBCheckedBox1.checked:=false;
  End;
  以上,将为DBEdit1、DBComboBox1、DBCheckedBox1赋予初始值。通过对象浏览器研究组件对象的继承关系后,你一定还可以发现更多的隐含属性,这将为我们的编程工作提供很大的帮助。

三、动态问题
  1、动态组合框(DBLookupComboBox)
  为了使用户可以自己方便地改变组合框中的内容,例如经常变动的工作人员名单,应该使用DBLookupComboBox代替一般的DBComboBox。步骤如下:
  (1)建立一个工作人员名单数据库,在程序中提供对此库的增加、修改、删除等操作。
  (2)使用DBLookupComboBox时,将属性ListSource指向名单库,Listfield和Keyfield指向名称字段,DataSource和Datafield指向欲写入的数据库和字段。在运行时,程序从名单库中提取名称信息,从而实现动态产生组合框中的内容。DataSource和Datafield也可以不填,这时提供动态信息,但不向任何数据库写入内容。
  这种方法也适用于Dbgrid,方法见后所述的“lookup字段的使用”一节。

  2、动态SQL
 ? 程序中可以动态地为Query组件写入SQL语句,填入参数。例如:
  procedure Tform1.Button1Click(Sender:TObject);
  Var
  S:string;
  begin
  Query1.active:=false;
  S:=select*fromt1.dbf
  Query1.SQL.add(s);
  S:=whereid=:id;
  Query1.SQL.add(s);
  Query1.Params[0].AsString:=1;
  Query1.active:=true;
  End;

  以上程序将选出t1.dbf所有id为1的记录。使用动态SQL,可以实现动态查询、动态报表等功能,十分有用。

四、报表制作
  在DELPHI3.0中,不再有DELPHI1.0、DELPHI2.0原有的ReprotSmith报表制作工具,改为一套完整的QuickReport报表组件,使得报表与应用程序的连接更为紧密,运用更加灵活方便。具体的制作可参考DELPHI3.0提供的例子程序Qr2demo。有以下几点值得注意:
  (1)建立新报表可以在File菜单的New...中选取Report,也可以先建立一个空表单(Form)后,再放上一个QuickReport组件。前者建立一个从TQuickReport继承的对象,后者不进行继承,若程序中使用了复杂报表(几个报表的组合)。
  (2)主要对明细报表制作(Master/Detail)。
  这类报表可以用两种方法生成,一种是像Qr2demo中一样,使用两个Table组件,另一种是使用一个Query组件,配合SQL语句实现。例如:
  Select*fromxl.dbfa,byq.dbfb Wherea.xlmc=b.xlmc
  则将选出两个库中所有xlmc字段相同的记录,从而实现了主要对明细关系。

  (3)BeforePrint事件和OnPrint事件可提供打印前的预处理。
  以下程序中,Qrimage画了一个“勾”,通过BeforePrint事件和OnPrint事件预处理当前记录的下一条记录,从而在产生报表时决定在当前记录的“高压”还是“低压”处打勾。Qrimage的enabled属性决定其是否显示和打印。
  procedure do1(s1:string);
  begin
  if s1=高压then
begin
  qr1.qrimage1.enabled:=true;
  qr1.qrimage2.enabled:=false;
 end
elseif s1=低压then
begin
  qr1.qrimage1.enabled:=false;
  qr1.qrimage2.enabled:=true;
  end
else begin
  qr1.qrimage1.enabled:=false;
  qr1.qrimage2.enabled:=false;
  end;
  end;

  procedure Tqr1.qr2BeforePrint(Sender:TQuickRep;varPrintReport:Boolean);
  begin
  query2.active:=true;
  query2.first;
  qrimage1.enabled:=false;
  qrimage2.enabled:=false;
  end;

  procedure Tqr2.QRDBText5Print(sender:TObject;varValue:String);
  begin
  do1(query2.fieldbyname(DianYa).asstring);
  if not query2.eof then
query2.next;
  end;

五、lookup字段的使用
  在实际的数据库程序中,我们经常使用编码表,例如对消费品名进行编码,在存入消费库中时使用消费品编码,而在使用DBGRID或其他数据明了构件显示出来时使用具体内容。这就要使用lookup字段了。

  我们可以作以下试验:
  (1)新建一个项目,使用database desktop建两个库,别名test,如下:
  nameid:编码表

字段名 Name Id 记录1 Tanglu 1 记录2 shangwang 2

  id:欲存入表(现为空)

字段名 Id 记录1   记录2  


  在Form1上放如下构件:

table1 指向nameid表,即databasename=test; tablename=nameid; Datasource1 指向table1,即dataset=table1 table2 指向id表,即databasename=test; tablename=id; Datasource2 指向table2,即dataset=table2 dbgrid1 指向table2,即dataSource=dataSource2


  (2)双击table2,弹出字段编辑器,在字段编辑器上右击,选择“addfields...",加入“id"字段;再选择“newfield..."。这时弹出newfield对话框,如下填写:

name type Field type Key fields dataset Lookup keys Result field test string ookup Id Table1 id name


  (3)将table1和table2的active属性置为true,编译运行。
  这时可以看出,从test字段下拉出姓名,选定一个后,存入id字段的是其编码,这样就达到了目的。


[Delphi程序]用Delphi 6开发Web services 2  [Delphi程序]用Delphi 6开发Web services 1
[Delphi程序]用Delphi 控制窗体的大小  [Delphi程序]用Delphi + DirectX开发简单RPG游戏
[Delphi程序]用Delphi 压缩Access数据库  [Delphi程序]用Delphi + DirectX开发简单RPG游戏2
[Delphi程序]用Delphi + DirectX开发简单RPG游戏1  [Delphi程序]用Delphi 6编程实现自动标注汉语拼音
[Delphi程序]用Delphi 显示122种图形特效  [Delphi程序]用DELPHI 设 计 屏 幕 保 护 程 序
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台