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

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

二、一些基本概念

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在共同访问同一变量,就会出现一些奇怪的现象。

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

更改StatusBar为黑底绿字-Delphi资料 画布的圆拷贝和直线拷贝-Delphi资料 回车替Tab下移控件-Delphi资料 获取系统颜色-Delphi资料 渐变色窗口背景-Delphi资料 控件深度投影和阴影效果的实现-Delphi资料 控制Delphi的窗口显示位置 控制Form不能放大、缩小、移动、关闭-Delphi资料 控制系统菜单-Delphi资料 利用Delphi实现支持窗体的自定义函数 轻轻松松在DELPHI3.0中实现三态按钮 全部窗体可使用鼠标移动-Delphi资料 让按钮连续工作--兼谈Delphi元件开发 让彩色光标出现在Delphi程序中 让彩色光标出现在程序中-Delphi资料 在Windows桌面的任务栏上有一个凹陷的区域,其中显示着系统时钟以及一些图标,这个长方形的区域便 如何使用Show方法来显示一个模态窗口-Delphi资料 如何旋转字体-Delphi资料 如何隐藏和显示Windows的任务条-Delphi资料 如何在DELPHI界面上运行可执行文件 设计Form时的快捷键-Delphi资料 生成非矩形窗口-Delphi资料 时隐时现的鼠标-Delphi资料 无标题窗口的移动-Delphi资料 应用程序敏感键的实现-Delphi资料 用Delphi 4.0 设 计 新 型 界 面 用Delphi 实 现 自定 义 颜 色 对 话 框 及 其 构 件 用Delphi 实现自定义颜色对话框及其构件 用Delphi4实现风Word97风格的工具栏 用Delphi 开 发windows 屏 幕 保 护 预 览 程 序 用Delphi设置墙纸 如何用VB编写发邮件的程序? 数据库搜索的一个怪问题 怎么得到从另一个页面传来的参数 Full Text: Bush Speech Aboard the USS Abraham Lincoln 请问 怎么实现变量互换阿 我是新手~~~ FAT错误,请问如何修复? flashget那个小方框怎么做? 谁有《UML与Rational Rose2002从入门到精通》书的选配光盘 急!!!随机函数 FAT错误,请高手帮忙修复。 内部消息(我对我说的负责) 不定时开放FTP服务器 急,求救!!! 一个很简单的问题. 为什么 “基本图象处理代码(1) ehom(原作)”对grayscale不对? linux下的oicq 有马? 帮帮我,好吗,感谢,非常 help,help,sql query question? 大家认为考研考进其他学校(且跨专业)的可能性有多大 显示图片 数据库搜索的一个怪问题 共享上网问题!急~!!!! 句柄和指针有什么区别吗? 大虾快进来,帮帮兄弟们!!!再现等待!高分!! 请问C++Builder的程序中能不能使用*.mdb类型的数据库? 帮帮忙!!个位大哥 请问用java编程能实现数据采集的程序并进行传输(即c/s模式)吗? 请问什么命令找开一个窗体的? 请问:如何从文件中获取icon并得到HBITMAP句柄? 如何在客户端打开一个word文件 MVP是个什么概念???? linux启动不了,Bringup loopback interface时出错,请问是什么原因? 帮帮忙!! 我海军一艘潜艇失事 70名官兵不幸全部遇难!! 明天朋友结婚,征集整人的法子 是谁删除了我贴?? 而且没有跟我说一声!!! 白天工作,晚上溜狗,爽呀!比大暑天喝了冰镇雪碧还爽! 我的jsp服务器是iis+TOMCAT+win2000pro 不知怎的每次用不了多久就显示出 网页无法显示 目前访问该 Web 站点的用户过多,我只是自已用怎么 终于有星了,高兴,散分(第一次散分,请斑竹手下留情) 我的刚装的2000进入启动界面时,进度条读到2/3时就蓝屏了! 请问在运行时向ActiveX控件中添加ActiveX控件的方法是什么? 高手请进:如何在WinNT以上系统进行BIOS读取! 毕业设计的问题,请各位大哥帮小弟一个忙 备份与恢复 数据备份与恢复 我用win2k,下载了php4.3.1,extension_dir是c:\php\ext 可是里面没有php_gd.dll,怎么办,到哪里可以down一个补上? 帮我一下:解决中文问题 新手问题:怎么在用ATL COM WIZARD已生成的dll加入MFC 请问如何删除系统? warton给大家散分来了! 求助,请问哪儿提供的域名空间最好? 李叔叔平均一步长约70厘米,他绕着一块长是宽2倍的长方形的边沿走了一圈,正好走了900步.求地的面积? 质量316g的铁块,体积是多少、(P铁=7.9×10三次方kg/m三次方—) What's in it 其中代词 it 指什么? 一种香菇的含水率为80%,烘干后还剩( )% 若该项试验始终在黑暗中进行,有机物含量不断减少,原因是 what's in it for them 是什么意思what's in it for them 谢谢 有一块正方形地,边长是20米,在它的中央有一个圆形花圃,直径是8米,现在要在花圃周围修一条最宽的环形路,剩下部分种草,求路的面积和种草部分的面积. 幼苗体内的有机物含量在黑暗中不断减少的原因(两点) most people think bicycles are much safer than other vehicles 一块正方形田地,边长为20米.在它中央有一个圆形花圃,直径是6米,在它周围修建一条最大的环形走到.剩下的四四个角也建成花圃,花圃的总面积是多少? 秋天温带地区植物的树叶落下的主要原因是为了降低 A蒸腾作用 B有机物的消耗 most people think bears are stupid, but in fact they are quiet clever为什么不能用foolish 有一块正方形地,边长是20米,在它的中央有一个圆形花圃,直径是8米,现在要在花圃周围修一条最宽的有一块正方形地,边长是20米,在它的中央有一个圆形花圃, 直径是8米,现在要在花圃周围修一 小李以一定的初速度将石子向斜上方抛出去,石子所做的运动是斜抛运动,他想:怎样才能将石子抛得更远呢?于是他找来小王一起做了如下探究:他们用如下图所示的装置来做实验,保持容器水 把一块长120厘米,宽80厘米的塑料板裁成面积相等的正方形而且没有剩余,最少可以裁 有一块边长是8米的正方形的地,在它的中央有一个圆形花圃,直径是6米,在花圃的周围建一条最大的环形在花圃的周围建一条最大的环形走道,剩下的四个角,种植成草地.求建成的环形走道的面 某人站在地面向斜上方抛出一个物体,物体的运动轨迹是是抛物线型的,问该物体抛出时的速度和落地后的速度是否一样?下面有2种答案吖! 做斜抛的物体到达最高点时加速度为什么不为零?RT 有一块正方形地,如图所示,边长是30米,在它的中央有一个圆形花圃,直径是20厘米.现要在花圃周围修筑一条最大的环形石子路,请你在图上画出这条环形路,并求出环形路的面积. 向斜上方抛出一个石子,说明石子为什么不沿着抛出的方向做直线运动? 做斜抛运动的物体到达最高点时,A C合力为零 D加速度为零 新鲜香菇的含水率,和香菇的成熟度有什么关系?是不是越成熟含水率越高? 速度为零能否说明物体没有运动?有没有这样一种情况:物体速度大小为零但有运动方向?若有请举例? 斜抛物体到达最高点后,水平分速度起到什么作用 修 改病句制度的优越、国力的强大是中国撤离在利比亚人员行动能否取得成功的坚实基础.学校开展的“感恩、奋进”活动,掀起了同学间互帮、互助、互学、互进,增进了彼此的友谊. VIETNAMESE RESTAURANT怎么样 what与how在宾语从句如何使用 a cup oftea和a glass of milk还有He is 先回答的是最佳 这片土地是圣神的 ‘每一片土地都是神圣的’这句话改成比喻句怎么改? 萧山游乐场内有一块半径为5米的圆形空地,先计划在他的中央修建一个半径为3米的花坛,剩余部分铺成观光路求观光路的面积 这片土地是圣神的主要内容 What's in a name According to Shakespeare's“What’s in a name?”According to Shakespeare’s Romeo and Juliet,there is not too much.“That which we call a rose by any other name would smell as sweet.”But Shakespeare may have been wrong.I 游乐场里有一个圆形湖,湖内有一圆形湖心岛,最初岛的面积是环岛水面面积的1/3,由于旅游的需要,湖心岛进行了扩建,面积增加了3454平方米,此时岛的面积占整个圆形湖面积的9/25,则圆形湖的周 he still hasn't got used to___ (live) in the city since he came here 3 years ago. What's the name of the sport ____ you go in a boat 她有一张小嘴 用英语怎么说急 he ofen came to see me ---he live here A.while B.since 及解析live改为lived 光滑曲面上自由下落,机械能守恒吗 我有一个樱桃小嘴英语怎么说? 第二题,B项里在最高点时向心加速度为零吗? What's in a Name n为什么要大写 干香菇大的好还是小的好 急.若a÷1/2=b÷4/3=c÷5/5,且a、b、c都不为零,试比较a、b、c的大小,并说明理由.如上若a÷1/2=b÷4/3=c÷5/5,且a、b、c都不为零,试比较a、b、c的大小,并说明理由.要比较,以及理由,快 what's the name ___ the movie?Find Nemo.A.inwhat's the name ___ the movie?Find Nemo.A.in B.of C.at 无法拍摄的情况,我要一个科学的解释.我要的是自然或物理现象!( 拍摄工具正常,用法正( 拍摄工具正常,用法正常,对面的人正常) 我想问的不是怎样拍好而是怎样干扰 做匀变速直线运动的物体,在第2 s内位移为6 m,第5 s内位移为零,则其初速度是______m/s 在下列所述的物体中,机械能守恒的有 A做平抛运动的物体 B 被匀速吊起的集装箱 C光滑曲面上自由运动的物体D 物体以4\5g的加速度竖直向上做匀减速运动 懂鸟类的朋友来帮下忙!看看这是什么鸟! 求解释关于合力分力的问题 如图所示,挑水时,水桶绳子分别为a,b,c三种情况,哪种情况下绳子最容易断 早饭喝一点牛奶有助于你开始新的一天drinking some milk for breakfast ___ you ___ a ____ ____ 液压缸下坠 如图所示,a,b,c三根绳子完全相同,其中b绳水平,c绳下挂一重物.若使物体加重,则这三根绳子中最先断的是 what s in 干香菇的利润怎么样 挑水时,水桶上的绳子的状况分别是abc三种.则绳子在__种情况下容易断些c在最低处.所成的角度最大 a在最高处 所成角度最小 what's in it 香菇干怎样弄干的 用绳子系住水桶提水,手受到竖直向下的力,它的施力物体是A水桶B绳子C手D地球 Most people think ---are wining SARS.A/ours B/ourselves C/we D/us 美机场枪手行凶细节被曝光 短信透出厌英国15岁少年欲滑雪闯南极(图)日本未从日俄会谈获实质成果 牵制中国首份中日韩常用汉字表编制完成 808赵薇携《致青春》现身中美电影节【高清科索沃举行地方政府选举所罗门群岛掀寻金热 传二战日军沉船藏美研发新型间谍机 可一小时内到达全球人民日报谈地方债:风险总体可控 政府伊朗最高领袖称美国是微笑的敌人 对核美媒爆料日本系美监控对象 目的不仅限西化的越南年轻人【高清组图】德或成“五只眼”新成员国 美德协议分女子白天顺手牵羊偷衣服 晚上夜市摆摊海曙女子车里钻进一条蛇 男街坊自告奋男子车子被福特车挡道 与车主争吵气划小偷溜进医院想偷戒指 被发现后扯破衣以房养老产品或明年一季度推出 首选失周四“立冬” 接下来雾霾可能会是杭州西湖申遗成功两年多 团市委调查西湖保周末杭城雾霾缠身 今天起,弱冷空气或面包车变油罐车嘿该去买年货咯!MUST HAVE时尚单品盅“武林高手”陈十一下一篇11位戏剧名家与青年新秀结对传艺公开个人信息“监狱里的诈骗”家用中央空调西关美食节火热进行中上海率先尝试“买服务”申万宏源下周一正式挂牌上市佛山急寻双色球845万得主第A11G版:一路错到底20天的调查有法可依杨思琦否认与旧爱“争女”打出晚安两个字第C07版:编制就是命明日提示
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