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

📄 book1.mdb

📁 不用说了!看看就明白了!
💻 MDB
📖 第 1 页 / 共 5 页
字号:
==========
第一章 Delphi程序设计基本步骤 
                       Delphi程序设计基本步骤 

1.1 设 计 窗 体
以下分别介绍一些重要的窗体特性的设置:
  (1)Action。指定与菜单项相关的行为对象。可以在设计阶段使用行为列表编辑器指定行为对象与菜单项的关系。
  (2)ActiveControl。ActiveControl是一个下拉框,该特性决定,当窗体被初次打开时,窗体中的哪个控制是焦点。在一个应用程序中,在给定的时间只能有一个控制具有输入焦点。例如,假设窗体上有两个按钮Button1,Button2,则下拉框有Button1,Button2两项,你可以选择Button1作为输入焦点,也可将Button2作为焦点。
  (3)Anchors。定义窗体与父窗体的位置关系。当父窗体的位置发生改变时,窗体的位置也随之改变。
  (4)AutoScroll。这个特性用在可重新改变尺寸的窗口中。当AutoScroll被设置为TRUE,并且用户重新改变窗体的尺寸而截去一个构件时,窗体自动显示滚动条。在一个MDI应用程序中,用户把一个子窗口移出主窗口时,也会自动显示滚动条。
  (5)Border Icons。BorderIcons特性决定窗体运行时显示哪些图标,包括biSystemMenu(控制菜单)、biMinimize(极小化)、biMaximize(极大化)、biHelp(帮助)。biHelp主要用于弹出窗口。除biHelp外,对于普通窗体,所有这些图标都应保留。只有在特殊情况下才应关掉控制菜单;没有时,用户会感到不习惯并希望它存在。BorderIcons特性是一个嵌套特性,为了在这个特性内设置各个图标,可单击Object Inspector中BorderIcons左边的+号。+号变成-号,各个图标就会显示其特性。
  (6)Border Styles。该特性是一个下拉列表框,决定窗体的边框风格。设计窗体时,一般选择一种边框风格,也可以在运行时设置BorderStyle特性。
  (7)Caption。该特性设置窗体的标题,其缺省是窗体的名称。设计窗体时,你可以根据需要来设置。
  (8)ClientHeight和ClientWidth。这两个特性以像素为单位确定一个窗体的客户区域。你可以根据需要设置窗体的实际屏幕尺寸长,以使窗体合理地显示屏幕上的信息。
  (9)Color。该特性设置窗体的背景颜色。Object Inspector提供一个有许多预先定义颜色的下拉式列表,你可以根据需要设置。
  (10)Cursor。 该特性选择出现程序运行时光标经过窗体时光标的形状。一般将这个特性设置为crDefault,在运行时改变为其它形状。例如,开始一项需要用户等待的操作时,可将光标变成一个计时沙漏。
  (11)DefaultMonitor。指定窗体的监视器。用于使用多监视器的程序。
  (12)DockSite。决定窗体是否作为拖放操作的目标。
  (13)Enabled。该特性使用户可以使窗体有效或无效。一个无效的窗体不响应诸如鼠标器按钮、计时器事件,或击键等事件。当希望用户不影响一个选定窗口时,运行期间可使用这个特性。
  (14)Font。该特性设置窗体的字体。由于窗体内没有文本(标题条不受Font特性的影响),所以该特性几乎不影响窗体本身,但是,由于许多构件都有ParentFont特性,当ParentFont特性设置为真时,一个构件的字体使用父窗口字体的特性。将窗体所有构件的ParentFont特性设置为真,这样改变窗体的Font特性,就可以有效地改变所有构件的字体特性。
  (15)FormStyle。该特性设置窗体的风格。窗体可能的风格为fsNormal,fsMDIChild,fsMDIForm,fsStayOnTop。缺省值为fsNormal。fsNorma设置窗体风格既不是MDI父窗口,也不是MDI子窗口;fsMDIChild设置窗口为MDI子窗口;fsMDIForm设置窗体为MDI父窗口;fsStayOnTop设置窗体为窗口运行时始终在其它窗口的上面,除非还有其它窗口设置为fsStayOnTop。注意,窗体风格最好在窗体设计阶段就设置好。
  (16)HelpContext。该特性设置窗体帮助上下文。 大多数Windows 程序都包含上下文相关帮助。用户的应用程序中也应包含上下文相关帮助。当创建一个帮助系统时应用程序的每个窗体在帮助系统中应是不同标题。把一个给定窗体的标题号放在窗体的HelpContext特性中,当窗体收到一个帮助事件时,就启动帮助系统,并显示该特定标题。如果应用程序不提供帮助,可设置HelpContext特性为0。
  (17)HorzScrollBar和VerScrollBar。这两个特性使用户手动控制窗体的滚动条。通常应该把AutoScroll特性设置为真,滚动条被自动地处理。要先手动显示滚动条时必须设置滚动条的嵌套Visible特性为真,并把嵌套Range特性设置成一个比ClientHeight或ClientWidth大的数。
  (18)Icon。该特性指定应用程序极小化时显示的图标。
  (19)KeyPreview。当KeyPreview特性设置为真时,某些键盘事件(OnKeyDown,OnKeyUp,及OnKeyPress等)首先被送至窗体,然后发送至具有焦点的构件。当KeyPreview设置为假时,键盘事件只传送给具有焦点的构件。 该特性省去了许多处理某些击键事件的冗余代码。例如,当用户只想为窗体提供帮助,而不想为窗体中的每个构件都提供帮助时,设置KeyPreview特性为真。当用户按F1时,而启动窗体的帮助系统。
  (20)Left和Top。窗体的Left和Top特性决定窗体打开时的位置。Left和Top特性的单位是像素。可以在Object Inspector中直接输入这些特性,也可以用鼠标移动窗体定位。在设计移动窗体时,Delphi自动更新Left和Top特性。
  (21)Menu。当设置一个简单的应用程序时,窗体可能只包括一个MainMenu构件。对于较复杂的应用程序,窗体可能会有不止一个菜单。使用窗体的Menu特性指定显示哪一个MainMenu构件。Delphi自动把窗体的Menu特性设置为第一个放在窗体的MainMenu构件。当出现多个菜单时,可使用Menu特性的下拉式列表选择适当的构件。
  (22)Name。与所有的Delphi构件一样,Form构件有一个Name特性。当第一次创建窗体时,Name特性设置成Form1。鉴于在代码中经常使用这个名字,最好在编写代码之前,将名字改为与所描述的窗体更贴切的名字。
  (23)OldCreateOrder。指定OnCreate和 OnDestroy事件发生的时间。当OldCreateOrder值为False(缺省)时,OnCreate事件发生在窗体上所有构件的构造函数完成之后,OnDestroy事件发生在任何析构函数调用之前。
  (24)PixelsPerInch和Scaled。通过设置窗体的PiwelsPerInch特性为一个不是缺省值的值,并将Scaled特性设置为真时,可以有效地扩大或缩小窗体的尺寸。这在以一种屏幕分辨率进行设计而在另一种屏幕分辨率中使用的应用程序是有用的。增大PixelsPerInch特性,窗体减小;减少PixelsPerInch特性,窗体增大。如果窗体中有Tlmage构件,应把这种构件的Stretch特性设置为真,这样构件就会随窗体的改变而变化。为了在运行时改变窗体的放大率,可使用ScaleBy的过程。
  (25)PopUpMenu。为创建窗体的加速菜单,在窗体中放入一个TPopUpMenu构件。将窗体的PopUpMenu特性设置为TPopUpMenu构件的名称。当用户右击窗体时,便显示该弹出式菜单。使用弹出式菜单使程序具有与用户更友好的界面。
  (26)Position。在设计期间用户可以指定窗体的准确位置和尺寸,同时Delphi提供的Position特性自动地在运行时放好窗体。
  (27)UseDockManager。决定停泊管理器(dock manager)是否用于拖放操作中。
  (28)Visible。 确定一个窗体是否可见。当创建一个多窗体应用程序时,有时出现一些窗体,该窗体是不想看到的,一直到某个行为发生为止,例如,如果程序中有一个About框,直到用户打开帮助菜单并选择About项时,不会向用户显示about框。为了在运行时控制一个窗体是否可见,可设置其Visible特性。缺省时,所有窗体的Visible特性设置为假。注意,Visible特性不影响程序的主窗体,它的可见性与Visible设置无关。
 (29)WindowMenu。大多数MDI应用有一个叫做Window的菜单。此菜单是诸如Arrange All和Cascade等选项,加上一个所有子窗口的目录。当用户从菜单中选择一个子窗口时该窗口获得输入焦点。Delphi中WindowMenu特性自动生成子窗口目录。简单地把窗体WindowMenu特性设置为菜单中已经存在的TMenuItem构件,子窗口目录就被加入到这个TMenuItem构件中。
  (30)WindowState。该特性控制窗口运行时是极小化,极大化,还是正常状态。在本例中,我们仅需要修改Name特性和Position特性。将Name设置为Example,Position设置为poScreenCenter。另外调整窗体大小,使其符合要求。这样,窗体名该为Example,使程序运行时显示在屏幕中央。
  在File菜单中选择Save Project As命令,Delphi将要求用户输入与窗体有关的单元文件名及项目文件名。这里我们输入单元文件名为ExpUnit.PAs及项目文件名ExpPro.DPR。注意,在输入文件名时,单元文件名、项目文件名及窗体名不能相同。
  Delphi提供了对齐对话框,使用对齐对话框有时更为方便。
 其操作步骤是:
