⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 187.htm

📁 水木清华BBS精华
💻 HTM
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>CTerm非常精华下载</title>
</head>
<body bgcolor="#FFFFFF">
<table border="0" width="100%" cellspacing="0" cellpadding="0" height="577">
<tr><td width="32%" rowspan="3" height="123"><img src="DDl_back.jpg" width="300" height="129" alt="DDl_back.jpg"></td><td width="30%" background="DDl_back2.jpg" height="35"><p align="center"><a href="http://bbs.tsinghua.edu.cn"><font face="黑体"><big><big>水木清华★</big></big></font></a></td></tr>
<tr>
<td width="68%" background="DDl_back2.jpg" height="44"><big><big><font face="黑体"><p align="center">         Delphi编程                            (BM: strayli FlyingBoy)          </font></big></big></td></tr>
<tr>
<td width="68%" height="44" bgcolor="#000000"><font face="黑体"><big><big><p   align="center"></big></big><a href="http://cterm.163.net"><img src="banner.gif" width="400" height="60" alt="banner.gif"border="0"></a></font></td>
</tr>
<tr><td width="100%" colspan="2" height="454"> <p align="center">[<a href="index.htm">回到开始</a>][<a href="8.htm">上一层</a>][<a href="188.htm">下一篇</a>]
<hr><p align="left"><small>发信人: Zeemon (塞下秋), 信区: Visual <br>

标  题: Delphi程序制作要点 <br>

发信站: BBS 水木清华站 (Tue Nov 11 19:27:40 1997) <br>

  <br>

下文由fuse在浙大BBS西子浣纱城站发表。 <br>

  <br>

发信人: fuse (保险丝),信区: Delphi <br>

标 题: Delphi程序制作要点(1) <br>

发信站: 西子浣纱城 (Sat Aug 16 13:48:56 1997) <br>

  <br>

Delphi 程序制作要点 <br>

  <br>

  <br>

***************************************************************** <br>

*                一、为什么选择Delphi                           * <br>

***************************************************************** <br>

  <br>

在开始任何一个项目之前,总会碰到选择开发工具的问题。各式各样的工具 <br>

  <br>

有其各自的特点,各有利弊。选择Delphi,各人有各人的理由,有的人是听 <br>

  <br>

说好,跑来看看;有的人是被迫的。什么时候人们会被迫使用Delphi呢? <br>

  <br>

  <br>

对于我来说,1)我不想在一个小Project中使用ODBC,我发现BDE效率很不错, <br>

  <br>

于是很高兴。2)我很讨厌OCX, VBX,一大堆别人的东西拷入用户的机器,让 <br>

  <br>

我很没有成就感。3)我很少有机会作CView/CDocument形式的程序,而MFC对 <br>

  <br>

其它的支持差得惊人。4)我很喜欢Pascal,我敲begin....end不见得比敲{ <br>

  <br>

...}慢多少。5)C和C++网上资源太少,只能偶尔找到一些snippet  6).... <br>

  <br>

  <br>

****************************************************************** <br>

*                        二、一些基本概念                        * <br>

****************************************************************** <br>

  <br>

A. 面向对象的概念 <br>

  <br>

简单地说,Pascal原有的record类型,加上procedure和function就成了class <br>

  <br>

因此,一个class类的东东本质上是一个变量,Implementation里定义了这个 <br>

  <br>

变量的Details, Interface是变量的定义,告诉编译器在别人引用我时到哪里 <br>



  <br>

找具体的代码。一个Form引用另一个Form中的变量,实际上是两个Form型变量 <br>

  <br>

的元素的引用。 <br>

  <br>

  <br>

B. Delphi的Class三大元素 <br>

  <br>

这三大元素是Property, Method, Event <br>

  <br>

这是你要使用一个控件最重要的信息。Property可读可写,Method引发一个 <br>

  <br>

procedure或function, Event允许用户定义回调函数。Property在Design <br>

  <br>

Time时在Object Inspector中设,Method在程序中调用了解了这个概念,有 <br>

  <br>

助于你在看Help时不会晕头转向。 <br>

  <br>

  <br>

C. 关于Property的说明 <br>

  <br>

切记,Property的修改并不一定只是读写了一个变量,它有可能引发一大堆代 <br>

切记,Property的修改并不一定只是读写了一个变量,它有可能引发一大堆代 <br>

  <br>

码。在Property的定义中,一般是这样写的 <br>

  <br>

    property Lookup: Boolean read GetLookup write SetLookup; <br>

  <br>

在这里,GetLookup和SetLookup是function,因此,有可能属性一改,事实上 <br>

  <br>

作了很多工作。 <br>

  <br>

  <br>

D. 代码的位置有时很重要 <br>

  <br>

在什么时候调用特定的代码是很重要的,Window整个都是由消息驱动的,永远 <br>

  <br>

不会被触发的代码根本不被编译到程序中去。你在Delphi 3中会看到它根本不 <br>

  <br>

被打上蓝点。而且代码是可以重入的!!!!  以后会详细讨论这个问题。 <br>

  <br>

****************************************************************** <br>

*                        三、从一个通讯录程序开始                * <br>

****************************************************************** <br>

  <br>

  <br>

不使用Delphi的数据库功能,对于初学者来说,实在有点可惜,Borland花了 <br>

  <br>

大量精力使数据库编程变得简单。数据库编程最好的教程是Delphi 1.x中带 <br>

  <br>

的Interactive Tutor(Delphi 3中好象没有), 它讲述得非常生动,每一位初 <br>

  <br>

学者都应该看一看。 <br>

  <br>

看过这个教程,可以自己试着作一个通讯录程序。这样一个程序大家都有感 <br>

  <br>

