Delphi 程序制作要点

--------------------------------------------------------------------------------

转载自逸仙时空BBS 整理:南海

一、为什么选择Delphi

  在开始任何一个项目之前,总会碰到选择开发工具的问题。各式各样的工具有其各自的特点,各有利弊。选择Delphi,各人有各人的理由,有的人是听说好,跑来看看;有的人是被迫的。什么时候人们会被迫使用Delphi呢?

  对于我来说,1)我不想在一个小Project中使用ODBC,我发现BDE效率很不错,于是很高兴。2)我很讨厌OCX, VBX,一大堆别人的东西拷入用户的机器,让我很没有成就感。3)我很少有机会作CView/CDocument形式的程序,而MFC对其它的支持差得惊人。4)我很喜欢Pascal,我敲begin....end不见得比敲{...}慢多少。5)C和C++网上资源太少,只能偶尔找到一些snippet 6)....

二、一些基本概念

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中的除<-, ->, <<, >>, +, -, 之外的 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)>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在共同访问同一变量,就会出现一些奇怪的现象。 新手最好先避开这类问题,省得麻烦。

Delphi 程序制作要点相关推荐

  1. 《Delphi程序开发范例宝典(第3版)》.(明日科技).[PDF]ckook

    为什么80%的码农都做不了架构师?>>>    图书作者: 明日科技 图书编号: 9787115277589 图书格式: PDF 出 版 社: 人民邮电出版社 出版年份: 2012 ...

  2. 043_《Delphi程序开发范例宝典(第2版)》

    <Delphi程序开发范例宝典(第2版)> Delphi 教程 系列书籍 (043) <Delphi程序开发范例宝典(第2版)> 网友(邦)整理 EMail: shuaihj@ ...

  3. 在Delphi程序中应用IE浏览器控件

    ---- 大概大家还记得Delphi的范例程序中的那个浏览器的例子吧.在那个例子中,利用控件THttp的属性和方法制作了一个浏览器.该例子用于理解THttp控件的使用方法,确实不错.但很少有人会用它作 ...

  4. 计算机邀请函制作教案,计算机邀请函制作要点

    计算机邀请函制作要点 (3页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 19.90 积分 邀请函制作要点邀请函制作要点邮件合并操作步骤:1. " ...

  5. 强烈推荐 DELPHI 程序员用 KOL+MCK

    以下资料均来自互连网: VCL 库是Delphi程序员熟知的,她几乎成了Delphi RAD技术的代言人. VCL拥有世界上最大最丰富的控件资源涵盖了软件开发的各个方面,远远超过其他开发工具,是每个程 ...

  6. 会声会影旋转木马制作要点

    看别人的会声会影视频教程看着非常的累,自己总结了下制作要点.这个过程完全可以自己编写一个简单的程序去实现. 1. 总共需要6张照片,图片必须是PNG格式,并且事先经过PS处理成一半是透明的格式,一般采 ...

  7. 会声会影手翻相册制作要点

    看别人的会声会影视频教程看着非常的累,自己总结了下制作要点.这个过程完全可以自己编写一个简单的程序去实现. 需要用到3条覆叠轨 总共需要6张照片,图片必须是PNG格式,并且事先经过PS处理成一半是透明 ...

  8. NSIS(Nullsoft Scriptable Install System)开源安装程序制作软件使用详细步骤(Windows系统下)

    NSIS(Nullsoft Scriptable Install System)开源安装程序制作软件使用详细步骤(Windows系统下)安装包制作 1.软件详情 软件版本 版本说明 翻译跟进 2.教程 ...

  9. .net卸载程序制作

    .net卸载程序制作 原文:.net卸载程序制作 方法一: 在打包项目中添加文件msiexec.exe(一般在c:\windows\system32(系统目录中)找到). 在文件系统视图中选择应用程序 ...

最新文章

  1. ksql中定义的本体在dataModel中不存在
  2. 【Android 异步操作】Handler 机制 ( Handler 常用用法 | HandlerThread 简介 | HandlerThread 源码注释分析 )
  3. 数字语音信号处理学习笔记——语音信号的同态处理(3)
  4. 【QGIS入门实战精品教程】3.1:QGIS如何连接SQL Server数据库?
  5. 易语言php支付宝,支付宝填表登录易语言源码
  6. go语言linux下开发工具,LiteIDE 开发工具指南 (Go语言开发工具)
  7. 李宏毅 -《深度学习人类语言处理》国语版(2020)视频课程及ppt分享
  8. 《Python核心编程》笔记 基础
  9. Android实现ping功能
  10. 【论文写作】——设置中英文字体
  11. Localize Folders and Reports
  12. Crd(自定义资源类型)2021.12.05
  13. Android开发之如何自定义垂直方向的SeekBar
  14. Ubuntu 14.04+GT720M+CUDA8.0+CUDNN+PYCAFFE
  15. 智能音箱背后的自然语言理解和知识图谱技术
  16. 吉林大学软件学院《软件项目管理》课程重点与测试题 第七章 质量计划和缺陷估计
  17. arcgis server地图服务访问权限设置及arcgis server token获取。
  18. php面试宝典 二:
  19. Linux基础知识学习()
  20. cas99970-84-0|2,2‘-联吡啶-4,4’-二甲醛 中间体材料

热门文章

  1. 搜狐,这次你玩过火了。
  2. SQL 日期和时间处理函数
  3. 三菱FX5U-绝对定位指令 DRVA(DDRVA) 两种写法
  4. 一.软件使用与基础入门
  5. 【转】总局公开回应质疑:TVOS不是安卓
  6. 100个冷笑话 越到后面越冷
  7. 4级网络工程师真题第4套知识点
  8. Unity第三人称控制实现方式
  9. 洛谷题单 算法1-3 暴力枚举
  10. 从0开始学递归和分治