(1)选择构件。如果选择一个构件,单击该构件即可;如果选择多个构件,请先选择一个构件,然后按住Shift键,继续选择其它构件,直到多个构件都选择完毕,才放开Shift键。
(2)选择Edit菜单中Align命令,或右击鼠标,选择弹出式菜单中的Align命令。对齐对话框显示如图4.5所示。
(3)根据需要在对话框中选择对齐选项。
(4)选择OK按钮,执行对齐操作,同时退出对话框。 
 要锁定构件位置,只要选择Edit菜单的Lock Control命令。 
 为了快速定位特性字段,可以使用TAB键加特性字段的首字母。如在修改Button1构件的特性时,要定位到Width特性字段,可以按TAB+W直接定位到Width字段,然后再按TAB将光标移到Value列。如果只按TAB键,则光标在特性名与特性值列之间移动。
 为了显示编译进度和结果,可以选择Tools菜单中Environment Options命令,在对话框中选择Preferences页,从中选择Show Compile Progress(显示编译进度)选项
1.2 单 元 结 构
 下面对本单元的主要部分进行简单的介绍:
  (1)unit:unit头部分标志下面的代码是一个单元,后面紧跟的是单元的文件,其扩展名是.Pas。
  (2)interface:interface标志单元接口部分的开始,单元接口部分定义变量、类型、过程等,是其它单元或程序其它部分可以访问的部分。单元接口部分结束于Implement部分的开始。
  (3)uses:uses语句告诉程序最终的执行代码中需要哪个函数和过程。Delphi会自动把一些必须的单元包括进来,例如本程序的Windows, Messages, SysUtils等。对于你自己书写的单元,如果程序中使用了该单元的函数或代码,也需要包括在uses部分中。
  (4)type:这部分用来定义用户定义的类型,然后就可以定义使用该类型的变量。
  (5)var:这部分用来定义变量和对象变量。在本窗体单元中,Interface部分使用var把窗体Example定义为一个TExample对象的实例。var也用来定义其它Implement部分的变量、过程、函数等。
  (6)Implement:这部分定义所有在interface部分说明过的函数、过程。实际上,Implement部分也可以定义变量、过程、函数等,但只能被本单元局部访问;也可以在这部分增加一个uses语句,来访问其它单元。
  (7){$R *.DFM}:该语句把单元连接到窗体的.dfm文件。不要删除这条语句,否则会发生编译错误。
  接下来的是两个过程语句,我们知道,SetButtonClick为单击SetButton按钮时的处理过程,FontButtonClick为单击FontButton按钮时的处理过程。
  最后,用一个end加一个英文句号(.)来标志程序的结束。
  在本单元中,省略了单元的initialization部分和finalization部分,它们是:
  initialization:这部分在单元运行前执行,用于单元代码的初始化、分配空间等。
  finalization:这部分在单元退出运行前执行,用于释放单元占用的空间、变量等。
  实际上,在一个完整的单元文件里,可以用这两部分来完成单元的初始化及空间变量的释放等工作。 

==========
==========
第二章 Object Pascal语言 
                                  Object Pascal语言 

  控制串由一个或多个控制字符组成,由“#”开头,后面紧跟一个范围在0~255的无符号的整数,用于代表相应的ASCII字符。
  下面再列出一些变量声明的例子:
var X, Y, Z: Double;
I, J, K: Integer;
Digit: 0..9
C: Color; 
Done, Error: Boolean;
Operator: (Plus, Minus, Times);
Hue1, Hue2: set of Color; 
Today: Date;
Results: MeasureList;
P1, P2: Person;
Matrix: array[1..10, 1..10] of Double;
  在声明变量时,还可以带一个可选的Absolute子句,用于指定变量的值在内存中存储的绝对位置,
 例如:
var CrtMode:Byte Absolute $0040:$0049
  上例中,声明了一个Byte类型的变量CrtMode,Absolute指示字后第一常量是段的值,第二个常量是偏移量。变量可以在定义时就指定一个初值。
  例如:
var I: Integer = 7;
  等价于:
var I: Integer; ...I := 7;
  指定的初值可以是任何变量类型的常数表达式。
1.纯常量
  纯常量是一种预先定义的标识符,其值在定义后永远不会改变。
  例如:const MaxValue = 237; 
2.类型常量
  与纯常量不同,类型常量用于保存数组、记录、过程以及指针等类型的值。类型常量不能出现在常量表达式中。
  在缺省的编译器状态(即{$J+})下,类型常量的值可以改变,这时类型常量更像初始化过的变量。但当编译器状态改为{$J-}时,则类型常量的值在运行期就无法改变,此时,类型常量实际上变成了只读变量。
  声明类型常量的语法规则为:
  const identifier: type = value
  这里,常量名要符合 Pascal语言关于标识符的规则。type是除了文件型和可变型之外的所有类型。Value是一个类型为type的表达式。例如:
  const Max: Integer = 100;
  一般来说,Value为一个常量表达式,但当type是数组、记录、过程和指针时,必须执行特殊的规则。