性的认识,容易上手。 <br>

  <br>

第一步,用Database Desktop建一个数据库,开一些Name, Tel, Addr, Memo <br>

  <br>

等字段,记住,千万不要用中文作字段名哦。 <br>

  <br>

第二步,用Database/Form Wizard作一个坯子看看再说。你会生成一个Form, <br>

  <br>

上面有一个DBNavigator, 一堆Data-aware的控件和相应的Label(这个例子中, <br>

  <br>

不建议用DBGrid) <br>

  <br>

  <br>

第三步,右键单击Table1控件,打开Field Editor, 选择Name字段,在Object <br>

  <br>

Inspector中将它Display Name属性改为'姓名', Transliterate属性改为False. <br>

  <br>

这是为了使StringField显示中文。依此类推,把你要改的字段都改过来。Label <br>

  <br>

的Caption也都改成中文。 <br>

  <br>

第四步,把DBNavigator的VisibleButton中的除<-, ->, <<, >>, +, -, 之外的 <br>

  <br>

Button都去掉。 <br>

  <br>

第五步,再运行 <br>

  <br>

这样你就作成了你的第一个中文通讯录。这个通讯录没有什么查找功能,显然很 <br>

  <br>

没市场,下面你给它加一个简单的查询功能。 <br>

  <br>

第一步,加一个Button, Caption设为'查找姓名' <br>

  <br>

第二步,New一个Form, 如Form2, 上面加一个Edit, 两个BitBtn, 一个Kind设为 <br>

  <br>

  <br>

bkOK, 另一个Kind设为bkCancel, 按你的需要修改显示的文字。 <br>

  <br>

第三步,双击第一步中的Button, 跳出代码段。写下以下代码: <br>

  <br>

  if Form2.ShowModal = mrOK then begin <br>

    Table1.DisableControls; <br>

    Table1.First; <br>

    while not Table1.EOF and <br>

      (Pos(Form2.Edit1.Text, Table1Name.Value)>0) do begin <br>

      Table1.Next; <br>

    end; <br>

    Table1.EnableControls; <br>

  end; <br>

  <br>

第四步,在Unit1中的Uses中加入unit2; 运行 <br>

  <br>

  <br>

****************************************************************** <br>

*                    四、写代码的一些要素                        * <br>

****************************************************************** <br>

  <br>

A. 尽可能不要在(对新手来说,是绝不要) <br>



  <br>

        TMyForm=class(TForm) <br>

          ..... <br>

          ..... <br>

          ..... <br>

  <br>

        end; <br>

  <br>

   之外定义变量,尽量在Private段定义自己的变量和Procedure等。 <br>

  <br>

B. 任何情况下,不论多么艰难的调试情况,在begin回车之后,先打两个空 <br>

  <br>

   格再写程序代码。end一定要和相应的begin呼应在同一列上。 <br>

  <br>

C. Delphi是大小写不敏感的,但是多处引用时尽量保持相同的拼写。 <br>

  <br>

D. 不要自己去删Delphi自动生成的代码,解铃还需系铃人,如果不小心在哪 <br>

  <br>

   里Double Click了一下,Delphi生成的程序会在Save Project和Build时 <br>

  <br>

   自动删掉。(只要begin...end中间没写你自己的代码) <br>

  <br>

  <br>

E. FormCreat之前,它所包含的控件都还没有建立,是不能引用的。在Form1OnCreat <br>

  <br>

   时,你不能用 <br>

  <br>

       Form1.ListBox1....... <br>

  <br>

   但是你可以写: <br>

  <br>

       ListBox1......... <br>

  <br>

   这是Delphi的约定,所以不要问我为什么。 <br>

  <br>

F. Form1如果是MainForm, 在OnCreat时是不能去引用Form2的变量的,因为这 <br>

  <br>

   时Form2还不存在。 <br>

  <br>

G. Form2.ShowModal后,程序会在Form2返回后才执行后面的代码,而用Show <br>

  <br>

   可不是这样。 <br>

  <br>

H. 任何一段消息回调函数的代码都不要执行过长时间,如果迫不得已,在大循 <br>

  <br>

  <br>

   环的间隙,一定要调用 <br>

  <br>

    Application.ProcessMessages <br>

  <br>

   要不,程序会象死机一样。 <br>

  <br>

  <br>

****************************************************************** <br>

*                    五、Windows编程的重入问题                   * <br>

****************************************************************** <br>

  <br>

TTimer是用于定时反复执行一些代码,可是千万记住如果一段代码执行时间 <br>

  <br>

过长时,下一次Timer触发会重入这段代码,就是说如果Timer1Timer中没有 <br>

  <br>

    Timer1.Enabled := False; <br>

  <br>

的话,可能会有两个进程在执行这段代码,如果共同访问一个变量,一个有 <br>

  <br>

可能在改,一个有可能在读,那么就会出现意想不到的问题。 <br>

  <br>

类似的重入问题其它时候也会碰到,比如你在Show(而不是ShowModal)一个 <br>



  <br>

Form时,两个Visible的Form在共同访问同一变量,就会出现一些奇怪的现象。 <br>

  <br>

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

  <br>

  <br>

-- <br>

;31m※来源:·西子浣纱城 bbs.zju.edu.cn·[FROM: 210.32.151.241]m <br>

  <br>

-- <br>

※ 来源:·BBS 水木清华站 bbs.net.tsinghua.edu.cn·[FROM: 162.105.118.41] <br>

</small><hr>
<p align="center">[<a href="index.htm">回到开始</a>][<a href="8.htm">上一层</a>][<a href="188.htm">下一篇</a>]
<p align="center"><a href="http://cterm.163.net">欢迎访问Cterm主页</a></p>
</body>
</html>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -