Delphi编程驿站,网络交流的空间站!


======================================================
注:本文源代码点此下载
======================================================

*****************************************************************

*一、为什么选择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在共同访问同一变量,就会出现一些奇怪的现象。

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


======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值