6.3 数 据 类 型
  类型是某类数据的名称,用于确定能存储信息,及能存储多少信息等。ObjectPascal是一种强类型的语言,其数据类型的定义、声明以及数据的赋值和传递都必须遵循严格的语法规则。因此,学习和掌握数据类型是设计好程序的关键。
  Pascal支持丰富的数据类型,本书将其分为6大类:
?简单类型,包括有序类型和实数型。其中有序类型是指整数类型、字符类型、布尔类型、枚举类型以及子界类型。
?字符串类型。?结构类型,包括集合类型、数组类型、记录类型、文件类型、类类型、类引用类型、接口类型等。
?指针类型。
?过程类型。
?变体类型。
6.3.1 简单类型
  Object Pascal的简单类型包括有序类型和实数型。其中有序类型是指整数类型、字符类型、布尔类型、枚举类型以及子界类型。
  下面分别进行讨论。
  1.有序类型
  有序类型是指整数类型、字符类型、布尔类型、枚举类型以及子界类型。有序类型是一个有序数的集合。在每一种有序类型中,任何一个该类型的元素都有一个唯一的先行数(第一个除外)和唯一的后继数(最后一个除外)。而且。每个值均有一个确定的序号。对整型数而言,该序号就是该整数的本身。而其它的有序类型(子界类型除外),第一个值的序号是0,第二个是1,依此类推。如果某个有序类型的值为N,则其先行数为N-1,后继数为N+1。
  Object Pascal预先定义了一些函数,专门用于处理有序类型的表达式和变量,表6-1列出了最常用的几个。
  表6-1 常用函数
函数  参数     返回值             备注
Ord  有序类型表达式 有序类型表达式值的序号  不能带Int64参数
Pred 有序类型表达式 有序类型表达式值的先行数 不能在拥有Write过程的
                         特性上使用
Succ 有序类型表达式 有序类型表达式值的后继数 不能在拥有Write过程的特性上使用
High 有序类型标识符或变量 该类型中序号最大的值 也可在short-string类型或数组
Low 有序类型标识符或变量 该类型中序号最小的值也可在short-string类型或数组
  例如,表达式 High(Byte)将返回255,这是因为Byte类型的序数最大为255。表达式Succ(2) 将返回3,这是因为 3紧跟在2的后面。标准过程Inc和Dec用于增加或减少一个有序类型变量的值,例如:Inc(I)等价于执行 I := Succ(I)如果I是一个整数类型,还等价于执行: I := I + 1
 下面分别对整数类型、字符类型、布尔类型、枚举类型以及子界类型进行介绍: (1)整数类型(Integer)在Object Pascal中,Integer类型是所有有符号整数的统称。
  实际上,整数类型可以分为基本整数类型(Fundamental type)和一般整数类型(generic type)。一般整数类型(generic type)包括Integer和Cardinal两种。在实际编程时,请尽量区分这两种,因为底层CPU和操作系统对结果进行了优化。
  表6-2列出了Integer和Cardinal的取值范围及存储格式。
  表6-2 一般整数类型的取值范围及存储格式
数据类型  取值范围        存储格式
Integer  ?147483648..2147483647  32位有符号
Cardina  l0..4294967295      32位无符号
  基本整数类型包括Shortint、Smallint、Longint、Int64、Byte、Word和Longword。表6-3列出了它们的取值范围及存储格式。
  表6-3 基本整数类型的取值范围及存储格式
数据类型  取值范围     存储格式
Shortint  -128..127    signed 8-bit
Smallint  -12768..32767  signed 16-bit
Longint   -2147483648..2147483647 signed 32-bit

⌨️ 快捷键说明

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