Delphi程序设计课件_第1页
Delphi程序设计课件_第2页
Delphi程序设计课件_第3页
Delphi程序设计课件_第4页
Delphi程序设计课件_第5页
已阅读5页,还剩139页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

认识delphi

一.什么是delphiDelphi是Inprise公司推出的基于对象Pascal语言的新一代面向对象的可视化快速应用程序开发环境。利用Delphi编程,可以快速、高效地开发出基于Windows环境的各类程序,尤其在数据库和网络方面,Delphi更是一个十分理想的软件开发平台。第一讲认识delphi

理解Delphi1.对象:是相对独立的客观存在的或者相对独立的逻辑存在的计算机表示2.面向对象是和面向过程相比较而言的3.面向对象的三个特征:继承、封装、多态*对象:是相对独立的客观存在的或者相对独立的逻辑存在的计算机表示*面向对象是和面向过程相比较而言的第一讲认识delphi

可视化的体现1.所见即所得的界面设计

2.delphi组件是可视化的对象快速的原因1.可视化;

2.丰富的函数,类库,组件,数据库组件;

3.开发工具和向导;

4.编译速度最快,语法的高度最一致。第一讲认识delphi

二.Delphi不是什么1.不是专门的数据库开发工具*研发的的背景和目的:

1.windows初步流行,主要开发工具VC和VB各有所长;

2.数据库开发的需求急剧增加;3.Delphi=VC功能+VB界面+快速数据库开发.*delphi中没有专门为数据库操作保留的关键字*有很强数据库能力的原因是使用Delphi后续开发的数据库组件第一讲认识delphi

2.不是专门的界面开发工具*IDE本身是delphi程序且提供源代码;*delphi可脱离IDE环境而独立运行;例子:programp;{$AppTypeconsole}

beginwriteln('hello');end编译方法:DCC32*.pas3.Delphi可用于各种通用目的通信,图形处理,数值计算,自动控制等;总结:delphi的语言基础是objectpascal,在其上构建的函数库,类库,控件库,甚至是IDE本身都不是语言的固有组成部分,而是用delphi语言写成的第一批工具,这扩展了delphi的能力,也验证了delphi的强大功能

delphi组件

DELPHI中最重要的部分是可视化组件库(VCL),其中一部分是组件,显示在组件面板上,另一部分是一些通用的类。介绍组件的概念、组件和窗体的关系、以及一些常用组件的用法一.窗体在Windows操作系统中,人机交互的界面主要是通过一些窗口和对话框实现的。在Delphi中,这些窗口和对话框就是程序设计阶段的窗体,Delphi的可视化设计工作就是在窗体中进行的。通常,窗体中会有一些控件,通过这些控件可以实现多种多样的功能。在Delphi中,把这些运行期间出现在窗口和对话框中的控件称为可视组件。在窗体中,不仅可以放置控件,还可以放置一些运行期间不可视的组件,这些不可视组件集中地实现了一些特殊的功能。窗体和组件的关系非常密切。从视觉的角度来看,窗体就像一个容器,其中包容了可视组件和不可视组件。从程序代码的角度来看,一个窗体对应一个源程序文件,其中定义了窗体中所有组件的对象。相同点:从面向对象编程的角度来看,所有组件都是TComponent类派生类的一个对象。窗体类(TForm)也是从TComponent类派生的,所以可以将窗体看成一个特殊的组件。窗体属性●biSystemMenu可以通过点击标题栏左边的图标或在标题栏上单击鼠标右键来显示控制菜单。控制菜单有时也称为系统菜单。●biMinimize在标题栏右边显示最小化按钮。●biMaximize在标题栏右边显示最大化按钮。●biHelp在标题栏右边显示帮助按钮。只有窗体的BorderStyle属性设置为bsDialog或者窗体属性BorderIcons中不包括biMinimize和biMaximize时,biHelp设置才有效。(1)属性BorderIcons用来指定窗体标题栏上的图标,可以设置为下列数值:●bsDialog窗体为标准的对话框,边框大小不可以改变。●bsSingle窗体具有单线边框,大小不可以改变。●bsNone窗体没有边框,也没有标题栏,边界的大小不可以改变。●bsSizeable边框大小可变的标准窗体。●bsToolWindow风格与bsSingle相同,只是标题栏比较小。另外,对于这种风格的窗体,属性BorderIcons中设置的biMinimize和biMaximize并不起作用。●bsSizeToolWin风格与bsSizeable相同,只是标题栏比较小。对于这种风格的窗体,属性BorderIcons中设置的biMinimize和biMaximize也不起作用。(2)属性BorderStyle用来设置窗体的外观和边框,可以指定为下面的数值:用来指定窗体标题栏中的说明文字。通常,对于Windows系统中的多文档界面(MDI)应用程序,当主框架窗口中的子窗口以最大化显示的时候,应用程序的标题栏中显示的内容为“<应用程序名>-<打开的文档名>”;当子窗口以非最大化窗口显示的时候,主框架窗口中只显示应用程序的名称,子窗口有自己的标题栏,其中显示该窗口打开的文件名。所以,当窗体的显示方式发生了改变后,应该立即改变标题栏中的内容。(3)

Caption属性属性Font用来设置窗体中文字的字体、颜色和字号等。如果将窗体中组件的属性ParentFont设置为True,那么该组件的字体设置就与其父级窗体的字体设置完全一样了。所以在程序设计的时候,为了保持整个系统风格的统一,应该使工程中的窗体风格尽量一致,可以先设置窗体的Font属性,然后将窗体中所有组件的ParentFont属性设置为True就可以了。一般不要单个地对窗体中的组件进行Font属性的设置。(4)

