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

Delphi程序制作要点

作者:闵涛 文章来源:闵涛的学习笔记 点击数:695 更新时间:2009/4/23 18:24:22
一、为什么选择Delphi

  在开始任何一个项目之前,总会碰到选择开发工具的问题。各式各样的工具有其各自的特点,各有利弊。选择Delphi,各人有各人的理由,有的人是听说好,跑来看看;有的人是被迫的。什么时候人们会被迫使用Delphi呢? 对于我来说,
1)我不想在一个小Project中使用ODBC,我发现BDE效率很不错,于是很高兴。
2)我很讨厌OCX, VBX,一大堆别人的东西拷入用户的机器,让我很没有成就感。
3)我很少有机会作CView/CDocument形式的程序,而MFC对其它的支持差得惊人。
4)我很喜欢Pascal,我敲begin....end不见得比敲{ ...}慢多少。
5)C和C++网上资源太少,只能偶尔找到一些snippet

  二、一些基本概念

  A.面向对象的概念简单地说,Pascal原有的record类型,加上procedure和function就成了class 因此,一个class类的东东本质上是一个变量,Implementation里定义了这个变量的Details, Interface是变量的定义,告诉编译器在别人引用我时到哪里找具体的代码。一个Form引用另一个Form中的变量,实际上是两个Form型变量的元素的引用。B. Delphi的Class三大元素这三大元素是Property, Method, Event 这是你要使用一个控件最重要的信息。Property可读可写,Method引发一个procedure或function, Event允许用户定义回调函数。Property在Design Time时在Object Inspector中设,Method在程序中调用了解了这个概念,有助于你在看Help时不会晕头转向。C.关于Property的说明切记,Property的修改并不一定只是读写了一个变量,它有可能引发一大堆代码。在Property的定义中,一般是这样写的property Lookup: Boolean read GetLookup write SetLookup; 在这里,GetLookup和SetLookup是function,因此,有可能属性一改,事实上作了很多工作。D.代码的位置有时很重要在什么时候调用特定的代码是很重要的,Window整个都是由消息驱动的,永远不会被触发的代码根本不被编译到程序中去。你在Delphi 3中会看到它根本不被打上蓝点。而且代码是可以重入的!!!!以后会详细讨论这个问题。

  三、从一个通讯录程序开始

  不使用Delphi的数据库功能,对于初学者来说,实在有点可惜,Borland花了大量精力使数据库编程变得简单。数据库编程最好的教程是Delphi 1.x中带的Interactive Tutor(Delphi 3中好象没有),它讲述得非常生动,每一位初学者都应该看一看。

  看过这个教? 可以自己试着作一个通讯录程序。这样一个程序大家都有感性的认识,容易上手。

  第一步,用Database Desktop建一个数据库,开一些Name, Tel, Addr, Memo 等字段,记住,千万不要用中文作字段名哦。

  第二步,用Database/Form Wizard作一个坯子看看再说。你会生成一个Form, 上面有一个DBNavigator,一堆Data-aware的控件和相应的Label(这个例子中,不建议用DBGrid) 第三步,右键单击Table1控件,打开Field Editor,选择Name字段,在Object Inspector中将它Display Name属性改为姓名, Transliterate属性改为False. 这是为了使StringField显示中文。依此类推,把你要改的字段都改过来。Label 的Caption也都改成中文。

  第四步,把DBNavigator的VisibleButton中的除$#@60;-, -$#@62;, $#@60;$#@60;, $#@62;$#@62;, +, -,之外的Button都去掉。

  第五步,再运行这样你就作成了你的第一个中文通讯录。这个通讯录没有什么查找功能,显然很没市场,下面你给它加一个简单的查询功能。

  第一步,加一个Button,Caption设为查找姓名 第二步,New一个Form,如Form2,上面加一个Edit,两个BitBtn,一个Kind设为bkOK,另一个Kind设为bkCancel,按你的需要修改显示的文字。

  第三步,双击第一步中的Button,跳出代码段。写下以下代码:

  if Form2.ShowModal = mrOK then begin

  Table1.DisableControls;

  Table1.First;

  while not Table1.EOF and

  (Pos(Form2.Edit1.Text, Table1Name.Value)$#@62;0) do begin

  Table1.Next;

  end;

  Table1.EnableControls;

  end; 第四步,在Unit1中的Uses中加入unit2;运行

  四、写代码的一些要素

  A.尽可能不要在(对新手来说,是绝不要) TMyForm=class(TForm)

  .....

  .....

  ..... end; 之外定义变量,尽量在Private段定义自己的变量和Procedure等。

  B.任何情况下,不论多么艰难的调试情况,在begin回车之后,先打两个空格再写程序代码。end一定要和相应的begin呼应在同一列上。

  C. Delphi是大小写不敏感的,但是多处引用时尽量保持相同的拼写。

  D.不要自己去删Delphi自动生成的代码,解铃还需系铃人,如果不小心在哪里Double Click了一下,Delphi生成的程序会在Save Project和Build时自动删掉。(只要begin...end中间没写你自己的代码) E. FormCreat之前,它所包含的控件都还没有建立,是不能引用的。在Form1OnCreat 时,你不能用Form1.ListBox1....... 但是你可以写:

  ListBox1......... 这是Delphi的约定,所以不要问我为什么。

  F. Form1如果是MainForm,在OnCreat时是不能去引用Form2的变量的,因为这时Form2还不存在。

  G. Form2.ShowModal后,程序会在Form2返回后才执行后面的代码,而用Show 可不是这样。

  H.任何一段消息回调函数的代码都不要执行过长时间,如果迫不得已,在大循环的间隙,一定要调用Application.ProcessMessages 要不,程序会象死机一样。

  五、Windows编程的重入问题

  TTimer是用于定时反复执行一些代码,可是千万记住如果一段代码执行时间过长时,下一次Timer触发会重入这段代码,就是说如果Timer1Timer中没有Timer1.Enabled := False; 的话,可能会有两个进程在执行这段代码,如果共同访问一个变量,一个有可能在改,一个有可能在读,那么就会出现意想不到的问题。

  类似的重入问题其它时候也会碰到,比如你在Show(而不是ShowModal)一个Form时,两个Visible的Form在共同访问同一变量,就会出现一些奇怪的现象。

  新手最好先避开这类问题,省得麻烦。


没有相关教程
教程录入: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……
    咸宁网络警察报警平台