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

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

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

在哪里工作更好?Facebook大胜Google WDC超链接图:涵盖35亿网页、1280亿超链接 英特尔:机器已扛不住亚洲的空气污染 IE11中全新增强的F12开发人员工具 TUP第31期报名已满 向主讲人《浪潮之巅》吴军提问征集 对话Spark核心作者Ion Stoica:我的编程之路从2KB内存开始 埃洛普出局?微软董事会称Mulally、Satya有望是下任CEO 百度开源平台上线,聚合百度开源项目 盘点TOP500:值得关注的超算,及当下趋势 【BDTC讲师】Tachyon作者:大数据存储以及处理框架经验分享 进一步称霸中国:低端设备让Android在中国每季获3%增长 低端设备撑起Windows Phone市场份额 研发周报:你的数据库准备好过冬了吗 JVM垃圾收集器使用调查:CMS最受欢迎 技术创业不能一味追求“骨感”,必要时丰富自己的5个途径 帷千动媒副总经理兰旭:整合现在,梳理未来! 11月份浏览器份额:IE继续上涨,Chrome仍不温不火 Windows 8令人担忧:8和8.1两版本份额目前仅有9.3% 一周消息树:微软还需更激进的手段——开放Windows Phone 【开源推荐】Genome.js:当DNA遇到开源 Go 1.2发布 着重语言特性的改进 微软资深IE专家邹颂兵:好产品才是竞争的关键 Web应用程序完全测试指南 Python正在取代R,成为数据科学界新宠 代号Threshold:微软将推Windows统一平台Threshold 日本任天堂掌机应用:《卢浮宫》革了谁的命? [TUP第31期]《浪潮之巅》吴军:硅谷3.0助力中国企业走向国际 SequoiaDB创始人:比MongoDB领先一到两年 打造企业级NoSQL数据库 [对话CTO]甲骨文熊光樑:全球研发模式开发出接地气产品 GitHub中国游记之长城——跨越那堵看不见的墙 IE11开发人员工具:UI响应工具详解 delphi Microsoft Development Environment中如何拖拉web form控件? 关于cloudscape Win2000??? 如何在image或者PICTURE控件中保持图像的比例 小问题:使用image控件时,能不能用mask将图片的背景色给屏蔽掉? 如何在javascript中调用COM对象? WinCE emulator !!!!!! *************2000分求救!!!SOS!!!************** 线程里执行查询时碰到的错误。。。。说BDE引擎内存不足。。请各位多多指教 刚才我发了一个贴子,请问我怎样结贴?(不好意思,我真笨) JCreator LE 使用!?各位兄弟姐妹,用过JCreator LE的来给小弟指指路好吗? dbgrid 各位,请看下面一段有关线程同步的代码: 大家上来帮我看一下http://www.csdn.net/expert/topic/613/613969.xml?temp=.7868463 大家上来帮我看一下http://www.csdn.net/expert/topic/613/613969.xml?temp=.7868463 简单的一道题,各位高手指点一下把! 大家上来帮我看一下http://www.csdn.net/expert/topic/613/613969.xml?temp=.7868463 美丽的故事悲伤的结局 大家上来帮我看一下http://www.csdn.net/expert/topic/613/613969.xml?temp=.7868463 98安装故障,急!请帮看看! 大家上来帮我看一下http://www.csdn.net/expert/topic/613/613969.xml?temp=.7868463 oracle 入门的书籍,请大家推荐!本人是菜鸟现在想学习 oracle请大家多多指教!!!!! 谁有好的VB电子书籍 不会使用网上的控件,谁教我? **********四大网站被黑!!!********** 怎麼寫這兩條SQL語句;(1)顯示當前數據庫?(2)顯示當前所有用戶表? 急,謝謝 送分问题,绝对给分! 如何才能不改变字体大小? 数据窗口有bh(编号),name(名称)两列,编号是string型,用什么方法可快速查找出bh中的最大值?只准对数据窗口操作。 delphi(dll) 大话爱情大结局 ??如何编写邮件服务器? createfont怎样创建一个随意宽高的字体? 急,请问有函数可取字符串后面N位字符吗?在线等待 怎样显示报表页总数问题 在打印中如何实现实现小计(即每页显示金额的总和)100分 问一个简单的问题,关于初始化 请问谁有动态树状目录的原码啊,急需!! 什么问题,怎么解决? 西瓜:有人要求我贴你的没穿外套没穿鞋子的照片 就是你说生气的那张 贴不贴啊? 怎样将一个十进制数转换为二进制数,并将二进制数中的每一位单独取出来? GetProcAddress在VB中的使用? excel单元格格式问题 用按钮保存网页的问题 用c++ builder和access.数据表中的记录多了之后,应用什么方案将之备份以及恢复? 以下ASP在Win2000server上运行报错请问大家为什么??? 在指定位置输出文本 怎么办? 如何启动和终止一个NT服务 .Net——又一个起跑线 有一塔形几何体由若干个正方体构成,构成方式由下往上堆积,上层正方体下底面的四个顶点是下层正方...有一塔形几何体由若干个正方体构成,构成方式由下往上堆积,上层正方体下底面的四个 校篮球比赛中,每场比赛都要分出胜负,胜一场得3分,负一场得1分,若某班在28场比赛中得分不少于43分,那么该班最少要胜多少场? 用一些小正方体积木搭成一个立体图形,从左面看和上面看分别看到如下图,至少需要几块 有一塔形几何体由n个正方形构成,上层正方体底面的四个顶点恰好是下层正方体上底面各边的中点.已知顶层的正方体的棱长为a,设塔形几何体的底面积为S.一个n的值-S为多少,S加4a²是多少? 新闻稿,关于篮球的新闻稿我公司与电信集团友谊篮球赛的新闻稿 南街小学买了6本数学书和9本语文书共花171元,已知5本数学书的定价和2本语文书的 第七单元 在63页(我是一名数学老师,初教6年,请前辈多多指教)还要告诉我这道题为什么要这么做 篮球赛新闻稿应该怎么写? 南街小学增买了6本数学书和9本语文书共付款117元,已知5本数学书的定价和与2本语文书的定价相等.数学书和语文书的每本的定价各是多少? 三.一班有62人,订语文报的有48人;订数学报的有52人,每人至少订一份报纸,订两 200字左右的篮球新闻稿怎么写?2个系女蓝打比赛.比分18:32,开赛时间17点.地点校篮球场! 初二上册数学课堂感悟38页尖子生探究1题,已知,DE是三角形ABC中BC边上的垂直平分线,与角BAC 的平分线交于E,EM 垂直AC。求证AB =AC +2CM 六二班有52人,订语文报的有32人,订数学报的有25人.其中有3人两种报纸都没有订.订了两种报纸的有多少人线段图 急…求帮忙写一篇系篮球赛新闻稿.大致内容为,09级新生篮球赛,四个班级,二班45V42三班,前三节三班14分领先,第四节二班反攻,三班在第四节没得一分.最后二班一个同学造犯规,获得两罚一掷,并 图书馆小学买了6本数学书和9本语文书共付款171元,已知5本数学书的价格与2本语文书的价格相等. 篮球比赛计分规则是:胜一场得2分,负一场得1分,某支篮球队共打22场比赛,得分为36分,则该队负了几场?()A、6 B、7 C、8 D、9急,紧急!呜呜呜呜呜帮帮我呜呜呜!现在就要! 篮球比赛的新闻稿怎么写,手头只有采访内容? 计算 根号8x5的平方 根号36*25 根号24a的平方b的3次方 根号75a的3次方b的5次方 根号18x的平方y的5次方 根号a的4次方-a的平方*b的平方 你们也可以去看九年级上册数学课堂感悟 第3面的2大题的3,4,5. 篮球比赛给个参加队伍计算成绩的方法胜一场计2分负一场计1分某队赛了4场得分情况有几种可能,得分分别是? 二十中学初一年级的人数占学生总数的1/4,初二年级的人数是初三年级的3/4,三个年级共多少人? 有五本不同的书其中语文书2本,有5本不同的书,其中语文书2本,数学书2本,物理书1本.若将其随机地摆放到书架的同一层上,则同一科目的书都不相邻的概率是( 2/5 ) 两本数学相邻且两本 由若干个相同的小立方体搭成的几何体的几何体的主视图和俯视图如图所示.这样的几何体有多少种可能的搭法?请分别画出它们的左视图.今晚8:30之前要!主视图 俯视图口 口口口 口口口口口 初一,初二年级的英语语法,急~~~越详细越好 我只要194页的1到4题就行了 豪哥8岁半了,吃饭挑食,不爱吃菜,一顿饭自己吃要1个半小时,大人在旁边不停的催也要40分左右,他是用门牙嚼,告诉他用两边的大牙他还是老样子,一口饭要嚼3~好象喉咙被什么卡住似的吞不下去 146页1到6题,5题尽量有步骤 初一和初二年级共有780人,初一年级的人数比初二年级的2倍还少30人,则初一和初二年级各有多少人.列方程 有一塔形几何体由若干个正方体构成,构成方式由下往上堆积,上层正方体下底面的四个顶点是下层正方体上底面各边的中点,已知最底层正方体的棱长为1,且这些正方体积木露在外面的面积之 如图有一些大小相同的正方体组成的简单几何体的主视图和俯视图1请你画出这个几何体的一种左视图2若组成这个几何体的小正方体的块数为N,请你写出N的所有可能值最好解释理由 如图,是由一些大小相同、棱长为1的小正方体组成的几何体从正面、上面看的图形(1)试画出几何体体积最从左面看到的图形(2)试求几何体的最大体积 一个几何体是由若干个相同的正方体组成的一个几何体是由若干个相同的正方体组成的,其从正面看和从左面看如图所示,则组成这个图形的几何体有()个.(选C的给个理由)A.12 B.13 C.14 D.18 九年级有效课堂数学答案浙教版 速度求 华罗庚金杯初一与初二一组吗 公园种树,三月份上旬完成了计划的八分之三,三月份中旬完成了余下的三分之二,三月份下旬种树55棵,结果超过了计划的25%,计划种树多少棵?我的解法是:55÷[(1-八分之三)×(1-三分之二)+25 下图是用大小一样的正方体搭成的某个几何体的俯视图和主视图(1)这样的几何体是否唯一?(2)若不唯一,那么搭这样的几何体最少要几块小正方体?最多要几块小正方体? 两个车间共有150人,如果从一车间调出50人,这时一车间人数是二车间的3分之2,二车间原有多少人? 求面积!求圆的面积! 如图,是一个由若干个相同的小正方体组成的几何体的主视图和俯视图,则能组成这个几何体的小正方体的个数最少是几个 两个车间共有150人,如果从一车间调走50人,这是一车间人数是二车间的三分之二,二车二车间原有多少人? 一共40人,其中4分之3订《语文报》,5分之4订《数学报》,两种都订的有?人 九班有48位同学订少儿读物,有3/4的同学订《数学报》,2/3的同学订《淮锋报》,两种读物都订有多少人?最多多少人,最少?没订的有多少人? 7年纪上册 数学分课练习单元测试 我的是北师大版, 五(4)班48人,其中2/3的同学订了 【语文报},3/4的同学订了{数学报},两种都订的人最少多少人?最多少人 篮球队联赛中,每场比赛都是要分出胜负,每队胜一场得2分,负一场得一分.某对为了争取较好的名次,想在全部22场比赛中得到40分,那么这个队胜负场数应分别是多少?要用一元一次方程解答 最常见的乔木有哪些? 2班有4/5人订了数学报,4/3人订了语文报,如果每人至少订其中一种,那么两种都订的有几人 六(19)班有48位同学订少儿读物,有四分之三的同学订数学报,三分之二的同学订淮锋报,两种报纸都订的最多( )人.至少( )人,两种报纸都不订的最多( )人 还是一部电影? 我要策划篮球赛 有7支队伍参加,这个比赛环节要怎么计划呢? 篮球联赛中,每场比赛都要分出胜负,每队胜一场得2分,负一场得1分.某队为了争取较好名次,想在全部16场比赛中得到28分,那么这个队胜、负场数分别是多少?(最好用二元一次方程哦) 我现在是初一下学期的一个男生.有个二年级女生追我,我怎么办?她叫人给我送了一封信说:我也不知道为什么想认识你,但是你给我的第一个感觉就是怕冷,因为春天啊,我们都只穿一件校服,而 篮球赛策划帮帮忙、三个队怎么决胜负?要求对三队都公平的 某班有48位同学踊跃订少儿读物有百分之75同学订小学生数学报三分之二的同学订淮锋报两种报纸至多多少人至少多少人都不定的最多多少人 用一些小正方体积木搭成一个立体图形,从正面和上面看到的情况如下图,至少需要多少块小正方体? 篮球赛积分方法,胜一场积2分,负一场积1分,某队参加12场,总积分是胜场的4倍,该对胜几场 篮球队联赛中,每场比赛都是要分出胜负,每队胜一场得2分,负一场得一分.某对为了争取较好的名次,想在全部22场比赛中得到40分,那么这个队胜负场数应分别是多少?要用二元一次方程组解答 如图K—6—16是由几个小正方体积木搭成的几何体从上面看到的平面图形,图形中的数字表示再该位置中正方体积木的个数,请你画出从这个几何体正面和左面看到的平面图形23 1 在一场篮球比赛中,某队得23分(不含罚球得分),已知他投进的3分球比2分球少4个,则他一共投进几个3分球2分球? 篮球联赛中,每场比赛都要分出胜负,每队胜1场得2分,负1场得1分,某队在10场比赛中得到16分,那么这个队胜负场书分别是多少?用一元一次方程和二元一次方程解,并讲解讲解这道题是怎样解出来 32个边长1厘米的正方体积木能堆成长方体如果将这些正方体积木排成一排,排成的立体图形的表面积是多少?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