Font属性通常,应该在系统开发的设计阶段就将整个工程中所有窗体的名称确定,然后在编程阶段根据设计文档修改窗体的Name属性。一般情况下,不要在程序运行期间通过代码修改Name属性。(7)Name属性属性Name用来标志工程中的窗体●poDesigned窗体显示的位置和大小与设计期间的一致。●poDefault窗体每次显示时,与上次比较,往右下角移动了一些位置;窗体的高度和宽度由Windows决定。●poDefaultPosOnly窗体以设计期间的大小显示,窗体显示的位置较上次向右下角移动了一些。如果窗体以设计时的大小不可以在屏幕上完全显示,就移动到屏幕的左上角显示。●poDefaultSizeOnly窗体以设计期间的位置显示,窗体的大小由Windows决定。●poScreenCenter窗体以设计期间的大小显示,窗体显示的位置总在屏幕的中间。考虑多个监示器时位置的调整。●poDesktopCenter窗体以设计期间的大小显示;窗体显示的位置总在屏幕的中间。不考虑多个监示器时的调整。(8)

Position属性属性Position用来描述窗体的大小和显示的位置。可以是下列数值:●wsNormal窗体以普通状态显示(既不是最大化状态,也不是最小化状态)。●wsMinimized窗体以最小化状态显示●wsMaximized窗体以最大化状态显示(9)

WindowsState属性属性WindowsState用来描述窗体显示的状态,可以取下面的三个数值之一:

二、组件在Delphi编程的过程中,要经常使用到组件。通过可视组件,可以在窗体中方便地构建与用户交互的界面。另外一些不可视的组件可以为程序增加许多强大的功能。在Delphi集成开发环境的组件栏中,按照功能分类罗列了大量的组件,熟悉它们可以提高开发程序的进度。此外,还可以根据需要,调整组件栏中组件的位置,或者在组件栏中添加、删除组件,还可以为了满足一些特殊需求而创建新的组件,并把它们添加到组件栏中。●Standard:标准Windows控件、框架、菜单等●Additional:一些专用的Windows控件●Win32:32位Windows系统中的公用控件●System:进行系统操作的组件(包括定时器、多媒体和DDE等)●DataAccess:操作数据库的组件,如访问数据库、表格、查询和报表等●DataControls:进行数据库控制的组件

ADO通过ActiveXDataObjects访问数据库的组件●InterBase:提供与InterBase直接联接的组件●MIDAS:开发多层数据库应用程序的组件1.组件介绍●InternetExpress:开发InternetExpress应用程序(Web服务器应用程序和客户端多层数据库应用程序)的组件●Internet:开发Web服务的应用程序●FastNet:提供Internet操作的一些组件

DecisionCube为应用程序提供多维数据分析的组件●QReport:快速报表组件●DialogsWindows:通用对话框组件●Win3.1:提供与Windows3.1兼容的一些组件●Samples:一些定制组件的例子●Servers:通用COM服务器组件向窗体中添加组件

•删除窗体中的组件。

•调整组件的大小和位置。

•设置可视组件的TabOrder。

•组件的锁定和解锁。

•设置窗体中组件的属性。

•创建组件的事件处理过程。2.在窗体中使用组件在应用程序的界面上,往往需要用户输入一些文字,或者以一定的格式将文本显示给用户,文本组件包括以下的一些组件:3.文本组件(1)Edit组件:可以显示、编辑单独的一行文本(2)Memo组件:可以显示、编辑多行文本(3)MaskEdit组件:可以显示、编辑具有指定格式的文本,如6位数字的邮政编码、固定格式的电话号码等(4)RichEdit组件:可以显示、编辑具有丰富文本格式(RichTextFormat)的文件,如.rtf文件文本组件属性介绍(1)CharCase属性可以强迫组件中的文本全部为大写字母、全部为小写字母或不强迫改变大小写。

Edit组件具有CharCase属性。然而TMemo类与TRichEdit类就没有CharCase属性。(2)Text(或Lines)属性可以在设计阶段就赋予组件显示的内容。对于Edit组件和MaskEdit组件,在对象编辑器中列举了Text属性,对于Memo组件和RichEdit组件却没有列举,而改成了Lines属性。实际上Memo组件和RichEdit组件同样具有Text属性,可以通过代码改变Text属性的值。(3)ReadOnly属性指定用户是否可以修改组件中的内容。默认值为False,即用户可以修改组件中的内容(4)MaxLength属性限制每一行最多可包含的字符数,默认值为零,表示不由应用程序来限制每行的字符数,而是由操作系统来确定的。(5)HideSelection属性设置当组件失去焦点时是否高亮度显示选中的文本。(3)ReadOnly属性指定用户是否可以修改组件中的内容。默认值为False,即用户可以修改组件中的内容(4)MaxLength属性限制每一行最多可包含的字符数,默认值为零,表示不由应用程序来限制每行的字符数,而是由操作系统来确定的。(5)HideSelection属性设置当组件失去焦点时是否高亮度显示选中的文本。(6).注意事项●AutoSelect属性可以设置当Edit组件获得输入焦点时,是否自动选中所有的文本。●PasswordChar属性可以将用户输入的所有字符以同一个字符显示。●Edit组件最常用的事件(也是默认事件)为OnChange,也就是当Edit组件中的文本发生改变的时候,该事件的处理过程执行。●在一些对话框中可以见到这种情况:在一个编辑框中输入字符的时候,另一个编辑框中的内容自动发生改变。只要在第一个编辑框的OnChange事件的处理过程中改变第二个编辑框的Text属性就可以实现上述过程。(1)使用Edit注意事项(2)使用Memo注意事项对一些比较长的文本内容可以利用Memo组件来显示、编辑。可以通过Text属性来存取文本内容。可以通过Modified属性来确定文本内容是否发生了改变。

Memo组件没有从TCustomEdit类继承AutoSelect属性,所以不可以使用该属性。(3)使用MaskEdit注意事项可以通过EditMask属性来设置输入的格式。单击EditMask属性右面的省略号按钮,将弹出InputMaskEditor对话框,在其中可以方便地设置需要的输入要求和格式。通常可以先在右面的SamplesMasks中选择一项,然后在InputMask中进行修改。(4)使用RichEdit注意事项如果PlainText属性设置为True,则在RichEdit组件中显示RTF文件的时候,将格式标记以普通文本的方式显示出来。如果PlainText属性设置为False,则根据RTF文件中的格式设置来显示。通常将PlainText属性设置为False。通过方法Lines.LoadFromFile和Lines.SaveToFile可以方便地存取RTF文件。4.特殊输入控件为滚动条组件。如果一个窗口中的内容一次显示不完,可以通过滚动条浏览不同的内容。(1)ScrollBar组件:Kind取值可以是:

sbHorizontal滚动条是水平方向的。

sbVertical滚动条是垂直方向的。

Max、Min确定滚动条表示数值的范围,类型为Integer。

LargeChange、SmallChange可以设置滚动条数值改变的大小。

LargeChange表示滑动按钮在滚动条上的位置发生比较大的变化时的数值,

SmallChange则表示滑动按钮在滚动条上的位置发生比较小的变化时的数值。

可以从一个连续的范围内选择一个数值(2)ScrollBar组件:Frequency属性表示每隔几个数值显示一个刻度。LineSize属性与PageSize属性对应,表示比较小的变化时位置的改变。如通过按下↑、↓、←或→等键后位置的改变。PageSize属性表示比较大的变化时位置的改变。如通过按下PageUp(PgUp)或PageDown(PgDn)等键后位置的改变。SliderVisible属性用来设置是否显示滑动按钮。ThumbLength属性表示滑动按钮的宽度(或高度)。TickMask属性用来指定标尺显示的位置。可以为下面的三个数值:

•tmBottomRight标尺的位置的右面(或下面)。

•tmTopLeft标尺的位置的左面(或上面)。

•tmBoth在TrackBar组件两边都显示标尺。在UpDown组件中通过鼠标点击上下箭头可以改变相关联的组件(如Edit组件)中的数值(3)UpDown组件:Assosiate属性指定与UpDown组件关联的组件,可以通过下拉的组合框进行选择。

Increment属性指定通过UpDown组件而每次增加或减少的步长。

Orientation属性确定组件的方向,可以取下面的两个值之一:

•udHorizontal水平方向,箭头左右指向。

•udVertical垂直方向,箭头上下指向。

Thousand属性设置当数值超过999时,是否在千位后显示一个逗号。

Wrap属性可以设置相关联的组件中的数值是否循环变化。如在最大值的时候,再按上箭头,则相关联的组件中数值变为最小值。HotKey组件可以在设计阶段指定热键,也可以在运行期间改变(4)HotKey组件:5.按纽组件Button组件为普通的按钮组件BitBtn组件为图形按钮组件SpeedButton组件为加速按钮组件,可以组成工具栏CheckBox组件为复选按钮组件,可以组成多项选择RadioButton组件为单选按钮组件,可以在多个条件中选择唯一的一个ToolBar组件为工具栏组件。可以按列来排列按钮或其他组件,同时自动调整它们的大小和位置CoolBar组件为一种更灵活的工具栏组件在使用普通按钮组件的时候应注意:如果某个按钮的Default属性设置为True,则在该视图中按下回车键(Enter)后,将执行该按钮的OnClick事件的处理过程。对于有些组件如RichEdit等,将不会产生默认按钮的OnClick事件。通常在一个窗口中只设置一个默认按钮。(1)Button组件:在加速按钮上可以同时显示图形和文字,用法与位图按钮很相似。Flat属性可以使按钮平面化,和Transparent(透明)属性共同使用可以实现多媒体的透明按钮。特点:基本上综合了前面两种按钮的特性,是一种方便的通用按钮。(2)SpeedButton组件:可以通过Alignment属性设置复选按钮上文字的位置。如果复选按钮为三态的,也就是可以表达“选中”、“未选中”和“部分选中”(灰色)的概念时,可以将AllowGrayed属性设置为True。可以在设计阶段就设置好复选按钮的状态。通过Checked属性可以将复选按钮设置为“选中”和“未选中”状态,通过State属性可以将复选按钮设置为“选中”、“未选中”或“部分选中”。在同一个窗体中,尽量将不同的复选按钮分组使用,将具有相同性质的复选按钮放在一起。(3)CheckBox组件:如果自己制作位图按钮图形,可以将位图保存在.bmp文件中,在设计阶段就可以通过Glyph属性将图形显示在位图按钮上。采用Delphi指定的一组默认图形,可以通过Kind属性来设置。具体取值可以为bkCustom、bkOK、bkCancel、bkHelp、bkYes、bkNo、bkClose、bkAbort、bkRetry、bkIgnore和bkAll等,它们分别具有明显的意义。对于自己制做图形的位图按钮,Kind属性要设置为bkCustom。(4)Bitbtn组件:通常在使用单选按钮时,总是将其进行分组。在同一组中,只能同时选中一个按钮,其余按钮自动取消选中。在实现单选按钮的分组时,可以有两种方法:利用分组框组件(GroupBox)和单选按钮组件(RadioButton)实现。首先向窗体中添加分组框,然后向分组框中添加单选按钮。这样,同一个分组框中的单选按钮就自动成为一组。可以通过RadioButton组件的Checked属性来确定哪一个单选按钮被选中。利用单选按钮分组框(RadioGroup)实现。可以通过ItemIndex属性来确定选中哪一个单选按钮。(5)RadioButton组件:5.列表组件ListBox组件可以显示一系列字符串,用户可以选中其中的一个或多个ComboBox组件为组合框组件。组合框由一个编辑框和一个下拉式列表框组成,可以从多个列表条目中选择一个。TreeView组件可以显示具有树型层次的数据。ListView组件可以显示一些列表的条目,可以按大图标、小图标、列表或详细资料等四种方式显示。ImageList组件是对位图进行管理的不可视组件。CheckListBox为复选按钮列表框组件,在列表框中可以有一列或多列复选按钮。DateTimePicker组件可以实现日期和时间的快速输入。可以在设计阶段改变Items属性来预先设置列表框的内容,同时也可以在运行期间通过代码改变列表框的内容。例如:

向列表框中增加条目:

ListBox1.Items.Add(‘增加的新条目’);

删除当前选中的一个条目:

ListBox1.Items.Delete(ListBox1.ItemIndex);

清除所有的条目:

ListBox1.Clear;如果将ListBox组件的MultiSelect属性设置为True,就可以一次选中多个条目。如果将ListBox组件的Sorted属性设置为True,可以自动将列表框中的字符串排序。(1)ListBox组件:

组合框有五种类型,可以通过Style属性来设置,

csDropDown:在组合框的编辑框中可以输入,同时下拉式列表框是一组具有等高度的字符串

csSimple:在只有一个编辑框显示,可以在编辑框中输入字符串,也可以通过上、下箭头键改变编辑框中的内容

csDropDownList在组合框的编辑框为只读的,而且编辑框中的内容只能在从列表框中选择

csOwnerDrawFixed在组合框由一个只读编辑框和条目高度相等的列表框组成,条目的高度由属性ItemHeight确定

csOwnerDrawVariable在组合框由一个只读编辑框和列表框组成,条目的高度可以不同通过属性DropDownCount可以改变列表框显示条目的个数,默认值为8。当列表框中的条目大于DropDownCount时,将会在列表框右面自动出现一个滚动条。(2)ComboBox组件:树的生成可以在设计阶段进行,也就是改变Items属性。单击Items属性右面的省略号按钮,在弹出的TreeViewItemsEditor对话框中可以方便地生成一个树。一般在树上的每个条目前会有一个小图标。有时当该条目被选中时,会显示另一个小图标。在Delphi中,这些小图标由ImageList组件进行统一管理,然后在TreeView组件的Images属性中选择一个ImageList组件,接着具体设置每个条目的ImageIndex属性就可以选择ImageList组件中相应的图标了。如果将RightClick属性设置为True,则在树的某个条目上单击鼠标右键,也可以将该条目选中。在程序运行期间,可以动态地改变树的内容。可以通过TreeView组件Items属性的Add、AddChild、Delete函数等实现。通常要编写TreeView组件的OnChange事件的处理过程,也就是在树上选择了不同的条目后,执行该事件的处理过程。(3)TreeView组件:在Windows的资源管理器中,采用了ListView组件显示一定目录下的文件信息。使用时候应注意:在ListView中也有一些图标,添加图标的方法与TreeView组件一样,也是先定义一个ImageList组件,再将ListView组件的LargeImages、SmallImages和StateImages等属性与对应的ImageList组件关联。通过对ListView组件的Columns属性进行设置,可以确定将要显示的列数,并且可以为每一列指定文字的对齐方式、显示的宽度、图标索引号等。对ListView组件的Items属性进行设置,可以向组件中预先增加一些记录。通过ViewStyle属性设置显示方式:

vsicon,vslist,vsreport,vssmallicon(4)ListView组件:ImageList组件主要用来对窗体中的图标进行管理,统一分配索引号,然后提供给TreeView组件、ListView组件等通常应将Masked属性设置为True,这样,图标中的背景框就不显示出来,只显示图标中的必要部分;否则,显示的图标将是一个矩形图形,背景色(比如青色)也将显示出来。(5)ImageList组件:可以通过CheckListBox组件的Items属性,在设计阶段添加、修改列表内容。在运行期间,可以通过下面的代码对列表内容进行修改:1)增加一个新的复选列表条目:

CheckListBox1.Items.Add(‘复选列表条目’);2)在索引号为0的复选列表条目前的方框中显示一个勾号:

CheckListBox1.Checked[0]:=True;3)判断索引号为1的复选列表条目是否被选中,也就是该条目被高亮度显示:

if(CheckListBox1.Selected[1])thenShowMessage('条目1被选中’);(6)CheckListBox组件:DateTimePicker组件可以实现日期或者事件的快速输入。使用的时候应注意:1)如果Kind属性设置为dtkDate,则输入的是日期;如果Kind属性设置为dtkTime,则输入的是时间。2)在输入的是日期的情况下,修改DateFormat属性可以设置日期的格式,有两种格式:

dtLong(长日期型)和dtShort(短日期型)(7)DateTimePicker组件:5.信息反馈组件Label组件上可以显示一个只读的字符串ProgressBar组件为进度条组件,可以动态地显示一个过程的进度StatusBar组件为状态条组件,在其中可以显示一些说明信息如果一项工作进行的时间超过了几秒钟,就需要以一定的方式告诉用户:程序正在运行,系统没有死机,请等待。进度条组件(ProgressBar)可以方便地实现上述功能通常,我们必须知道整个工作的量,然后在对话框中或者状态条中显示ProgressBar组件,根据工作的进度,动态地改变ProgressBar组件的Position属性。另外,ProgressBar具有Max和Min属性,用来表示进度条所表示的最大值和最小值。通常,Max设置为100,Min设置为0,Position属性的初始值设置为0。这样,就将整个工作分成了100份,每完成1份,就将Position属性的数值加1。(1)ProgressBar组件:如果一项工作进行的时间超过了几秒钟,就需要以一定的方式告诉用户:程序正在运行,系统没有死机,请等待。进度条组件(ProgressBar)可以方便地实现上述功能通常,我们必须知道整个工作的量,然后在对话框中或者状态条中显示ProgressBar组件,根据工作的进度,动态地改变ProgressBar组件的Position属性。另外,ProgressBar具有Max和Min属性,用来表示进度条所表示的最大值和最小值。通常,Max设置为100,Min设置为0,Position属性的初始值设置为0。这样,就将整个工作分成了100份,每完成1份,就将Position属性的数值加1。(1)ProgressBar组件:

delphi语法基础

作为一种程序设计的语言,ObjectPascal语言具有很多优点。数据类型丰富,并且支持结构化程序设计和面向对象程序设计。此外,易于阅读,编译迅速,并且可以使用多个单元文件来进行模块化程序设计。ObjectPascal语言是在传统Pascal语言的基础上发展扩充的,主要体现在面向对象的方面。一.

第一个delphi例子Delphi主界面●标题栏:标题栏中显示了当前的工程名,标题栏位于最上部。●主菜单:通过主菜单可以实现集成开发环境中的绝大部分命令。另外,在程序开发的过程中,在界面的不同部位点击鼠标右键,看看是否会弹出菜单,通过这些弹出菜单能实现什么新的功能或快捷操作。●工具栏●组件栏:在利用Delphi开发应用程序的过程中,正确、合理、恰当地使用组件非常重要。●对象编辑器(ObjectInspector):对象编辑器的功能是实现对象(尤其是组件)的属性设置,创建事件处理过程并进行管理。分为下面的三个部分:1.简介(1).对象列表:是一个组合框,包含了当前窗体上的所有组件。(2).属性页(Property):属性页中列举了当前被选中的对象(比如说组件)的属性。可以在程序设计的过程中直接对这些属性进行修改,也可以在程序运行期间通过代码进行修改。(3).事件页(Event):通常情况下,事件处理过程为空。可以双击事件右面的组合框来添加事件的处理过程。如果要共用已存在的事件处理过程,可通过下拉式组合框进行选择。窗体设计窗口(Form):窗体就是将来在应用程序中显示的界面。在窗体设计窗口中可以添加组件栏中的组件,窗体设计窗口的标题栏中显示的是当前正在设计的窗体的名称。代码浏览器(CodeExplorer):可以在代码编辑器中快速地定位,并可以在其中将定义的类完善。代码编辑器(CodeEditor):代码编辑器为代码的输入和编辑提供了一个方便的环境。2.第一个delphi例子通过一个简单的例子说明delphl的可视化和面向对象,为学习delphi语法准备.第一步:启动delphi第二步:创建新应用程序第三步:设计界面第四步:编写Button1事件响应代码showMessage(‘欢迎进入delphi的世界’);Button1.caption:=‘Hell’;Labell.Caption:=‘这是我的第一个Delphi程序”;第五步:编写button2的事件代码Close;第六步:运行应用程序第七步:查看结果第八步:退出1.注释二、基础语法文档是软件的重要组成部分。delphi的注释有多种方法:{}用于注释一段文字;

//表示行注释;

{$..}是特例,表示编译指令。2.标识符Delphi中一些量的名称:变量、常量、过程、类型、函数。

标识符的定义规则是:字母开头;不含空格;最长255;一般只含字母,数字,下划线。

名字要有意义,不要用拼音缩写。可以用英语或全拼。GZ:工资?高中?规则?广州?

Delphi不区分大小写3.变量是程序代码中代表一个内存地址的标识符,而此地址的内容在程序运行过程中是可变的.

VarValue,Sum:Integer4.常量被说明为一个固定的值,在程序运行过程中不允许改变

constPi=3.1415name=“quhong”普通常量不分配内存地址,表现为代码中的立即数3.数据类型

学习数据类型时要弄清楚的问题:用处?定义?占多少内存?常量怎样表示?有关的函数?

数据类型可从多个角度划分。我们从使用该类型的角度看,可划分为整型、实型、布尔型、枚举型等;若从是否需要定义的角度看,可分为原始类型和用户定义类型。

要注意各个类型间是否可转换及如何实现转换。比如整数和实数。(1).整型

用处:表达可数的数目;记录循环次数

定义:vara:integer;b,c:int64;

内存占用:

常量表示:普通123;十六进制$1FE7;

必会函数:Div,Mod,Dec,Inc,StrToInt,(2).实数

用处:表示连续量

定义:varx,y:double;

内存占用:

常量表示:34.56;0.23;.23;1.2E-3;

必会函数:FloatToStr,FormatFloat,Int,Frac,Roundformatfloat('00000.00',x);(3).字符型●基本的字符类型(character)Char,精确分类包括AnsiChar和WideChar两种。●AnsiChar类型的数据具有一个字节,与扩展的ANSI字符集对应。WideChar类型的数据为双字节,与Unicode字符集对应。Unicode字符集的前256个字符与ANSI字符集的相同。●通用的字符类型为Char,与AnsiChar类型相同。建议在获取字符类型数据的字节数时使用SizeOf函数。

用处:表示单个字母或数字

定义:vara:char;constb:char='x';

内存占用:

常量表示:'a';单引号本身的表示:'''';chr(39);#39;

必会函数:chr,ord(4).布尔型

用处:表示是或不是

定义:vara:boolean;

内存占用:

常量表示:true,false

必会函数:notandor四种:Boolean、ByteBool、WordBool和LongBool。其中Boolean和ByteBool为单字节,WordBool为双字节,LongBool为四字节。对象Pascal语言预定义了两个常量标识符False和True,可以为Boolean类型的数据赋值为False或True,对应的序数值为0和1。当ByteBool、WordBool和LongBool类型的数据为0时,可以认为是False;当不为0时,可以认为是True。(5).枚举型

用处:代表有限集合中的每一个元素,为每个元素指定一个有意义的名字。

定义:typeTV_Color=(TV_red,TV_Blue,TV_Green);vara:TV_Color;

内存占用:相当于常量,无内存地址

常量表示:TV_red,TV_Blue。

必会函数:ord取得序号;序号从零开始。例如:typeSuit=(Club,Diamond,Heart,Spade);//类型定义varSuit1:Suit;//变量声明其中Club、Diamond、Heart和Spade的序数值分别为0、1、2和3。(6).字界型

用处:限定范围的字符类型或整型(序数类型),可在编译阶段检查赋值合法性。

定义:typeAge=1..200;vara:Age;

内存占用:与它使用的序数类型相同。例如定义了一个表示颜色的枚举类型:typeTColors=(Red,Blue,Green,Yellow,Orange,Purple,White,Black);接着就可以定义一个子界类型如下:typeTMyColors=Green..White;其中TMyColors包括了Green、Yellow、Orange、Purple和White。(7).记录

用处:把许多量组合在一个类型中

定义:

typeSTU=recordname:string[10];id:integer;age:double;end;vara:STU;

内存占用:基本上等于组成的变量所占内存的和(存在整字对齐问)

引用:edit1.text:=;a.age:=15.5;

注意:元素可以是任何类型,甚至是另一个记录类型;可以用packed指定不要整字对齐。(8).数组

用处:表示同型元素构成的列表

定义:typeAAA=array[0..100]ofchar;BBB=array[5..10]ofSTU;vara:AAA;

内存占用:数组大小乘单个元素的占用。

引用:a[下标];如a[2],a[34]

必会函数:Low,High。(9).字符串

delphi的串有短串和长串之分。一般短串在栈中分配空间,长串在堆中分配空间。短串最大长度是255,与C的串占用空间相同,结构有区别。在堆上分配的长串,是自动堆对象,不需要手动地申请和释放。

定义:vars:string;{长串}

s2:string[12];{短串}

可以用下标的方法引用串中的单个字母:s:=‘hello’;则s[1]表示‘h’;

必会的内部函数:length(s);s1:=copy(s,1,2);delete(s,3,2);insert('abc',s,2);i:=Pos('abc',s);s:=LowerCase(s);upperCase;4.运算符

对象Pascal语言中的运算符(Operators)有:@、not、^、*、/、div、mod、and、shl、shr、as、+、-、or、xor、=、>、<、<>、<=、>=、in和is等运算符分为下面两类:单目运算符和双目运算符。上面的@、not和^为单目运算符,其余的为双目运算符。其中+和-也可以作为单目运算符来使用。注:只有^可以放在操作对象的后面(1).运算符优先级第一级(最高):@、not第二级:*、/、div、mod、and、shl、shr、as第三级:+、-、or、xor第四级(最低):=、<>、<、>、<=、>=、in、is(2).算术运算符:算术运算符对浮点数和整数进行加、减、乘、除和取模运算(3).逻辑运算符:

对逻辑类型的操作数进行运算,数据结果也为逻辑类型(4).位运算符:

对整型的数据进行按位操作,所得结果也为整型数据(5).集合运算符:对两个集合进行操作,判断两个集合之间的关系(6).关系运算符:对两个普通数据类型、类、对象、接口类型或字符串类型的数据进行比较,结果数据类型为布尔类型5.语句

●利用保留字var可以声明已存在数据类型的变量,例如:

var

X,Y:Integer;

M:MyType;(1).声名语句:主要实现对标号、常量、数据类型、变量、过程、函数、过程和函数的输出等进行声明。●常量的声明:

constPI=3.1415926535897932385;等号右边可以使用一些预定义的函数。●在基本数据类型的基础上,还可以利用保留字type自定义一些数据类型,例如typeMyType=Array[1..100]ofreal;(2).赋值语句:形式如下:

variable:=expressionDone:=(I>=1)and(I<100);//将逻辑表达式的结果赋值为一个变量

Hue1:=[Blue,Succ(C)];//将一个子集赋值为一个变量

I:=Sqr(J)-I*K;//将一个表达式的结果赋值为一个变量

Shortint(MyChar):=122;//给类型转换后的变量赋值

MyString[I]:=‘A’;//给数组的一个元素赋值TMyObject.SomeProperty:=True;//给对象的属性赋值(3).复合语句:首尾使用begin和end括起来一组语句称为复合语句。复合语句可以嵌套使用,也允许空的复合语句出现,也就是在begin和end之间没有其他语句。

例如:

begin

Z:=X;X:=Y;

Y:=Z;

begin

end;

end;(4).with语句:在使用记录类型的变量时,可以通过with语句指定一些语句都是针对某一个变量来说的,这样可以简化代码的输入量。形式如下:

withobjdostatement注:如果with语句指定的某个变量具有某个字段,另一个变量也具有该字段,则在with语句中对不指明变量的该字段来说,所有的操作都是针对with语句指定的变量来进行的。如果要对其他变量的该字段进行操作,要在with语句中指明变量名。(5).IF语句:if语句主要实现了判断的功能。具体形式如下:

ifexpressionthenstatement或者

ifexpressionthenstatement1elsestatement2注意:在第二种情况下,语句statement1的最后不需要分号“;”。如果statement1是一个复合语句,则该复合语句的end后面也不需要分号。s(6).CASE语句:case语句对一个结果的多个分支进行判断,具体形式如下:

caseselectorExpressionof

caseList1:statement1;

...

caseListn:statementn;

else

statement;如果selectorExpression的数值等于caseList1,则执行statement1语句,执行完毕后就退出case语句。如果selectorExpression的数值不等于caseList1,则依次向下判断。如果所有罗列出来的数值都不满足,就执行else语句后面的statement语句。else及其后面的statement语句可以不要。(7).REPEAT语句:repeat语句可以实现循环操作的功能。具体形式如下:

repeat

statement1;

...;

statementn;

untilexpression在表达式expression为True之前,循环执行语句statement1到statementn。例:

Project1;

varI:Integer;

begin

I:=1;

repeat//repeat语句开始行

writeln(I);

I:=I+1;

untilI=100;//repeat语句结束行

end.(8).WHILE语句:while语句也可以实现循环操作的功能。具体形式如下:

whileexpressiondostatement

在表达式expression为False之前,循环执行语句statement。例:

whileI<=100do//while语句开始行

begin

writeln(I);

I:=I+1;

end;//while语句结束行(9).FOR语句:for语句可以实现循环操作的功能。形式如下:

forcounter:=initialValuetofinalValuedostatement或者:forcounter:=initialValuedowntofinalValuedostatement其中counter为一个有序类型的数据,initialValue为counter的初始值。在第一种形式中,使用的是保留字to,counter则从初始值initialValue开始逐一增加到finalValue;在第二种形式中,使用的是保留字downto,counter则从初始值initialValue开始逐一递减到finalValue。每次执行一次statement语句。(10).TRYEXCEPT语句:在try...except语句中可以进行抛出异常和处理异常的工作。一般形式如下:

try

Statements1;

except

Exceptionblock;

end;Try后面到Except之前的语句通常是希望正常执行的代码,执行时如果触发了异常,程序就跳入Except部分。(11).TRY…FINALLY语句:在try...Finally语句主要用于在发生异常的情况下确保释放应用程序已分配的资源。一般形式如下:

try

Statementlist1;

Finally

statementlist2;

end;例如:

Reset(F);

try

...//对文件进行操作

finally

CloseFile(F);//关闭文件

end;

delphi组件

DELPHI中最重要的部分是可视化组件库(VCL),其中一部分是组件,显示在组件面板上,另一部分是一些通用的类。介绍组件的概念、组件和窗体的关系、以及一些常用组件的用法一.窗体在Windows操作系统中,人机交互的界面主要是通过一些窗口和对话框实现的。在Delphi中,这些窗口和对话框就是程序设计阶段的窗体,Delphi的可视化设计工作就是在窗体中进行的。通常,窗体中会有一些控件,通过这些控件可以实现多种多样的功能。在Delphi中,把这些运行期间出现在窗口和对话框中的控件称为可视组件。在窗体中,不仅可以放置控件,还可以放置一些运行期间不可视的组件,这些不可视组件集中地实现了一些特殊的功能。窗体和组件的关系非常密切。从视觉的角度来看,窗体就像一个容器,其中包容了可视组件和不可视组件。从程序代码的角度来看,一个窗体对应一个源程序文件,其中定义了窗体中所有组件的对象。相同点:从面向对象编程的角度来看,所有组件都是TComponent类派生类的一个对象。窗体类(TForm)也是从TComponent类派生的,所以可以将窗体看成一个特殊的组件。窗体属性●biSystemMenu可以通过点击标题栏左边的图标或在标题栏上单击鼠标右键来显示控制菜单。控制菜单有时也称为系统菜单。●biMinimize在标题栏右边显示最小化按钮。●biMaximize在标题栏右边显示最大化按钮。●biHelp在标题栏右边显示帮助按钮。只有窗体的BorderStyle属性设置为bsDialog或者窗体属性BorderIcons中不包括biMinimize和biMaximize时,biHelp设置才有效。(1)属性BorderIcons用来指定窗体标题栏上的图标,可以设置为下列数值:●bsDialog窗体为标准的对话框,边框大小不可以改变。●bsSingle窗体具有单线边框,大小不可以改变。●bsNone窗体没有边框,也没有标题栏,边界的大小不可以改变。●bsSizeable边框大小可变的标准窗体。●bsToolWindow风格与bsSingle相同,只是标题栏比较小。另外,对于这种风格的窗体,属性BorderIcons中设置的biMinimize和biMaximize并不起作用。●bsSizeToolWin风格与bsSizeable相同,只是标题栏比较小。对于这种风格的窗体,属性BorderIcons中设置的biMinimize和biMaximize也不起作用。(2)属性BorderStyle用来设置窗体的外观和边框,可以指定为下面的数值:用来指定窗体标题栏中的说明文字。通常,对于Windows系统中的多文档界面(MDI)应用程序,当主框架窗口中的子窗口以最大化显示的时候,应用程序的标题栏中显示的内容为“<应用程序名>-<打开的文档名>”;当子窗口以非最大化窗口显示的时候,主框架窗口中只显示应用程序的名称,子窗口有自己的标题栏,其中显示该窗口打开的文件名。所以,当窗体的显示方式发生了改变后,应该立即改变标题栏中的内容。(3)

Caption属性属性Font用来设置窗体中文字的字体、颜色和字号等。如果将窗体中组件的属性ParentFont设置为True,那么该组件的字体设置就与其父级窗体的字体设置完全一样了。所以在程序设计的时候,为了保持整个系统风格的统一,应该使工程中的窗体风格尽量一致,可以先设置窗体的Font属性,然后将窗体中所有组件的ParentFont属性设置为True就可以了。一般不要单个地对窗体中的组件进行Font属性的设置。(4)

Font属性通常,应该在系统开发的设计阶段就将整个工程中所有窗体的名称确定,然后在编程阶段根据设计文档修改窗体的Name属性。一般情况下,不要在程序运行期间通过代码修改Name属性。(7)Name属性属性Name用来标志工程中的窗体●poDesigned窗体显示的位置和大小与设计期间的一致。●poDefault窗体每次显示时,与上次比较,往右下角移动了一些位置;窗体的高度和宽度由Windows决定。●poDefaultPosOnly窗体以设计期间的大小显示,窗体显示的位置较上次向右下角移动了一些。如果窗体以设计时的大小不可以在屏幕上完全显示,就移动到屏幕的左上角显示。●poDefaultSizeOnly窗体以设计期间的位置显示,窗体的大小由Windows决定。●poScreenCenter窗体以设计期间的大小显示,窗体显示的位置总在屏幕的中间。考虑多个监示器时位置的调整。●poDesktopCenter窗体以设计期间的大小显示;窗体显示的位置总在屏幕的中间。不考虑多个监示器时的调整。(8)

Position属性属性Position用来描述窗体的大小和显示的位置。可以是下列数值:●wsNormal窗体以普通状态显示(既不是最大化状态,也不是最小化状态)。●wsMinimized窗体以最小化状态显示●wsMaximized窗体以最大化状态显示(9)

WindowsState属性属性WindowsState用来描述窗体显示的状态,可以取下面的三个数值之一:

二、组件在Delphi编程的过程中,要经常使用到组件。通过可视组件,可以在窗体中方便地构建与用户交互的界面。另外一些不可视的组件可以为程序增加许多强大的功能。在Delphi集成开发环境的组件栏中,按照功能分类罗列了大量的组件,熟悉它们可以提高开发程序的进度。此外,还可以根据需要,调整组件栏中组件的位置,或者在组件栏中添加、删除组件,还可以为了满足一些特殊需求而创建新的组件,并把它们添加到组件栏中。●Standard:标准Windows控件、框架、菜单等●Additional:一些专用的Windows控件●Win32:32位Windows系统中的公用控件●System:进行系统操作的组件(包括定时器、多媒体和DDE等)●DataAccess:操作数据库的组件,如访问数据库、表格、查询和报表等●DataControls:进行数据库控制的组件

ADO通过ActiveXDataObjects访问数据库的组件●InterBase:提供与InterBase直接联接的组件●MIDAS:开发多层数据库应用程序的组件1.组件介绍●InternetExpress:开发InternetExpress应用程序(Web服务器应用程序和客户端多层数据库应用程序)的组件●Internet:开发Web服务的应用程序●FastNet:提供Internet操作的一些组件

DecisionCube为应用程序提供多维数据分析的组件●QReport:快速报表组件●DialogsWindows:通用对话框组件●Win3.1:提供与Windows3.1兼容的一些组件●Samples:一些定制组件的例子●Servers:通用COM服务器组件向窗体中添加组件

•删除窗体中的组件。

•调整组件的大小和位置。

•设置可视组件的TabOrder。

•组件的锁定和解锁。

•设置窗体中组件的属性。

•创建组件的事件处理过程。2.在窗体中使用组件在应用程序的界面上,往往需要用户输入一些文字,或者以一定的格式将文本显示给用户,文本组件包括以下的一些组件:3.文本组件(1)Edit组件:可以显示、编辑单独的一行文本(2)Memo组件:可以显示、编辑多行文本(3)MaskEdit组件:可以显示、编辑具有指定格式的文本,如6位数字的邮政编码、固定格式的电话号码等(4)RichEdit组件:可以显示、编辑具有丰富文本格式(RichTextFormat)的文件,如.rtf文件文本组件属性介绍(1)CharCase属性可以强迫组件中的文本全部为大写字母、全部为小写字母或不强迫改变大小写。

Edit组件具有CharCase属性。然而TMemo类与TRichEdit类就没有CharCase属性。(2)Text(或Lines)属性可以在设计阶段就赋予组件显示的内容。对于Edit组件和MaskEdit组件,在对象编辑器中列举了Text属性,对于Memo组件和RichEdit组件却没有列举,而改成了Lines属性。实际上Memo组件和RichEdit组件同样具有Text属性,可以通过代码改变Text属性的值。(3)ReadOnly属性指定用户是否可以修改组件中的内容。默认值为False,即用户可以修改组件中的内容(4)MaxLength属性限制每一行最多可包含的字符数,默认值为零,表示不由应用程序来限制每行的字符数,而是由操作系统来确定的。(5)HideSelection属性设置当组件失去焦点时是否高亮度显示选中的文本。(3)ReadOnly属性指定用户是否可以修改组件中的内容。默认值为False,即用户可以修改组件中的内容(4)MaxLength属性限制每一行最多可包含的字符数,默认值为零,表示不由应用程序来限制每行的字符数,而是由操作系统来确定的。(5)HideSelection属性设置当组件失去焦点时是否高亮度显示选中的文本。(6).注意事项●AutoSelect属性可以设置当Edit组件获得输入焦点时,是否自动选中所有的文本。●PasswordChar属性可以将用户输入的所有字符以同一个字符显示。●Edit组件最常用的事件(也是默认事件)为OnChange,也就是当Edit组件中的文本发生改变的时候,该事件的处理过程执行。●在一些对话框中可以见到这种情况:在一个编辑框中输入字符的时候,另一个编辑框中的内容自动发生改变。只要在第一个编辑框的OnChange事件的处理过程中改变第二个编辑框的Text属性就可以实现上述过程。(1)使用Edit注意事项(2)使用Memo注意事项对一些比较长的文本内容可以利用Memo组件来显示、编辑。可以通过Text属性来存取文本内容。可以通过Modified属性来确定文本内容是否发生了改变。

Memo组件没有从TCustomEdit类继承AutoSelect属性,所以不可以使用该属性。(3)使用MaskEdit注意事项可以通过EditMask属性来设置输入的格式。单击EditMask属性右面的省略号按钮,将弹出InputMaskEditor对话框,在其中可以方便地设置需要的输入要求和格式。通常可以先在右面的SamplesMasks中选择一项,然后在InputMask中进行修改。(4)使用RichEdit注意事项如果PlainText属性设置为True,则在RichEdit组件中显示RTF文件的时候,将格式标记以普通文本的方式显示出来。如果PlainText属性设置为False,则根据RTF文件中的格式设置来显示。通常将PlainText属性设置为False。通过方法Lines.LoadFromFile和Lines.SaveToFile可以方便地存取RTF文件。4.特殊输入控件为滚动条组件。如果一个窗口中的内容一次显示不完,可以通过滚动条浏览不同的内容。(1)ScrollBar组件:Kind取值可以是:

sbHorizontal滚动条是水平方向的。

sbVertical滚动条是垂直方向的。

Max、Min确定滚动条表示数值的范围,类型为Integer。

LargeChange、SmallChange可以设置滚动条数值改变的大小。

LargeChange表示滑动按钮在滚动条上的位置发生比较大的变化

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论