说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Delphi 程序制作要点

HTML文档下载 WORD文档下载 PDF文档下载
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在共同访问同一变量,就会出现一些奇怪的现象。 新手最好先避开这类问题,省得麻烦。

VC++、MFC最好的开源项目 Android中电话和短信服务的包分析 一位Android开发者的赚钱经历 让网页中的图片随屏幕滚动,并避免与文字重叠 Hello bat - DOS BAT批处理编程入门教程(一) 变量 - DOS BAT批处理编程入门教程(二) Android编程获取网络连接状态(3G/Wifi)及调用网络配置界面 程序流程控制基础 - DOS BAT批处理编程入门教程(四) For循环语句详解 - DOS BAT批处理编程入门教程(五) Android编程之实现GPS定位 android编程实现仿iphone的tab效果 系统变量 - DOS BAT批处理编程入门教程(三) Android编程获取手机的IMEI Android开发中14个很有用的编程技巧 Android蓝牙栈bluez使用方法 Android模拟GPS数据生成kml和nmea文件 Android签名用keytool和jarsigner制作apk文件 谈谈Android中文短信的实现 Android中文短信开发技巧 Android来电号码获取代码 Android AIDL初学者必看内容 Android与XML解析 Android天气预报程序开发实例与定位信息 Android中文短信开发终结篇 Android权限列表permission说明 Android输入法开发实例解析 Android示例程序Snake贪食蛇源代码分析 Android平台View的按键事件KeyDown用法 Android加速感应器实现屏幕自动旋转-Sensor属性 Android视频播放类VideoView解析 Javascript如何检测浏览器关闭了小叉叉 帮我看看这个c语言的程序! 怎样处理窗口标题? 高分求助 !!!怎样利用INTERNET实现异地多台机器互连? 很简单,如何得到当前的时间和日期?(在线等待) 请问哪里有用applet做的,能绘制数学曲线的动态演示系统?各位,请不吝赐教 今天大清早被人诅咒! Delete 多个表时一条语句怎样写?? 请教:如何获取文本框中SQL语句。50分 日期型的格式应该怎样写?? windows xp internet 浏览器的问题 大家帮我看看这段代码:它是如何得到name和phone的值,并写到文件中取得 100分求李维的delphi5.x分布式系统开发的源代码,电子书我已经有 奇怪。为何win2000的搜索选项中的日期控件是Delphi中的样式?欢迎来讨论,给分!!! 请教一个数据库查询的问题! 哥、姐帮帮小第,一生成并打印表格问题(有图片及字体适应),急急,十万火急。 怎样在ASP.NET的页面中,把DataGrid的表头改名??急急急!!! 在线求教:怎样在自己定义的函数里封装自己的MouseMove类??? (高手求救………100分)怎么样用socket(http)实现上载!请提供思路或source code! 怎样调用Dll中导出的变量??? 那位大哥有关于颜色渐变的算法的代码,给小弟一份 小弟万分感谢 颜色渐变的算法 颜色渐变的算法 问一个有关缓存的问题 更换基类的问题? 感谢上学期大家的帮助——散分 一个奇怪的问题,100在线送给你!!! 用rave生成的pdf格式报表,中文字符怎么是乱码? 请进来: windows 2000 能不能用API的方式将Imagelist中的图画在命令按钮(Commandbutton)上? 请各位指点怎么从SQL65升级到7,还有数据备份?请大侠指点迷津? 请问如何解决.exe文件在其他机器上的运行问题 允许DBGrid对记录进行编辑,在线等待,急急急~ 如何在vb.net定义失去焦点事件? 如何读出文章中的部分内容(在线等待) 怎么样在VB中实现象PING -A命令 有没有一个更好的论坛????????????????????有没有人来踢馆?????????????????????????????? 如何访问隐藏共享的硬盘 请大家评评,先谢了 一个有趣的问题: 慢的问题 我在windows下的FormInput里有多个sqlDataAdapter 数据几百条 DataSET.fill慢及了 如何返回当前程序目录的上一级目录? EA,你给我进来,你又欺负我MM啦? 请问PB的DATA window如何实现分页? 关于pb中我在sqlserver中定义的字段类型是varchar(1000),结果在做数据窗口时它总是自动截取为char(255),为什么?如何解决这个问题(除了 IIS出错了,凡是需要数据库的asp程序在执行时出错: 关于下三角矩阵压缩存储问题 求免费下载电影电视剧的FTP站点 模块实现 数据表转换问题. 请帮帮忙. 我种木马了,请问怎么解决?? 急问:"0x77fcb8f4"指令引用的“0x00000000”内存。该内存不能为“writter” 关于文件名问题 社会主义国家土地制度都是公有制吗?世界上采取土地公有制的国家都是有哪些? 验证Cu2+离子 将60℃的硫酸铜饱和溶液100克,冷却到20℃,下列说法正确的是将60℃的硫酸铜饱和溶液100克,冷却到20℃,为什么 溶液质量会变小 ,浓度减小,溶剂质量减小?求详解..谢谢谢谢. 新中国成立到人民公社化之间的这段时期,土地是私有制还是公有制1949—1962这段时期实行的农村合作社,是土地公有还是私有? O2、SO2、HCl的氧化性顺序及排序的依据是什么? 为什么钠可以作原子反应堆的导热剂 谁有初中语文教学用书? SO2 使品红褪色是利用氧化性还是漂白性?Hcl Na,K合金可作原子反应堆的导热剂.为什么 我国现在的土地制度是公有制还是私有制分界线是什么? 人民公社是什么年代 鸦片战争时期中国贫困落后的根本原因 "井底之蛙"这个成语大家都很熟悉吧?你能解释为什么"坐井观天,所见甚小"吗?你能根据光的直线传播原理画图来说明吗?第2问可不答 人民公社时期农村生产怎样的状况?说错了、是“遍哨子不买账,二遍哨子伸头望,三遍哨子慢慢晃”反映了当时农村生产怎样的状况?其主要原因是什么?、 鸦片战争前夕中国落后于世界的原因 关于光线的物理题在水平版上竖直插上一把直尺,选一个有太阳光的地方,每过半个小时(中午12点左右时,每过15分钟),在直尺影子的顶端做一个记号并量出影长,找出一天中影长最短的时刻怎 人民公社是什么东东?谁想出来的? 炼油厂油的燃烧是把化学能转化为什么能 物理题,光线光线垂直射到镜面上时,入射角为( ),反射角为( ),入射角和反射角的夹角是( ),反射光线的方向改变了多少? 人民公社存在多长时间? 将60度的硫酸铜饱和溶液100克,冷却到20度,下列书法正确的是A 溶液质量不变 B 溶剂质量发生变化 C 溶液为饱和溶液,浓度不变 D 有晶体析出,溶剂质量不变 关于光线的一束红光与一束蓝光共同照射在同一个点,那点反射出来的光是什么颜色的?红,绿,蓝三种光束共同照射在同一个点,那反射出来的是白光吗? 二氧化硫对植物的伤害极大.将四棵生长状况都良好、大小相似、品种相同的植物分别放入以下的四种环境中,如果四种环境中的二氧化硫的浓度相同,你认为下列哪种情况下植物受到的伤害最 将12.5克五水合硫酸铜制成百分之十的硫酸铜溶液 需要水多少克计算式完整一点 再告诉我要不要考虑水合 so2将直接危害高等植物的什么组织 以下四种东西,哪种与碱反应会生成氨气A NO3B NHO3C NH2OD N2H4O3 请问五水头孢唑林钠是第几代抗生素,是属于特殊使用吗 空气净化器对pm2.5有用么 请教旅游从业者,什么是生态旅游? 鸦片战争后中国社会的趋势?从经济上、政治上和思想文化上来说! 问一道关于滑轮组的题目用滑轮组竖直提起重物,若用80N的拉力使320N的物体上升0.3m,拉力移动的距离是1.5m,求:1.该滑轮组中动滑轮的总重力(不计摩擦和绳重)2.若被提升的物体重力增加了100 生态旅游的意义是什么? 忐忑不安的解释 一道关于滑轮组的科学题目.如图,重为800牛的物体A在F=50牛的拉力作用下,以20厘米每秒的速度在水平面上做匀速直线运动,若滑轮组的机械效率为80%,求5秒内拉力做功多少?物体收到水平地 忐忑不安, 在酸性溶液中,能大量共存的离子组是A:Mg2+.Fe3+.NO2-SCN- B :Al3-.Fe2+.Cl- ,SO42在酸性溶液中,能大量共存的离子组是A:Mg2+.Fe3+.NO2-,SCN- .B :Al3-.Fe2+.Cl- ,(SO4)2-C:K+,Na+,Cl-,( HCO3)-D:Na+,Ca2+,(NO3)-,(SO4)2- 关于滑轮组的一道科学题目一个滑轮组,动滑轮由2股绳子承担,工人师傅用500N的力,在100秒内把800N的重物匀速提升10米,A、他做的有用功是8000WB、他做的总功是1000JC、他做功的功率是80WD、滑轮 为什么明朝起义的是农民阶级的李自成,不是资产阶级呢为什么张居正会这么早死呢. 抗生素自来水,喝着安全吗 一道关于滑轮组的题设计一个滑轮组,使拉力是物重G的1/3,人的拉力方向向下,要求所用的滑轮个数最少(不计算滑轮重的摩擦) 什么是生态旅游? 喝自来水安全吗?长期喝过滤过的自来水健康吗? 人民公社产生的影响? 如何在贵州发展生态旅游,1什么是生态旅游.2为什么要发展生态旅游 物理层与数据链路层的区别 一台起重机将重1.5×10的4次方N的钢材竖直匀速提升4m,用时10s.求:(1)起重机拉力做的功 (2)起重机拉力做功的功率. 为什么只能用水对反应堆进行降温?不能用干冰、液氮之类低温的东西么?是会起反应还是其他原因? 常见的物理层传输媒体是什么? 大气中的二氧化硫直接危害陆高等植物( )组织. 氨气和什么生成HCL 忐忑不安什么意思? 人民公社哪里好? 什么反应生成氨气求助:一般怎样的反应类型生成氨气的啊?有什么规律吗?把总结性的化学方程式写出来啊!最好配上几个例子! ------------初中化学! 如何将高压数显上的电流转换成低压电流表的读法? 爬树时,人受到的摩擦力,与地球重力相反方向的摩擦力是说成地球的摩擦力还是与树产生的摩擦力? 深思与沉思的区别 什么与水缓慢作用生成氨气化合物A与水缓慢作用生成氨气和化合物M,其中化合物A只含两种元素.请问A和M分别是什么? 第一次世界大战卷入国? 沉思与深思的区别 用什么加热来生成氨气 火箭队新赛季阵容确定 NBA官方排名纽约庆祝索契冬奥百日倒计时 花滑美女全国43站点监测雾霾对健康影响 含河中央将遴选100名具冲击诺贝尔奖潜力日本民主党:安倍内阁任命亲信 有统治中国常驻联合国副代表敦促美尽快终止对93岁老人做裸模十余年:几个孩子都不浙江衢州:法官强忍病痛开庭感动当事人辨称窃听不针对欧洲公民 美试图为盟友外交部副部长刘振民与朝鲜外务省副相举中国财政部官员当选亚洲开发银行副行长印度一客车行驶途中起火 44人死亡包中国青少年多发\"老年病\"令人忧 新浪微博预热五金博览会叙总统颁特赦令 释放包括反对者在内所外媒称武装分子在叙利亚东北部使用毒气美媒称白宫叫停监听默克尔未获国安局落联赛杯-小豌豆2球贾努扎伊造点 曼联通讯:“让我们侧耳倾听鲸的呼吸”墨总统说在墨投资正是好时机专家:海军三大舰队演习或常态化 促编今夏西瓜批发价比去年低重庆版侏罗纪公园国庆节亮相 48只仿加读本微信 办健身年卡只要800元消暑体验农家乐 美高葡萄正当摘想海淘吗?我们为你牵线搭桥猜一猜,他是天使还是魔鬼?到账千余万 奖励支出55万拿到工资,你是存还是花?帮你问问空调要深度清洗才有效 966966让三环铜梁至永川高速明年通车,开车仅4金融家一定要有冒险精神钱包不翼而飞 失主现金悬赏刚出锅的原酒太香 他一口气干了一碗17小时未进食,护士长只能喝矿泉水充重庆银协选举出新会长 9家银行获最具市委市政府向云南地震灾区致慰问电并捐苏宁818开始派发红包本报记者抵震中 直击鲁甸救援怎样让孩子多长10厘米?暑假过半,同学你的假期作业做了多少?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