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是完全面向对象的,有对象就考虑其属性、事件、方法、继承、引用等等。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Delphi是全新的可视化编程环境,为我们提供了一种方便、快捷的Windows应用程序开发工具。它使用了Microsoft Windows图形用户界面的许多先进特性和设计思想,采用了弹性可重复利用的完整的面向对象程序语言(Object-Oriented Language)、当今世界上最快的编辑器、最为领先的数据库技术。对于广大的程序开发人员来讲,使用Delphi开发应用软件,无疑会大大地提高编程效率,而且随着应用的深入,您将会发现编程不再是枯燥无味的工作——Delphi的每一个设计细节,都将带给您一份欣喜。  1.1 Delphi基本概念介绍  1.1.1 Delphi的基本形式  Delphi实际上是Pascal语言的一种版本,但它与传统的Pascal语言有天壤之别。一个Delphi程序首先是应用程序框架,而这一框架正是应用程序的“骨架”。在骨架上即使没有附着任何东西,仍可以严格地按照设计运行。您的工作只是在“骨架”中加入您的程序。缺省的应用程序是一个空白的窗体(Form),您可以运行它,结果得到一个空白的窗口。这个窗口具有Windows窗口的全部性质:可以被放大缩小、移动、最大最小化等,但您却没有编写一行程序。因此,可以说应用程序框架通过提供所有应用程序共有的东西,为用户应用程序的开发打下了良好的基础。Delphi已经为您做好了一切基础工作——程序框架就是一个已经完成的可运行应用程序,只是不处理任何事情。您所需要做的,只是在程序中加入完成您所需功能的代码而已。 在空白窗口的背后,应用程序的框架正在等待用户的输入。由于您并未告诉它接收到用户输入后作何反应,窗口除了响应Windows的基本操作(移动、缩放等)外,它只是接受用户的输入,然后再忽略。Delphi把Windows编程的回调、句柄处理等繁复过程都放在一个不可见的Romulam覆盖物下面,这样您可以不为它们所困扰,轻松从容地对可视部件进行编程。 1.1.2 面向对象编程的概念  面向对象的程序设计(Object-Oriented Programming,简记为OOP)是Delphi诞生的基础。OOP立意于创建软件重用代码,具备更好地模拟现实世界环境的能力,这使它被公认为是自上而下编程的优胜者。它通过给程序中加入扩展语句,把函数“封装”进Windows编程所必需的“对象”中。面向对象的编程语言使得复杂的工作条理清晰、编写容易。说它是一场革命,不是对对象本身而言,而是对它们处理工作的能力而言。对象并不与传统程序设计和编程方法兼容,只是部分面向对象反而会使情形更糟。除非整个开发环境都是面向对象的,否则对象产生的好处还没有带来的麻烦多。而Delphi是完全面向对象的,这就使得Delphi成为一种触手可及的促进软件重用的开发工具,从而具有强大的吸引力。 一些早期的具有OOP性能的程序语言如C++,Pascal,Smalltalk等,虽然具有面向对象的特征,但不能轻松地画出可视化对象,与用户交互能力较差,程序员仍然要编写大量的代码。Delphi的推出,填补了这项空白。您不必自己建立对象,只要在提供的程序框架中加入完成功能的代码,其余的都交给Delphi去做。欲生成漂亮的界面和结构良好的程序丝毫不必绞尽脑汁,Delphi将帮助您轻松地完成。它允许在一个具有真正OOP扩展的可视化编程环境中,使用它的Object Pascal语言。这种革命性的组合,使得可视化编程与面向对象的开发框架紧密地结合起来。 1.2 Delphi 快速入门  在这一节中,我们来开发一个小程序。随着开发的过程,逐步介绍Delphi的主要部件及其操作方法。建议读者按照本书介绍的过程,在您的电脑上直接操作。您将对Delphi的可视化编程有一个直观、快捷的了解,必将起到事半功倍的效果。  1.2.1 进入Delphi的可视化编程环境 1.2.1.1 安装Delphi  Delphi的安装与其它应用软件并无不同。2.0版必须在Windows 95以上的操作系统中使用。启动Windows 95或Windows NT后,将Delphi的光盘放入光驱(CD-ROM)中,运行光盘上的\INSTALL\SETUP.EXE文件,它的安装程序会提示您正确地装入Delphi。如果您是在微软中文Windows环境中安装Delphi,请参照附录A来设置您的BDE环境,以便于处理中文数据。  1.2.1.2 进入Delphi 环境 为避免隐藏在Delphi后的Program Manager和曾经运行过的其它程序扰乱版面,分散您的注意力,不妨在启动Delphi前关掉其它应用程序;启动Delphi后,再最小化隐藏在后面的Delphi 2.0程序组。这样屏幕上就只留下Delphi窗口可见了。 首次加载Delphi,屏幕上会出现四个窗口: ● 标题为“Delphi-Project1”的Delphi主窗口 ● Object Inspector窗口 ● 标题为“Form1”的窗体(Form)窗口 ● 标题为“Unit1.PAS”的代码编辑窗口。刚启动时这一窗口的大部分被“Form1”窗体所掩盖。将“Form1”窗体移开,或单击Form1窗体下方的状态行,可以使其全部可见。在“Form1”窗体的任意可见位置单击鼠标,可以恢复主窗体可见 以下我们将对这四个窗口分别进行介绍。  1.2.2 Delphi可视化编程环境介绍  1.2.2.1 主窗口(Main Form)  Delphi的主窗口位于屏幕的上端,包括Menu(菜单)、Speed Bar(加速条)和Component Panel(部件选项板)。Menu是下拉式主菜单。Speed Bar位于主窗口的左下端,由两排共14个加速按钮组成。这些按钮是菜单功能的快捷方式,各种图标直观地表示了它能执行的动作。Component Panel由一行、若干页对象按钮所组成,利用它来选择需要的部件并将它放到窗体中去。  1.2.2.2 Object Inspector(对象检视器)  Object Inspector窗口含有两页:Properties页显示窗体中当前被选择部件的属性信息,并允许改变对象的属性;Events页列出了当前部件可以响应的事件。按动Object Inspector下端的“Events”页标签,使得Events页可见,这一定的事件后边的空白处,可以定义对象接受到相应事件时执行的动作。首次启动时,Object Inspector窗口显示的是当前窗体Form1的属性。Object Inspector根据对象属性的多少,决定是否有滚行显示。移动滚行条,可以查看当前对象的全部属性。 此外,Object Inspector上还有Object Selector(对象选择器),位于Object Inspector上方的下拉式菜单中。它显示了窗体上所有部件的名称和类型,也包含窗体本身。您可以用Object Selector很容易地在窗体的各个部件之间切换,也可以快速地回到窗体本身。当窗体中含有较多的对象时,您会发现这是切换对象尤其是回到窗体的最快捷途径。 想使Object Inspector一直可见,可将鼠标移到Object Inspector上,按动右键,以启动Object Inspector的弹出式菜单,将其设置为Stay On Top。这对初学者常是一个很重要的设置方式。  1.2.2.3 窗体窗口  Forms窗口是开展大部分设计的工作区域。首次启动Delphi 2.0时显示的是窗体Form1。可以把部件放在窗体中,通过移动位置、改变尺寸等操作随心所欲地安排它们,以此来开发应用程序的用户界面。您可以把窗体想象成一个可以放置其它部件的容器。窗体上有栅格(Grids),供放置部件时对齐位置用,在程序运行时Grids是不可见的。 一个真正的应用程序可能有不止一个窗口,您可以选用不同的窗体进行设计。其它窗体可以是对话框(Dialog Box)、数据录入框等。  1.2.2.4 代码窗口  代码窗口一开始处于窗体窗口之下。因为在Delphi中,设计用户界面直接在窗体中进行,运行结果和设计样板完全一致。当部件被放到窗体上时,Delphi会自动生成大部分的用户界面代码。您所应做的只是在它为您生成的框架中加入完成所需功能的程序段而已。点动Form1的状态行使代码窗口可见。 这个窗口中是代码编辑器。可以在其中书写Delphi应用程序的源代码。当程序中含有不止一个窗口时,会有几个库单元的源程序出现在代码编辑器中。代码编辑器的标题条中显示了当前正在编辑的库单元文件名。要查看某一特定程序的源代码,只需用鼠标点动写有该库单元文件名的页标签,就可以对该库单元进行编辑了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值