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

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

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

iOS开发者必备:四款后端服务工具 市场研究公司:iPhone5C/5S成本分别是173、199美元 对软件开发有利的5个敏捷编程方法 移动端性能大比拼:CSS Sprites vs. Data URI 三大峰会七大论坛,2013移动开发者大会将于11月在京举行 黑莓47亿美元收购的背后 微软或成最大受益者 搜索大战升级:360搜狗相互起诉对方不正当竞争 诺基亚将于10月22日发布6款新产品 平板Lumia 2520等 从17美元到50美元 Facebook股价上涨背后的两大关键 12个理由:为什么我会认为Android比iOS 7好! AMD推 &quot;Mantle&quot; API 欲释放GPU全部潜能 Salesforce架构:日事务过13亿,2.4万TPS的数据库峰值 久违的iOS,新鲜的SDK,豌豆荚发布云相册 喜大普奔:谷歌15岁了,生日快乐! 传福特CEO Alan Mulally目前最有希望执掌微软 微软计划将WP8和Win8应用商店合并?太好了! 响应开发者要求:Kinect for Windows SDK 1.8发布 OpenStack基金会BD总监:希望有更多的中国公司加入 CTO如何避免决策失控(三):从CEO角度看CTO的应对能力 IT界需求最旺的16项技能 PMC发布8系列RAID卡 找准国内互联网企业需求 早Google一步,eBay数据中心率先搭载了火星上使用的技术 目标专利2000,技术研发人员占55%,斐讯的厚积薄发 SwiftStack CEO:分布式存储的未来 触控陈昊芝:“好声音”标王对移动游戏未来的预测 Office将更强大:微软正开发Office Reader和Office Lens 百度技术专家详解Clouda 并称计划推出相应UI解决方案 少年才俊:看IT界8个不到20岁的科技公司创始人 Oracle与Freescale展开深度合作,Java或将一统物联网? 探秘Google新搜索引擎算法Hummingbird的16个疑惑 如何在开发项目里进行自我激励! 我先试一 下 关于得到文件的名字? 用5行代码就让系统重起的帖子怎么找不着了?谁告诉我?加分了!! 素女经 如何修改SQL数据库表中的数据 在对话框里输出文字?不要控件!!不要static 控件 一个关于打印的怪问题! 如何将数据库通过JDBC接收并将字段关键字连成一棵树(每一分支最多64节点) 救急!!!!!!!小妹我遇到一点问题! 今年就业形势“大好”! ******* 马上就给分,所以给的少了点,大家别介意 ******** 大家给点意见 请关注一个初学者的问题?我学sql但是不知未来的发展趋势!? 图形数据窗口(line 星)点太大,如何缩小 救急!!!!小妹我遇到一点问题! 用bcb制作动态网页 数据窗口 Graph 类型 line 样式 如何学c语言? Delphi中如何获的其它应用程序中的内容? 显示颜色变成只有16色和2色? DWORD 参数传递的问题。 那里有播放AVI文件的程序?谢谢! 参数传递问题!!大侠帮帮我 请帮我修改一下源代码(delphi)请帮忙改一下,让它打印了不往里(数据库)存。 BIOS设置,用电脑是不是可以当闹钟呢? 五笔输入法忽然不能用了 救就我,为什么Frame的客户区变小了?关于切分窗口 怎样查找某一个目录下一个表是否存在? 请问有用过李阳疯狂英语的朋友吗?请说说到底怎么样? 我想向各位大侠请教一个问题? 如何屏蔽TEXTBOX的回车响应? 关于《各位学习编程的目的是什么》的总结 m_pusrrcdset->m_pDatabase->ExecuteSQL("")为什么不行?老是ASSERT错误 请问我刚入bcb的大门,有什么好的参考书可以看看吗? 有没有人知道计算机等级考试四级怎么查分啊? 如何将几个数组的信息写成一个.txt文本文件 笔试题请教? 请教一个小问题! 好难呀好难呀!!!!! 今天狠了狠心买了一本<>,花了我十分之一的工资!心疼啊!散点分! 请问有谁知道如何在C#中使用DirectX? 我在Picturebox中用Picture1.print打了200行数据,可我只能看到前20行 pb数据窗口中的列名在win2000 server里为什么显示不了中文? God save me,help...... tcl手机所使用的是那种操作系统,能否告知小弟,重分相谢! 异常中的问题 刷新对话框的背景图片(基于对话框的程序,而且刷新不只一次)! 请问? 急急急!!上网后的图标不见了!!! 为什么我写了个JSP写入数据库中的中文在数据库中查看是乱码? 在平面直角坐标系xOy中,反比例函数y=k/x的图像与y=3/x的图像关于x轴对称,又与直线y=ax=2交于点A(M,3)试确定a的值 大气中起吸收紫外线,保护地球生命作用的是哪种成份? 一块小麦试验田,今年比去年的产量增产2成,增产了540千克.去年共收小麦多少千克虽然我没有钱悬赏 但是我希望大家都能有一颗真诚的心来帮助我! 在平面直角坐标系xoy中,反比例函数Y=K/X的图象与Y=3/X的图象关于X轴对称,又与直线Y=AX+2交于点A(M,3)A值 被成为 地球生命保护伞 的是大气中的 (什么) 成分 空气滤清器叶片环起什么作用 已知直线y=(1-3k)x+2k-1.(1)k为何值时,直线在y轴上的截距为-2? 大气对地球生命的保护侧重于“大气在地球环境 中扮演的角色和对生命体的作用” 已知二次函数y=(k-2)x^2+2kx+3k,根据给出的条件求出相应的K的值,(抛物线的顶点在x轴上) 在平面直角坐标系中,已知点(1-2a,a-2)在第三象限,且a为整数,求a的值.请写出具体过程, 已知直线y=(1-3k)x+2k-1.(1)k为何值时,直线在y轴上的截距为2?(2)k为何值时,直线与x轴交于(¾,0)(3)k为何值时,y随x的增大而增大 过量的紫外线会诱发皮肤癌,大气层依靠什么来阻挡部分紫外线,保护地球上的生物?大气层的这种功能现在有没有受到影响? 在平面直角坐标系中,点E(3k-9,1-k)在第三象限内,且点的坐标都为整数,求E点的坐标 已知直线y=(1-3k)x+2k-1 (1) k为何值时y是一条与x轴平行的直线 幸福村共有6块水稻试验田,每块试验田2006年的收成与去年相比情况如下:幸福村共有6块水稻试验田,每块试验田2006年的收成与去年相比情况如下(增产为正,减产为负):48千克,—35千克,40千 已知点A(m,n),在平面直角坐标系中的第三象限,其坐标m,n满足3m+2n=k-9,2m+n=k-7.(1)、求整数K的值;(2)、当K为整数时,分解因式(a+b)³-k(a+b)=? 已知a^x=1/2,b^k=-1/3,求a^2k-3k的值 y=(2k-1)x+(3-2k)k的范围 海洋对地球的天气有什么作用 大气对地球有哪些重要作用 A={X|-3大于等于X小于等于2} B={X|2K-1大于等于X小于等于2K+1} B小于等于A.求k的取值范围 海洋对环境的作用 空气层对地球有什么好处 地球的外衣——大气层. 海洋在调节全球气候的作用,谈谈目前的研究概况 实际应用的可能性等等 地球表面的空气层叫大气层,由于它也受到( )作用,且具有( ). 初二上学期第二章地球的“外衣”____大气答案初二科学上学期第二章地球的“外衣”____大气答案 海洋如何调节全球气候越快越好 为什么地球的大气具有保温作用 地球的衣裳阅读答案 在平面直角坐标系中,已知点p(1-3m,m-4)在第三象限,且m为整数,求m的值. 六年级第一学期语文课本第一课中的芒针是什么意思 设集合A={xIx=2k,k∈N},B={xIx=3k,k∈N},则A∩B等于 已知m,n为整数,且满足2m^2+n^2+3m+n-1=0,求m,n的值 地球的大气层有什么作用?如果没有大气层,地球将会怎样? 若3k(2k-5)+2k(1-3k)=52,则K等于多少? 已知点P(2M-1,-3M-1)在第三象限内,若M为整数,求点P的坐标 大气层的存在,使地球变得较适宜生命的出现和繁衍.大气层的作用中较重要的作用是保护作用,请列举大气层对地球的好处. (3k-2)(2+k)-(2k+1)(3-2k)=0算的麻烦, 已知点【2M-13,16 -3M】在第三象限,整数M的值是? 大气层中起到吸收紫外线,保护地球生命作用的是哪种成分? 空气滤清器的作用是什么? 微生物对环境的正面影响和负面影响 请问大气层对地球生物的好处或人类如何保护大气层? 改装冬菇头空气滤清器有什么好处 人类对环境造成的正和负面影响? 祖父把我叫过去,慢慢讲给我听,说谷子是有芒针的,狗尾草却没有,只是毛嘟嘟的,很像狗尾巴.改引述句例:拉骆驼的说,他们从门头沟来,他们和骆驼,是一步一步走来的.拉骆驼的说:''我们从门 已知二次函数y=x²+(2k+1)x+k²-1的最小值是0,求k值.(请详细这题) 生物都生活在有空气的环境中.这句话对吗? 狂犬疫苗注射方法 0 7 21天 第一天注射两针 为什么打四针患者信息:男 30岁 河南 周口4月4号注射两针 然后11号 25号 为什么只有四针 不是5针吗 已知关于x的二次函数y=kx2+(k-1)x+k-1最小值为0,求k的值 在平面直角坐标系中,已知点A(-3,N)和点B(1-M,M-3),若点A与点B关于Y轴对称,则M= N= 地球上空气的作用有什么样? 已知二次函数y=x²+(2k+1)x+k²-1的最小值是0,求k的值需要一些大致的过程 影响生物生活的环境因素分为两大类:一类是〔 〕,如阳光、空气等;另一类是〔 〕,是指影响生物生存的其他 地球上的生命有哪些作用 二次函数y=x方+(2k+1)x+k方-1的最小值是0,求实数K的值.我30号要交考卷啊 在平面直角坐标系中,点A(-3,m)与点B(n,1)关于x轴对称,则m+n= 某村共有六块小麦试验田,每块试验田今年的收成与去年相比情况如下(增产为正,减产为负,单位:kg)55,-40,10,-16,27,-5 一块小麦实验田今年产量4600千克,比去年增产600千克,今年比去年增产几成?快
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn