`
yesjavame
  • 浏览: 689444 次
  • 性别: Icon_minigender_2
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

Delphi之快速设计(程序设计篇)

阅读更多
  • *本文涉及的所有代码均在WinNt 4、Delphi4 C/S下正确运行通过。
    由于Delphi采用了真正的完全面向对象方法、当今世界最快的编译器以及领先的数据库技术,特别是她对Windows API的完全兼容,出色的代码自动生成能力……人们已经看到,在短短的几年当中,Delphi已在众多的开发工具中脱颖而出!正是Delphi的诸多优秀品质,使程序员能在很短的时间内开发出极具专业水准的运用软件,而所做的工作却是相当的少!
    正所谓Let's us make better!我们应怎样充分利用Delphi的优势来更加快速地进行程序设计程序呢?
    一、充分利用代码完全共享(句槟):
    我们这样做的目的不仅仅是为了“偷懒”,这也是优化程序代码的一种方法。当然,首先要考虑的是能不能共享(这很简单,看看是否包含在该事件的下拉集合中),其次是要注意的是共享后有没有“麻烦”,因为正确是第一步,在保证正确的情况下才有必要去追求优化!
    比如:我们在用户删除数据前给出一确认消息:
    procedure TForm1.Table1BeforeDelete(DataSet: TDataSet);
    begin
    //确认删除记录
    if MessageBox(handle,'确实要删除当前记录吗?','确认',MB_IconQuestion+MB_YesNo)=IDNO then
    Abort;
    end;
    那么,你只要愿意让用户在删除数据记录前进行确认均可在TDataSet.BeforeDelete事件(Table2的BeforeDelete,Table3的BeforeDelete……)中完全共享这段代码。好运不会天天有,在有的时候就不这么直接、简单了……
  • 二、充分利用Delphi的强制转换:
    “As”这个单词不仅仅在英语中用处极大,在Delphi中亦然!当我们想为数个“同类”组件共享代码时,即可发挥她的巨大作用:我们只需为其中一个组件编写代码即可。
    比如:想让一组文本编辑框在得到输入焦点时背景颜色变为茶色,失去焦点是恢复系统颜色,我们可以如此共享代码(让每个文本编辑框的事件公用以下代码):
    procedure TForm1.Edit1Enter(Sender: TObject);
    begin
    (Sender as TEdit).color:=ClTeal; //得到输入焦点
    end;

    procedure TForm1.Edit1Exit(Sender: TObject);
    begin
    (Sender as TEdit).color:=ClWindow; //失去输入焦点
    end;
  • 三、不起眼的Tag属性:
    上面的例子似乎有点太特殊了,万一我只对其中某些组件特别关照怎么办?仍以上面的为例,比如其中有两个文本输入框需要输入数字,为引用户注意,得到焦点时颜色变为兰色,但我仍然然不想为每个组件分别写代码。
    要解决这个问题可利用组件的Tag属性,先为要特别处理的组件分配非零、不等的Tag(必须说明的Delphi不会检查Tag值是否相等,设计时自己掌握);然后如下编写代码,就可依然实现共享:
    procedure TForm1.Edit1Enter(Sender: TObject);
    begin
    case (Sender as TEdit).Tag of
    10,20:(Sender as TEdit).Color:=clBlue //输入数字的文本框
    else
    (Sender as TEdit).Color:=clTeal; //其余文本框
    end;
    end;
  • 四、充分利用Delphi的CodeInsight技术:
    (以下言论均假设在Delphi的默认条件之下)
    1、利用Self关键字:
    也许有人以为我搞错了!其实,这里要向大家介绍的是笔者(因记性太差)“惯犯”的又一“伎俩”。在有的时候,我们可能记不准组件的确切名字(Name)了,这时你要是再返回窗体表格去确认一遍的话(大多数的朋友应该是这样的)未免有点太对不起时间了,此时你要是利用Self就特别省力,因为Self在Delphi中是显式地引用该组件所在的窗体,因此,我们可以输入Self后加一逗点以此激活Delphi的Code Completion,此时系统会立即为你显示一包含该窗体所有组件及窗体本身属性的下拉列表,你从中选择所需组件即可。这样,就避免了来回切换窗体表格的这一工作量。
    2、利用代码补缺(Code Completion):
    我们现在再也没有必要让自己去记忆太多的参数细节了,因为有了Delphi的代码补缺功能。在具体解释之前,还要罗嗦一点,Delphi的Code Completion默认的快捷键会与我们已用的某些快捷键冲突(如Ctrl+Space就与我们打开、关闭汉字输入法的快捷键冲突),因此请先解决这个问题。
    当然,Code Completion一般会自动激活,但是不要以为就万事大吉了,本人认为Delphi的此项技术应向VB学习,此言怎讲?举例来说吧:当你输入StrToint(edit1.后,Delphi不会自动显示edit1的属性,此时你就将用Ctrl+Space来激活Code Completion,特别是嵌套很深的时候,Delphi似乎也糊涂了。
    3、利用代码参数(Code Parameters):
    激活快捷键是Ctrl+Shift+Space。这项功能也是Delphi自动实现的,正如上述所言,当我们来回切或是光标移走时,这项功能也就随之消失了,当我们需要确认该函数的具体参数时即可以此快捷键打开。
    4、利用代码模板(Code Templates):
    这项技术再次体现了Inprise公司Delphi开发组的工程师们高超的技术及处处为用户着想的高尚品德!(只是不希望再听到又有人被微软挖走的消息)
    激活快捷键是Ctrl+J。此项功能实现机制与代码补缺的差不多,只是她不是自动的,当然最另令人激动的一面是用户可以定义自己的模板。比如笔者定义的一个模板:快捷-〉“msg”;代码-〉“MessageboxMessageBox(
    handle,'|','',MB_Icon...+MB_...);”,只要一输入msg然后按Ctrl+J整个代码“脱颖而出”,并把光标帮我移到我该补充输入的地方,简直爽呆了!
    注意:如果你为自己定义了很多可爱的模板舍不得丢掉的话,不妨把...Delphi4\Bin目录下的Delphi32.dci文件备份,重新安装Delphi后以此文件覆盖即可。
  • 五、能偷懒时就偷懒:
    这个话题本不应该写在这里,但还是忍不住……
    1、能利用对象观察器直接设置且不会影响程序正常运行的就没有必要去写代码:
    由于这个话题涉及面太广,此处仅举一例说明:比如要在Delphi4中实现在状态栏上的自动提示,又没有太“苛
    刻”的条件时,我们没有必要再像以前一样,先定义一个过程(ShowMyHint(...)),然后在程序初始化的地方
    把她赋值给TApplication的OnHin事件。因为只需将状态条的AutoHint属性设为True即可!当然,她似乎只能在
    第一个Panel上显示(这就是没有太“苛刻”的条件时)。当然,怪我罗嗦,有的朋友居然不知道Delphi的Hint
    属性由两部分组成,此处不是说话之地,感兴趣请到笔者的个人主页上去遛遛www.zg169.net/~delphiok(刚开
    张,东西还不多)。
    2、节省代码:
    能够少写代码就没有必要多写代码,能够精炼就不要冗余:
    比如,以下的两段代码实现的功能完全相同,你喜欢用哪段?
    代码段一:
    if ToolButton1.Down=true then
    begin
    Dbgrid1.show;
    DelBtn.Enabled:=true;
    end
    else
    begin
    Dbgrid1.Hide;
    DelBtn.Enabled:=false;
    end;
    代码段二:
    Dbgrid1.Visible:=ToolButton1.Down;
    DelBtn.Enabled:=ToolButton1.Down;
    因此,我们写完程序后,不要仅仅追求程序调通,不妨也给程序代码炸炸油。
    3、节省变量:
    有的程序员在不需要变量的地方定义了变量,在需要变量的地方定义了多余的变量,我个人认为这都不是好的
    习惯,特别是动不动就定义全局变量更是值得商榷。有的读者可能认为我是一个守财奴,现在的处理器速度都
    什么年代了……但我只简单的给你展示一段代码你就明白了:
    procedure TForm1.Button1Click(Sender: TObject);
    Var s1,s2:String;
    begin
    s1:=Inputbox('数据','请输入用户姓名','');
    if s1<>'' then
    begin
    Btn_Name.Enabled:=True;
    s2:=Inputbox('数据','请输入用户住址','');
    if s2<>'' then
    Btn_Adress.Enabled:=True;
    end;
    end;
  • 当然,本文的这些小例子仅仅从侧面表述了笔者的一些个人观点,要充分体现Delphi的高效性,这些还远远不够!限于篇幅,关于数据库以及其他高级话题在这里均未涉及,特别是数据库编程方面,Delphi提供了相当的灵活性!当然,万变不离其宗,只要随时注意Delphi是完全面向对象的,有对象就考虑其属性、事件、方法、继承、引用等等。
  • 分享到:
    评论

    相关推荐

      Delphi 2.0 高级程序设计指南

      ### Delphi 2.0 高级程序设计指南 #### 一、Delphi 2.0 简介 Delphi 2.0 是一款基于 Object Pascal 的可视化开发平台,由 Borland 公司推出。它不仅具备了强大的 Windows 应用程序开发能力,而且在数据库开发领域...

      李维-Delphi.5.X.ADO.MTS.COM+高级程序设计篇

      《李维-Delphi.5.X.ADO.MTS.COM+高级程序设计篇》是一本深入探讨Delphi 5中ADO、MTS(Microsoft Transaction Server)和COM+技术的专业书籍。这些技术在20世纪90年代末至21世纪初在企业级Windows应用开发中占据重要...

      Delphi7.0程序设计与实例

      本篇文章将深入探讨Delphi 7.0程序设计的关键知识点,以及如何通过实例来提升编程技能。 一、Delphi 7.0 IDE概述 Delphi 7.0的IDE提供了丰富的功能,包括代码编辑器、项目管理器、对象浏览器、类视图、资源编辑器等...

      实战Delphi6.Kylix2.SOAP.Web Service程序设计篇李维著.zip

      《实战Delphi6.Kylix2.SOAP.Web Service程序设计篇》是由知名技术专家李维编著的一本专业书籍,主要面向的是希望深入理解和应用Delphi6、Kylix2、SOAP以及Web Service技术的开发者。这本书详细介绍了如何利用这些...

      奇思异想编程序 Delphi篇

      《奇思异想编程序 Delphi篇》是一本专注于Delphi编程技术的教程,旨在引导读者深入了解并掌握这个强大的对象 Pascal 开发环境。Delphi,由Embarcadero Technologies开发,是一个集成开发环境(IDE),它以其高效、...

      实战Delphi6.Kylix2.SOAP.Web Service程序设计篇李维著

      《实战Delphi6.Kylix2.SOAP.Web Service程序设计篇》是由知名技术专家李维撰写的一本专业书籍,主要涵盖了使用Delphi6和Kylix2进行SOAP(简单对象访问协议)以及Web Service开发的核心技术和实践应用。这本书是...

      Delphi 7 高效数据库程序设计

      《Delphi 7 高效数据库程序设计》是著名IT专家李维撰写的一本专著,专注于使用Delphi 7开发高效、稳定的数据库应用程序。这本书共分为五大部分,包含了十三个章节,旨在帮助读者深入理解和掌握Delphi 7在数据库编程...

      Delphi5.X ADO/MTS/COM+高级程序设计篇

      最近在学习数据编程,这本书相当不错,共享一下,有需要的朋友就下载吧~第1章 ADO/MTS/COM十和分布式多层架构 1-1 认识ADO 1-2 使用原生ADO对象 1-3 ADO和分布式多层架构 1-4 Delphi的数据存取技术 1-5 原生ADO对象和...

      Delphi课程设计.zip

      总结,这个Delphi课程设计项目是一个典型的数据库驱动的应用程序开发案例,涵盖了从数据库设计到用户界面实现的完整流程。通过这样的实践,学生可以深入理解面向对象编程、数据库管理和用户界面设计等关键技能,为...

      Delphi.5.X.ADO.MTS.COM+高级程序设计篇

      1-4 Delphi的数据存取技术 1-5 原生ADO对象和ADOExpress组件 1-6 结论 第2章 撰写使用ADO技术的应用系统(一) 2-1 ADOExpress组件 2-2 数据库应用程序 2-3 Master/Detall应用程序 2-4 事务管理 2-5 Batch...

      delphi做的截屏小程序

      本篇将深入探讨一个由Delphi7构建的截屏小程序,该程序具备热键功能,便于用户快速截图并理解其工作原理。 首先,我们要明白Delphi7是Borland公司在2002年推出的一款面向对象的编程工具,基于Object Pascal语言,以...

      Delphl5.x ADO/MTS/CoM+高级程序设计篇PDF

      《Delphi 5.x ADO/MTS/COM+高级程序设计篇》是针对使用Delphi 5这一经典编程环境,深入探讨数据访问对象(ADO)、微软事务服务器(MTS)以及组件对象模型加(COM+)技术的一本专业书籍。这本书旨在帮助开发者提升在...

      Delphi编程技巧.rar

      Delphi之快速设计(程序设计篇) Delphi之快速设计(界面设计篇) 在DELPHI2.0/3.0中直接操作端口 开 发AS/400 应 用 系 统: PB5 与Delphi3 的 比 较 检查驱动器是否就绪 在Delphi应用程序中拖动控件 用修改...

      delphi登陆注册设计

      本篇将深入探讨如何使用Delphi原生控件设计登录注册系统,结合一个名为“Demo”的示例项目,为读者提供详尽的实践指导。 首先,我们来看启动界面。在Delphi中,启动界面通常是应用程序的第一个窗口,用于展示品牌...

      Delphi/Kylix SOAP/WEB SERVICE程序设计配书代码

      本篇文章将深入探讨这两个工具如何与SOAP和Web服务结合,并介绍相关程序设计的核心知识点。 首先,Delphi是由Embarcadero Technologies开发的一种集成开发环境(IDE),它主要用于Windows平台上的对象 Pascal编程。...

      Delphi选课程序 Delphi7 access.rar

      本篇文章将深入探讨该程序的设计理念、技术架构以及核心功能,旨在为对Delphi编程和数据库应用感兴趣的读者提供参考。 首先,让我们关注Delphi7这一开发平台。Delphi是Borland公司(现Embarcadero Technologies)...

      delphi2006 dbexpress高效数据库开发

      《Delphi 2006 高效数据库开发——dbExpress 篇》是一本针对 Delphi 开发者的指南,特别关注使用 dbExpress 进行高效数据库应用开发。dbExpress 是 Borland(现为 Embarcadero Technologies)推出的一种轻量级、跨...

      Delphi 5.x ADO/MTS/COM+高级程序设计篇(配套源码)

      《Delphi 5.x ADO/MTS/COM+高级程序设计篇》是一本深入探讨在Delphi 5.x环境下如何高效地利用ADO、MTS(Microsoft Transaction Server,即后来的MSDTC,Microsoft Distributed Transaction Coordinator)以及COM+...

      Delphi发票查询及打印程序

      本篇文章将深入探讨如何利用Delphi7.0来设计和实现一个发票查询及打印程序。 首先,我们要理解发票查询系统的基本需求。它通常包括发票数据的存储、检索和展示功能。在Delphi中,我们可以使用ADO(ActiveX Data ...

      delphi程序托盘图标

      在Windows操作系统中,程序托盘图标,也称为系统托盘图标或通知区域图标,是位于任务栏右下角的小图标,通常用于隐藏程序或者提供快速访问功能。在Delphi编程环境中,开发人员可以轻松地创建这样的托盘图标,以便...

    Global site tag (gtag.js) - Google Analytics