用DELPHI 3.0制造应用软件经验谈-Delphi-优质IT资源分享社区

admin
管理员
管理员
  • UID1
  • 粉丝33
  • 关注4
  • 发帖数581
  • 社区居民
  • 忠实会员
  • 原创写手
阅读:352回复:0

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

楼主#
更多 发布于:2016-06-19 12:18

 
DELPHI3.0供给了强壮的数据库程序开发东西和组件,从底层的BDE(BorlandDatabaseEngine)到桌面的DatabaseDesktop,从林林总总的数据库开发组件,到完好的Client/Server解决方案。以下是我在运用DELPHI3.0制造数据库应用程序时悟得的几点“真经”,著之为文,与咱们商讨。
一、2000年疑问
在程序中运用有关日期的组件,如DatetimePicker,MaskEdit等时,均运用长日期格局即可。
二、赋予初始值
你可能期望在运用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:编码表
字段名NameId
记载1Tanglu1
记载2shangwang2
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对话框,如下填写:
nametypeField typeKey fieldsdatasetLookup keysResult field
teststringookupIdTable1idname
(3)将table1和table2的active特点置为true,编译运转。
这时能够看出,从test字段下拉出姓名,选定一个后,存入id字段的是其编码,这么就达到了意图。






[font=Tahoma  ]
优质IT资源分享社区为你提供此文。
本站有大量优质Delphi教程视频,资料等资源,包含Delphi基础教程,高级进阶教程等等,教程视频资源涵盖传智播客,极客学院,达内,北大青鸟,猎豹网校等等IT职业培训机构的培训教学视频,价值巨大。欢迎点击下方链接查看。
Delphi教程视频
优质IT资源分享社区(www.itziyuan.top)
一个免费,自由,开放,共享,平等,互助的优质IT资源分享网站。
专注免费分享各大IT培训机构最新培训教学视频,为你的IT学习助力!

!!!回帖受限制请看点击这里!!!
!!!资源失效请在此版块发帖说明!!!

[PS:按 CTRL+D收藏本站网址~]

——“优质IT资源分享社区”管理员专用签名~

本版相似帖子

游客