当前位置:文档之家› Delphi开发

Delphi开发

Delphi开发
Delphi开发

第2章 Delphi开发环境

“真正的程序员用C,聪明的程序员用Delphi”,Delphi是开发数据库前端的优秀工具,它以其简洁明快的编程语言、功能强大的组件和灵活方便的编程环境在竞争激烈的市场中越来越赢得青睐。采用Delphi来开发数据库应用程序具有更大的灵活性和可扩展性。Delphi支持单机的dBase、Paradox数据库和流行的关系数据库,如Oracle,Sybase,SQL Server等。最后完成的系统可以在单机、Netware网络文件共享方式和客户机/服务器条件下运行。

Delphi与InterBase的结合在所有类似编程语言中是最具特色的,是开发C/S程序最有用和最强大的工具组合。Delphi安装完毕后,会产生一个InterBase数据库类型的Local Server。有了它,用户就可以编写C/S数据库程序,而无需一个真正的后台数据库服务器;Local Server虽然在本地计算机中运行,但它的确扮演了一个数据库服务器的角色,应用程序在Local Server上运行和在服务器上运行没有什么不一样。

本书将以InterBase 6.0作为后台数据库,讲述如何用Delphi 6便捷地开发管理信息系统应用程序。

2.1开发环境的建立

本书所有的例程在Delphi 6开发环境中编写。Delphi 6可运行于Windows 98或Windows 2000下,并且在这两种操作系统中编程的界面和操作均相同。数据库后台使用InterBase 6.0。程序编写完成后,用InstallShield Express来制作安装程序。以上三个软件都可以在Delphi 6的安装光盘中找到。

将Delphi 6安装光盘放入光驱中,系统会自动启动安装程序。如果安装程序没有自动启动,也可以直接双击光盘根目录下的INSTALL.EXE文件,安装启动界面如图2-1所示。

图2-1Delphi 6 安装启动界面

Delphi 6安装光盘中包含6个产品:

●Delphi 6——应用程序开发工具Delphi 6;

●TeamSource——基于Internet的服务,能使地理位置分散的开发人员在线协同开发

应用程序;

●InterBase 6.0 Server——Inprise公司的数据库,性能评估不错,但是应用不太普

遍;

●InterBase 6.0 Desktop Edition——单机应用的InterBase数据库;

●Remote Debugger Server——远程代码调试服务;

●InstallShield Express Custom Edition for Delphi——InstallShield为Delphi定制的安装

制作应用程序,可制作出一个比较漂亮的安装界面。

建立本书例程所叙述的开发环境,需要安装1、3、6这三项的应用程序。对系统的要求如下:

●中央处理器:Intel Pentium 166 MHz或更高性能的CPU(推荐使用PⅡ 400 MHz以

上)。

●操作系统:Microsoft Windows 98/2000/Me,或Windows NT 4.0(SP5或更高)。

●物理内存:64MB(推荐使用128MB以上)。

●硬盘空间:Delphi 6至少需要115MB(简化安装);InterBase 6.0完全安装(包括

服务器、客户端、Acrobat Reader和所有的文档)需要至少36MB硬盘空间,最小

安装(只含服务器应用软件)只需11MB的硬盘空间;InstallShield Express需要

75MB硬盘空间。

●光驱。

●VGA监视器。

●鼠标或其他定位装置。

●网络支持:任何与Windows 98/NT/2000/Me兼容的网络。

2.2Delphi集成开发环境

Delphi 6安装完成之后,会产生一个Borland Delphi 6程序组,如图2-2所示。所有的开发工具都在这个程序组中。其中包括Delphi 6主程序、SQL Explorer数据库管理工具、Image Editor绘图工具和帮助文档等。这些常用的开发工具也可以在Delphi 6集成开发环境中通过菜单直接调用。

图2-2Delphi 6程序组

2.2.1 启动Delphi 6

从开始菜单中选择“程序\Borland Delphi 6\Delphi 6”进入Delphi 6的集成开发环境,如图2-3所示。

图2-3 Delphi 6集成开发环境

Delphi 6集成开发环境与Visual Basic 等开发工具的多文档界面不同,它采用的是浮动面板的形式。整个开发环境主要分为四个部分:命令菜单及控件、对象查看窗口、设计期窗体和源代码编辑器。

2.2.2 命令菜单和控件

最上部的是命令菜单和可用控件。菜单主要包括:

● File ——文件管理,包括新建/打开/保存工程或文件、设置打印机、退出;

● Edit ——主要的编辑操作,包括恢复、排列、复制、粘贴等操作;

● Search ——用于搜索特定的对象;

● View ——用于工程管理、对象察看、控件选择、显示窗体/源代码等操作;

● Project ——修改工程的各种属性,编译可执行文件;

● Component ——组件工具,建立和安装新的自定义组件;

● Database ——数据库管理工具;

● Tools ——一些开发工具,可设置环境变量、编辑器属性和编译选项等;

● Help ——帮助文档。

菜单中几个常用的功能被放置到工具条上,便于操作,如图2-4所示。

1 2 3 4 5 6 7 8

9 10 11 12 13 14 15 16

图2-4 工具条

菜单工具条和控件

监视

器 设计期窗口

源代码编辑器

工具条的16个按钮功能如下:

(1)新建文档;

(2)打开已存在的文档;

(3)保存当前编辑的文档或窗体源代码(快捷键:Ctrl+S);

(4)保存所有的打开的文档;

(5)打开一个已存在的工程文件(快捷键:Ctrl+F11);

(6)将文件添加到当前的工程中(快捷键:Shift+F11);

(7)从当前工程中删除文件;

(8)帮助;

(9)显示程序单元的源代码(快捷键:Ctrl+F12);

(10)显示设计期窗体(快捷键:Shift+F12);

(11)在设计期窗体和窗体源代码之间切换(快捷键:F12);

(12)新建窗体;

(13)运行当前工程(快捷键:F9);

(14)暂停运行;

(15)调试正在运行的工程,并跟踪运行到每个调用的函数里去(快捷键:F7);

(16)调试正在运行的工程,但不跟踪到调用的函数里去(快捷键:F8);

常用的控件在工具条的右侧,主要包括28类上百个控件,根据需要还可以加入用户自己设计的各类控件。由于控件的类别较多,需要通过控件区右上角的方向按钮来左右移动控件类别标签。

2.2.3对象监视窗口

对象监视窗口(Object Inspector)用于查看管理对象属性和事件,如图2-5和2-6所示。Delphi启动时,对象监视窗口在屏幕的左侧,是浮动面板,因此可以方便地被拖动到任何位置。单击窗口右上角的“关闭”按钮可将窗口隐藏,而单击“View”菜单的“Object Inspector”选项可再次显示此窗口,快捷键“F11”同样可以呼出对象监视窗口。

图2-5对象监视器的属性页图2-6对象监视器的事件页

对象监视窗口的顶部是对象选单。例如当前对象是窗体Form1,则在对象选单中显示为“Form1 TForm1”,左边是对象的名称,与该对象的Name属性相同,右边为其类的名称。单击对象选单右侧的下拉按钮,会列出当前窗体上所有的对象。

对象监视窗口具有两个标签页:Properties(属性)和Events(事件)。在设计期,点选属性页可显示和设置所选对象的各种属性;点选事件页将列出该对象具有的触发事件,双击某一事件,则在事件代码编辑器中自动添加该事件的处理程序声明,并且转到代码编辑器窗口,进行代码的编写和修改,也可以通过下拉按钮选择已存在的处理子程序作为该事件的处理程序。

2.2.4设计期窗体

启动Delphi时,系统自动建立一个项目和一个设计期窗体。

开发应用程序的过程实际上就是在窗体上放置各种对象、进行属性设置和编写事件处理代码。

将控件放置到设计期窗体上有四种方法:

(1)双击所需的控件按钮,在窗体的中央将以控件默认的大小加入一个新的控件对象。

(2)单击所需的控件按钮,在窗体适当的位置单击,可在此位置上创建一个默认大小的

控件对象。

(3)单击所需的控件按钮,在窗体上拉出一个适当大小的方框,建立相应的对象。

(4)如果要在窗体上批量创建多个同类对象,请按住Shift按钮,然后单击该控件按

钮。此时该控件按钮就会被锁定,表现为按钮周围有蓝色的边框。在设计期窗体上

就可以按2、3所述的方法创建多个控件对象。要解除这种锁定状态,只需单击其

他控件按钮即可。

在设计期窗体加入控件对象之后,可以拖动该对象到合适的位置,也可将其放大或缩小。同时在对象被选中状态下,可以在对象监视窗口中设置对象的属性和事件。

在设计控件布局时,经常需要对一组对象进行统一的处理(例如统一大小),这时就需要同时选取多个对象,选取的方法如下:

(1)点选第一个对象(称为“参照”对象),然后按住Shift键,点选其他各个对象。

(2)在窗体上拉出一个范围把相邻的几个对象选中。

(3)“Edit”菜单“Select All”选项,选中当前窗体上的所有对象。

选取一组对象后,就可以对它们进行相同处理,常用的操作是对齐或调整大小。右键单击选中的对象组,在弹出菜单中选择“Align...”,就会出现“对齐”对话框,如图2-7所示。

图2-7“对齐”对话框

选择相应的选项就可以实现以“参照”对象为基准的水平或垂直方向的各种对齐模式。如果要调整对象的大小,可以在右键菜单中选择“Size...”,就会出现如图2-8所示的“大小调整”对话框。可以将所选对象统一调整到指定的大小。另外,当选中多个对象时,对象共同的属性,如大小、位置、背景色、字体等,将显示在对象监视窗口中,在此我们也可以进行统一的修改。

图2-8“大小调整”对话框

2.2.5源代码编辑器

在启动Delphi后,源代码编辑器通常被自动建立的窗体覆盖。若要查看程序代码,可以按F12键将源代码编辑器窗口移动到窗体前。F12键是设计期窗体和源代码编辑器之间切换的快捷键。源代码编辑器窗口布局如图2-9所示。

图2-9源代码编辑器

窗口的左侧是单元资源列表,包括窗体包含的所有对象列表,自定义的变量和常量列表,其他相关单元的列表。窗口的右侧为当前窗体的源代码。如果打开了多个程序单元,源

代码编辑窗口中将显示多个标签页,图2-9中就包含Unit1和Unit2两个单元。

源代码编辑器有智能提示功能。当输入一个对象名,并且敲入对象属性事件引用符“.”时,系统会自动以列表的形式,列出可供选择的对象属性和事件。此时可以用鼠标来选择,也可以敲入对象属性或事件的头几个字母进行检索。然后按回车键将选定的属性或事件添加到代码中。这个功能可以帮助我们尽量避免因为输入错误而导致的程序出错。如果在对象名后面输入“.”号后,没有出现列表,则可能是因为前面的语句有错,或者对象没有适合当前位置的属性或事件。

2.3应用程序框架

每个Delphi开发项目都由若干个相关的文件构成。一些文件是在设计时创建的,如窗体的定义文件。另外一些文件则是在编译时生成。要有效地管理Delphi 6的项目,有必要了解各种文件的用途和结构。Delphi 6的文档和在线帮助都详细介绍了项目中文件的用途。2.3.1项目文件(.dpr)

项目文件是Delphi在设计时自动创建的,文件后缀名为“dpr”。项目文件的名称也是最后编译所得可执行文件的名称。项目文件的源代码一般如下:

program Project1; //项目类型和名称

uses //引用单元

Forms, //窗体类

Unit1 in 'Unit1.pas' {Form1}, //Unit1单元说明

{$R *.RES} //引用资源文件

begin //程序执行部分

Application.Initialize; //初始化

Application.CreateForm(TForm1, Form1); //创建窗体

Application.Run; //运行,即显示窗体Form1

end. //执行部分结束

项目文件是主窗体以及其他自动创建的窗体实例化的地方。一般不需要编辑项目文件,除非要执行程序初始化例程、显示启动画面或执行其他必须在程序启动时运行的例程。

项目文件是一个标准的Pascal源文件。uses子句列出了主窗体单元Unit1。如果包含其他自动创建的窗体,会以同样的形式列在uses子句中。源文件中的“{$R *.RES}”用于引用项目的资源文件。这一行告诉编译器去连接一个资源文件,该资源文件名与项目文件相同,但扩展名为“res”。项目的资源文件中包含了程序图标和版本信息。

最后,begin...end之间的语句是应用程序要执行的主代码。在这个例子中,创建了主窗体,即Form1。当Application.Run这条语句执行后,Form1作为主窗体显示出来。

2.3.2单元文件(.pas)

单元文件是Pascal源文件,后缀名为“pas”。在创建窗体、数据模块、组件或者普通程序模块时,都会产生相应的单元文件。下面是一个窗体的单元文件。为了说明方便,我们在前面加了行号。

1:unit Unit1; //单元名称

2:interface

3:uses //引用单元

4: Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

5: StdCtrls;

6:type //类型声明

7: TForm1 = class(TForm) //TForm1类

8: Label1: TLabel; //标签对象

9: Edit1: TEdit; //文本编辑框对象

10: Button1: TButton; //按钮对象

11: procedure Button1Click(Sender: TObject); //Button1 OnClick事件处理程序12: private //私有部分

13: { Private declarations } //在此添加私有变量和方法声明14: public //公共部分

15: { Public declarations } //在此添加公有变量和方法声明16: end; //TForm1类声明结束

17:var //变量声明

18: Form1: TForm1; //声明Form1对象

19:implementation

20:{$R *.DFM}

21:procedure TForm1.Button1Click(Sender: TObject); //事件处理程序

22:begin //处理程序开始

23: Edit1.Text:='Hello, World!'; //修改文本编辑框内容

24:end; //处理程序结束

25:end. //单元结束

源文件的第一行指明了单元的名称,一般单元名称和单元文件名相同,由系统在第一次保存该单元文件时自动设置。其他的单元文件需要引用该单元的实例对象的属性或者方法时,可以在uses子句中加入该单元名。

3-5行的uses子句指定了该单元所引用的其他单元。在Delphi中,各种类库都是一单元文件的形式来定义。因此,要使用Delphi提供的控件对象,就需要包含该控件所在的单元。

6-16行定义了一个TForm1类,它是从TForm继承而来,并且包含了窗体中所有控件的定义,如Label1、Edit1和Button1。并且定义了一个Button1Click过程。如果我们要为程序增加一些变量和函数过程,可以在private和public两个范围内定义。两者的区别是private定义的变量和函数只能被单元内的程序访问;而public定义的可以被其他单元的程序访问和调用。

17、18两行定义了一个TForm1的实例对象Form1。这主要是为了单元中的函数和过程可以通过这个对象来访问窗体中控件的属性和方法。

20行指明了对应的窗体文件名称与单元文件名称相同,后缀为“.dfm”。

21-24行是前面定义的Button1Click过程的实际代码。完成的工作就是将Edit1的文本

显示为“Hello, World!”。

2.3.3窗体文件(.dfm)

当创建一个窗体时,Delphi会同时创建一个单元文件和一个窗体文件。窗体文件存储了窗体的二进制信息,文件后缀名为“dfm”。

一般不用直接编辑窗体文件。如果需要查看窗体文件的内容,可以用Delphi的编辑器打开后缀为dfm的文件,并且。这时候文件以文本的形式显示,可以进行修改。窗体文件中保存了窗体上所有控件的非缺省属性值。直接修改窗体文件和在对象监视器中修改控件属性可以获得相同的效果。

2.3.4资源文件(.res)

资源文件中包含了二进制数据,将连接到应用程序的可执行文件中。资源文件是Delphi 自动创建的,包括应用程序的图标、应用程序版本信息及其他信息。要把资源加入到应用程序中,可以先创建一个单独的资源文件,然后把它连接到项目中。要创建资源文件,可以使用专门的资源编辑器,如Delphi中的Image Editor或者Resource Workshop等。

2.3.5项目选项和桌面设置文件(.dof, .dsk)

项目选项文件,后缀名为“dof”,存储了Project菜单列中Opetions菜单项所设置的项目选项。它是在第一次保存项目时创建的,以后每次保存项目时都会保存这个文件。

桌面设置文件,后缀名为“dsk”,存储了Toos菜单列中Options菜单项所设置的桌面选项。桌面设置和项目选项不同,项目选项于具体项目有关,而桌面设置作用于Delphi环境。

错误的项目选项和桌面设置文件在编译时可能导致像GPF这样不可预测的错误。如果出现,应当把dof和dsk文件都删除。当保存项目或退出Delphi时会重新生成这两个文件,并且恢复到默认设置。

2.3.6备份文件(.~dpr, .~pas, ~dfm)

自第二次保存开始,Delphi 6为项目文件、单元文件和窗体文件生成备份文件。备份文件是上次保存的文件的副本。项目文件的备份文件后缀名为“~dpr”;单元文件的备份文件后缀名为“~pas”;窗体文件的备份文件后缀名为“~dfm”。

删除备份文件一般不会有什么问题。如果不想生成备份文件,可以在“Editor Properties”对话框的“Display”标签页上取消“Create Backup File”选项。

2.4VCL控件的使用

用Delphi开发应用程序是一个基于组件的开发过程。Delphi为我们提供了丰富的可视和不可视控件,用于创建友好的用户界面,控制后台数据库和网络的通信等。可以说,在Delphi环境下开发应用程序主要可以分成两部分:一是人机界面的开发,即应用程序的外表;二是人机交互的实现,即各类事件的处理。为此,要规划一个应用程序,首先就要熟悉Delphi提供给我们的一些基本组件的特性。下面我们就来详细描述一些编程中经常用到的组件的特性。

2.4.1一些共同的属性

VCL的控件都由一个共同的父类TComponent继承而来。因此有很多共同的属性和触发事件。当被选中时,控件对象的属性和事件会显示在对象监视器中。一般属性可以直接敲入字符或者通过右侧的小按钮来选择;事件处理程序则可以通过双击事件右侧的空白框来让系统创建新的处理子程序,或者单击下拉按钮选择当前可用的子程序。

●Color属性

这个属性指定的是控件背景的颜色。可以在下拉选框中选择所列的色彩。需要注意的是,所列的色彩中有部分是系统设定的色彩,如clBackground就是Windows默认的背景颜色。因此,在不同的机器上,这些色彩值不一定相同。如果希望指定固定的色彩,可以直接使用色彩值来表示。色彩值的格式为$00AABBCC。这是一个十六进制的表示24bit色彩值。其中AA部分表示蓝色成分的亮度;BB部分表示绿色成分的亮度;CC表示红色成分的亮度。

●Enabled属性

这个属性用于决定用户是否可以对这些控件进行操作,如修改内容、删除项目等。当这个属性被设置为False时,用户不能通过应用程序界面来修改控件的内容,并且其显示一般也变成了灰色。但是,在应用程序中仍然可以修改控件的内容。

●Font属性

此属性用于设置显示的字体,包括字体的颜色、大小和其他的特性。

●Height和Width属性

这两个属性显示的是整个控件对象的大小,包括控件的边框和标题。

●Hint和ShowHint属性

Hint属性包括一个字符串。如果ShowHint属性设置为True,当鼠标在该控件上停留时,这个字符串就会被显示。这个属性主要用来做简单的操作提示。

●Left和Top属性

这两个属性显示了控件所在的坐标位置。需要注意的是,它们显示的是相对坐标。如果是一个面板(Panel)中的按钮(Button),则按钮的Left和Top显示的是其相对面板左上角的坐标。因此,如果要确定按钮在整个窗体(Form)中的坐标,还需要进行一定的转换。

●Name属性

这个是每个控件必须有的属性。通过这个属性我们在编程的时候来区分不同的对象。因此这个属性在一个单元(unit)中是独一无二的。

●PopupMenu属性

这个属性用于指定右键弹出菜单。系统会提供一个可用的弹出菜单列表用于选择。

●Visible属性

这个属性用于确定控件的可视性。如果不希望某些用户看到某些控件,可以将这些控件的Visible属性置为False。这样,这些控件就不会在窗体上显示,但是程序仍然可以调用这些控件。

●OnClick事件

当鼠标单击控件时,将触发此事件。此事件主要用于对用户的操作进行响应,该事件

最主要的用途就是实现按钮的功能。

●OnCreate事件

此事件在控件对象创建之后被触发,主要用于客户的初始化操作。需要注意的是各个控件对象创建的先后关系。在一个控件对象没有被创建之前,不能在程序中调用该控件的属性和方法。

2.4.2窗体(TForm)

窗体是我们在Windows编程中必须用到的一个组件,它是其他组件对象放置的地方。当我们启动Delphi时,系统会自动生成一个叫“Form1”的窗体对象。单击窗体的任何部分,我们就可以在对象监视器窗口中查看或修改窗体的属性和它具有的响应事件。

●ActiveControl属性

这个属性用于指明当窗口第一次显示时,输入光标位于窗体中的哪个控件之上。在窗体上放置可视控件后,这些控件的名称就会显示在属性选择的下拉选框中。

●AutoScroll属性

这个属性只有True和False两个值,用于控制如果可视控件超出窗体的范围是否自动显示滚动条。因为同一个应用程序在不同的机器上显示的大小比例可能差别很大,所以最好将此属性设置为True,使得用户有办法看到所有的可视控件。

●BorderStyle属性

Delphi提供了此属性的多种可选项,可以根据不同的需要来选择窗体边框的样式。其中,最特殊的是bsNone选项。选择bsNone之后,在设计期窗体上看不到大的变化。但是运行的时候,窗体将不再显示标准的Windows标题,这为我们提供了一个制作特殊风格的应用程序界面的途径。

●Caption属性

此属性用于决定窗体标题的内容,一般用于表明此窗口的主要功能,也可以在程序中进行修改。

●ClientHeight和ClientWidth属性

这两个属性用来确定实际用户界面的大小,这个大小不包括窗体的标准Windows边框。这两个属性将有助于我们了解窗体中各控件实际可用的空间大小。

●FormStyle属性

FormStyle包括4个可选项:fsNormal、fsMDIForm、fsMDIChild、fsStayOnTop。默认为fsNormal,即普通的SDI窗口。fsMDIForm和fsMDIChild用来设计MDI结构的主窗体和子窗体。fsStayOnTop窗体则将一直处于应用程序中所有窗体的最上面。如果应用程序启动的第一个窗体就是fsStayOnTop,那么这个窗口将会显示在所有Windows窗口的最前面。这个特性可以帮助我们提醒用户登录等操作。

●Icon属性

这个属性用于选择窗体的标题左侧的图标。单击对象监视器中“Icon”属性右侧的小按钮,会出现如图2-10所示的图片编辑窗口。在这里主要目的是导入外部的图标文件。单击Load按钮就会出现一个图标选择窗口。选择后的图标就显示在编辑窗口中。确认修改后,我们选择的图标就会替换原有的窗口图标。

图2-10图片编辑窗口

●Menu属性

此属性用来指明窗口的菜单。必须配合Menu控件使用。在实际应用中,我们可以在运行时修改这个属性来针对不同的环境显示不同的菜单。

●Position属性

此属性用于确定窗口创建之后的位置,包括9个可选项。可以根据这些选项的英文含义来理解。其中,poDesigned表示保持设计器所在的位置;poScreenCenter是显示在整个屏幕的中心位置;poMainFormCenter主要用于MDI结构中使得子窗口显示在主窗口的中央;poOwnerFormCenter则是被另外一个窗口打开时,与该窗口居中对齐。一般常用的属性值是poScreenCenter,这样可以保证在不同分辨率的系统下,窗口不会跑到屏幕外面。

●WindowMenu属性

这个属性主要用于MDI结构的主窗口,用于指明子窗口列在哪个菜单组中。

●WindowState属性

这个属性有3个选项:wsNormal、wsMaximized和wsMinimized。用于确定窗口初始化时的状态是普通、最大化还是最小化。

●OnClose事件

当窗口关闭时,触发这一事件。这个事件主要用于进行扫尾工作,如关闭数据库、保存修改等操作。

●OnShow事件

当窗口被显示时,触发此事件。相对于OnClose事件,此事件主要用于窗口的初始化操作。OnShow事件被触发时,工程中所有在有效窗口列表中的项目已经被创建,因此可以完成两个单元间的数据交换。

2.4.3标准控件组(Standard)

标准控件组用于实现一些基本的功能,如输入框、菜单、按钮等等。这些控件基本上在任何一个程序中都会用到。控件的图标如图2-11所示。

1 2 3 4 5 6 7 8 9 10 11 12 13 14

图2-11标准控件组控件图标

1. 菜单(TMainMenu)

菜单控件用于设置菜单项提供给窗体使用。在没有被窗体引用之前,设计期菜单对象只显示为一个不可改变大小的图标,并且在运行时不可见;如果窗体的Menu属性设置为指向该菜单,则菜单项将显示在窗体的标题下面。

图2-12菜单编辑窗口

菜单控件的主要属性有两个:Images和Items。Images属性指向一个ImageList对象,用于选择菜单项图标的集合。双击菜单对象的图标或者单击Items属性右侧的小按钮,会出现如图2-12所示的菜单编辑窗口。通过填写图中虚框部分的Caption或Name属性就可以向菜单中增加新的菜单项或菜单栏。要创建子菜单,可以右键单击此菜单项,然后选择“Create Submenu”。这些菜单项都属于TMenuItem类的实体对象,主要有以下一些属性和触发事件。

●Action属性

此属性用于指定ActionList中的默认操作。相当于用Action来代替OnClick事件处理程序。Delphi已经为我们提供了很多通用的操作过程,如窗口的堆叠、排列等。利用这些操作可以大大简化编程代码。

●Bitmap属性

这个属性用于直接导入BMP图片来指定菜单项的图标。图标指定的过程和窗体的Icon 属性设置过程类似。

●Break属性

Break属性用于将过长的菜单分列显示,一共有3个可选项:mbNone、mbBreak和mbBarBreak。mbBarBreak和mbBreak的区别只在于,使用mbBarBreak时,两列菜单中间会有一条竖的分割线。

●Caption属性

此属性用于指定菜单显示的内容。可以使用“&”号来指定紧跟其后的字符对应的按钮

为快捷按钮,即可用“Alt+字符”来代替鼠标的单击操作。这个特性主要用于键盘输入时快捷操作菜单,避免反复在鼠标和键盘之间移动。如果Caption属性被设置为减号“-”,则在菜单上显示为横向的分割线。这样就可以进行简单的功能分组。

●Checked属性

这个属性设置菜单项是否被选中,主要用于判断当前菜单的状态。当Checked属性值为“True”时,会在菜单项前显示一个勾,以表示该菜单项被选中。

●ShortCut属性

ShortCut属性有一长串的可选项,包括了Windows所允许的各种快捷键组合,如F1、Ctrl+Q、Ctrl+Alt+W和Shift+Ctrl+F1等。对常用的菜单进行快捷键设置,可以大大提高工作的效率。

2. 弹出菜单(TPopupMenu)

弹出菜单主要用于设置右键弹出菜单的功能项,设置的过程和MainMenu的设置方法一样。

3. 文本标签(TLabel)

文本标签主要用于对窗体上的其他控件实现的功能进行简单地说明。主要属性就是Caption,即标签显示的内容。另外,AutoSize属性设置为True时,标签的大小会自动根据Caption内容的长短来确定。但是,Delphi对于中文字体的宽度判断不是十分准确,往往导致部分文字无法显示。这时候我们最好将AutoSize属性设置为False,并且手工设置标签的大小。

4. 文本编辑框(TEdit)

这是最常用的一个输入框。用于显示文本和输入或修改文本。但是都是单行的文本。该控件主要属性就是Text,这个属性包含显示或输入的字符串。在程序中需要调用用户输入内容的地方就需要读取这个属性值。在设计期时,设置的Text属性值就是程序运行时的初始值。

文本编辑框还有一个OnChange事件,当修改其中的文本时触发。这个事件可以用于及时判断用户输入的内容,显示相关的信息。

5. 多行文本编辑框(TMemo)

多行文本编辑框也是用于输入文本。不同的是,输入的文本可以是多行,就象Windows记事本中的文本。可以用Text属性来访问整个文本,包括回车符;也可以用Lines 属性来一行行地访问。Memo对象的WordWrap属性用于设置是否自动回车。ScrollBars属性用于设置滚动条的显示。

同Edit一样,Memo对象也有OnChange事件,用于对修改进行处理。

6. 按钮(TButton)

按钮用于响应用户的鼠标单击操作,因此按钮最重要特性的就是OnClick事件。另外,Caption属性可以设置按钮上的文字显示。ModalResult属性中有一些备选的按钮类型,主要针对以ModalShow的方式显示的窗体的默认操作,如OK、Cancel、Yes、No等。这些默认操作会在ModalShow中返回相应的操作值,用于判断用户的选择。

7. 多选项(TCheckBox)

多选项用于输入用户的选择。各个项目之间可以独立的选择,互不影响。主要属性包括Caption和Checked。

8. 单选按钮(TRadioButton)

单选按钮也用于输入用户的选择。但是在一个组或者窗口中,每次只能有一个选项被选中。

9. 列表选单(TListBox)

这是另外一种类型的选择控件。可选值以列表的形式显示在一个文本框内。这些可选值保存在Items属性中。MultiSelect属性用于设置是否允许多选。

10. 组合选框(TComboBox)

组合选框是列表选单和文本输入框的组合。即允许在下拉选单中选择,也允许直接输入文本。备选项文本同样放在Items属性中。

11. 组合框(TGroupBox)

此控件用于集合一组控件,类似于在窗体中的一个小窗体。使得移动一组控件更加简单。

12. 单选按钮组合框(TRadioGroup)

单选按钮组合框是单选按钮的一个增强,专门用于管理一组互斥选项。要添加单选项,只需要修改Items属性中的文本。每一行文本就是一个选项。而ItemIndex属性指明了当前选择的按钮位置。-1表示没有按钮被选中,0表示第一个按钮被选中,以此类推。

13. 面板(TPanel)

面板类似于小窗体,同样用于管理一组控件。同时还可以在面板上放置显示画面,例如OpenGL的画面等。

14. 操作列表(TActionList)

操作列表用于集中各种操作,并且Delphi本身提供了一些常用的操作,可以大大简化代码的编写。双击窗体上的ActionList图标,将出现如图2-13所示的编辑界面。

图2-13操作列表编辑窗口

右键单击窗口,会出现包含添加操作(New Action)和添加标准操作(New Standard Action)的菜单。通过这两项,我们可以自定义操作,也可以引用系统提供的操作。如果添加标准操作,则会出现如图2-14所示的选择窗口。从选择列表中我们可以看到包括数据库操作、编辑文本操作、帮助显示和窗口操作,这四大类20多项标准的操作。

图2-14标准操作选择窗口

根据操作类型的不同,相应的属性也不尽相同。如数据库操作项目有DataSource属性,其它类型的则没有。每个操作的主要事件是OnExecute,当操作被执行的时候触发。通常就是与操作关联的按钮或菜单被单击时触发。

2.4.4附加控件组(Additional)

附加控件组如图2-15所示。主要是对标准控件的增强。

1 2 3 4 5

图2-15附加控件组控件图标

1. 图形按钮(TBitBtn)

图形按钮是按钮的增强,允许在按钮中加入图片。这对于设计一个漂亮的界面十分有用。按钮的图片可以通过Glyph属性来设置,同样也会出现一个如图2-10的图片编辑窗口。另外,Delphi也提供了一组默认的图形按钮,这些可以在Kind属性中选择。这些图形按钮包括一些基本的操作,如Abort、Ok、Cancel和Help等等。其中Help类型可以方便地调用Windows帮助文件。

2. 屏蔽文本编辑框(TMaskEdit)

MaskEdit是单行文本编辑框Edit的一个扩展。在Edit的特性之上,增加了屏蔽属性。通过设定EditMask属性,可以限制文本编辑框中输入的内容。例如,只允许输入数字,或

者只允许输入大写字母等。EditMask属性的设置的基本规则如表2-1所列。

表2-1EditMask设置主要规则

3. 字符串表格(TStringGrid)

字符串表格以表格的形式规范和显示字符串阵列。主要属性和触发事件如下:

●ColCount和RowCount属性

这两个属性用于设定总的栅格数,必须大于固定栅格数。可以在程序中改变这两个属性值来添加或删除行列。添加时,新的行列内容为空;删除时,将外围数据剪切掉。

●DefaultColWidth和DefaultRowHeight属性

这两个属性用于设置默认的行高和列宽。在程序中可以通过改变ColWidths和RowHeights属性来设置指定行列的高度和宽度。

●FixedCols和FixedRows属性

这两个属性用于设定固定的行列数,也就是字符串表格中的标题栏,一般显示为按钮的外表。固定的行列数可以为零,但是不能超过总的行列数。

●Cells属性

Cells属性是个数组,用来访问字符串列表中指定行列的数据。在设计器中这个属性不显示在对象监视器中,主要是在程序中进行修改。因此,如果有标题栏,需要在创建时用程序指定。

4. 图像控件(TImage)

图像控件用于显示和修改图像。其主要属性如下:

●AutoSize属性

此属性为布尔值。当值为True时,控件会自动适应图片的大小。也就是图片以1:1的比例进行显示。最好配合带滚动条的窗口来使用,以免破坏整体的布局。

●Center属性

这个属性用于确定图像在显示框中是否居中对齐。因为图像的主体通常在中间位置,使用这个属性,可以让主体首先显示出来。

●Picture属性

此属性用于导入图片,同样会出现如图2-10所示的界面。允许导入的图片类型包括BMP位图、JPG压缩格式、ICON图标和Windows默认矢量图形WMF等。但是只有在BMP格式下,允许是用Picture的BitMap属性来读取或修改图像中像素点的色彩值。如果格式不匹配,一调用BitMap属性就会将图像清空。因此JPG之类的图像,需要先转换成BMP才可以编辑修改。

●Stretch属性

这个属性用于将图像按照控件的大小进行缩放,形成一个缩略图。主要用于简单的识别或者并不关心细节的场合。

●Transparent属性

此属性用来确定图像是否允许透明显示。

5. 图表控件(TChart)

这是由第三方提供的一个用于绘制统计图的控件。双击这个控件会出现如图2-16所示的编辑界面。可以看到允许设置的内容很多。主要包括两大块:一是整个图表的显示属性;二是图表内系列曲线的显示属性。

图2-16图表控件编辑窗口

图表的显示属性包括:一般属性(General标签页),可以设置页边距和滚动条等属性;坐标轴属性(Axis标签页),用于设置坐标轴显示的位置和刻度;标题属性(Titles标签页),用于设置图表标题显示的内容、字体和位置等属性;坐标系列数据显示属性(Legend标签页),用于确定各数据点坐标列表显示的位置;面板属性(Panel标签页),用于设置曲线所在区域的背景、边框等属性;分页属性(Paging标签页),用于确定每页显示的数据点数,从而进行分页;墙壁属性(Walls标签页),用于三维显示时,左侧、底部和背面三部分的色彩和字体等设置;三维属性(3D标签页),用于设置三维显示的深度、角度等属性。

系列曲线的显示属性,必须在创建图表系列之后才能设置。创建图表系列的方法是在

整体图表显示属性的Series页单击“Add...”按钮。此时会出现如图2-17所示的“TeeChart Gallery”。在Standard标签页,有11种图表类型可以选择;在Functions标签页,则有7种运算法则。另外,可以选择是否使用三维显示。单击“OK”按钮后,即创建了一个图表系列。

图2-17图表类型选择窗口

当创建了图标系列后,图表编辑窗口中的系列编辑页(Series标签页)中,就会出现图表系列的一些可编辑项:格式设定(Format标签页),用于设定线条的粗细、模式和颜色等;数据点显示特性(Point标签页),主要设定是否在曲线上显示数据点和数据点的大小形式等属性;普通设定(General标签页),这儿的设定和整个图表显示属性的设定有些类似,可以修改坐标、数据点数据列表和数据格式等属性;标签设定(Marks标签页),标签是对数据点的说明,内容可以包括X轴或Y轴的数据、所占的百分比和数据点的标识等;数据源定义(Data Source标签页),这是最重要的一项,可选择的包括无数据(None)、随机数(Random Values)和函数(function)。图表显示所需的实际数据可以用TLineSeries 的AddX、AddY或者AddXY函数来追加。

2.4.5BDE数据访问控件组(BDE)

数据访问控件组中的控件是数据库应用程序中经常要用到的。它们负责连接到数据库,并且从数据库提取数据。但是这些控件不直接用于显示数据,因此都属于不可视控件。控件组成员的图表如图2-18所示。

1 2 3

图2-18数据访问控件组

1. 数据表(TTable)

数据表是主要的数据提取控件之一。不过,使用这种控件时,数据库将返回数据表中

所有的数据。因此,数据交换量很大。使用该控件的好处是可以直接提交修改的内容。其主要属性如下:

●Active属性

此属性为布尔值。当设置为True时,会尝试连接数据库,并且提取指定的数据。在设计期,可以用来检查设置条件是否正确。

●DatabaseName属性

此属性用于指定所要连接的数据库名称。这些数据库都是在BDE中注册过的。

●Filter和Filtered属性

这两个属性用来控制过滤条件,以显示适当的记录。Filter中保存的是一个过滤条件字符串,一般形式为“ID>12”。Filtered是一个布尔值,用于控制是否使用过滤条件。

●MasterSource和MasterFields属性

这两个属性主要用于建立主细表,即用另外一个表的某个字段值来限制数据表的显示内容。MasterSource必须指向一个TDataSource控件对象。单击MasterFields属性右边的小按钮,会出现如图2-19所示的设置界面。在上方的左右两个框中分别有主细表的字段列表,可以通过中间的“Add”按钮来建立字段之间的连接关系。

图2-19主从关系设置界面

●ReadOnly属性

此属性用于确定提取的数据是否允许修改。

●TableName属性

这个属性用于指定数据表的名称。当DatabaseName属性设置正确时,系统会自动连接到数据库,并且列出数据库中可用的数据表。

2. 查询(TQuery)

查询的使用比数据表更加灵活,支持标准的SQL语言。可以设置选择条件、排序和分组等。并且这些操作都是在数据库端完成的。因此,客户端和数据库服务器端的数据交换量可以减小很多。相比数据表而言,查询的缺点是不能直接修改数据,因为查询获得的数据大部分混合了几个数据表的数据。因此,数据的修改,也要用SQL来实现。查询除了Active、DatabaseName、Filter和Filtered属性和数据表相同以外,另外有SQL、Params和

DELPHI 中WEBBROWSER控件详解实例

Delphi中WebBrowser控件详解实例 2008-10-18下午06:58 很久都没有原创了,前几天帮朋友做了个网址发布程序,主要应用到了WebBrowser控件。今天主要给大家演示一下过程,让大家学习一下Delphi工具。 WebBrowser功能: 1。自动加载网页 2。去除WebBrowser滚动条 3。WebBrowser自身打开页面 4。禁止右键 1。首先,新建一个FROM窗体: 2。加入一个WEBBROWSER控件

3。调整后如下: 4.这样一个webbrowser就完成了,下一步我们来让程序打开后自动加载一个网页。 核心代码:WebBrowser1.Navigate('https://www.doczj.com/doc/ee12127535.html,'); 双击窗体灰色处,对窗体进行初始化,在代码窗口中输入(Begin与End间输入核心代码): procedure TForm1.FormCreate(Sender:TObject); begin WebBrowser1.Navigate('https://www.doczj.com/doc/ee12127535.html,');//窗体初始化完成WEBBROWSER加载一个网页end; 5。下面我们来实现禁止WEBBROWSER控件的滚动条功能:

核心代码:WebBrowser1.oleobject.Document.body.Scroll:=‘no’; 利用这个代码去掉滚动条的前提是webbrowser中必须有打开的网页,也就是在网页加载完完毕后再去掉滚动条。所以首先要判断页面是否加载完毕,如果加载完毕,就执行上面的语句 去掉滚动条。这时就要引入一个按扭控件来触发程序 加入SPEEDBUTTEN 调整形后:

Delphi如何使用基本的绘图函数绘制统计图

一个windows自带的画图工具是无论如何也不能满足我们的画图需要的,很多效果都需要我们在另外的工具中来实现。这些高级的功能是如何实现的呢,如何操纵一些基本的属性和函数,让它们最终能作出我们想要的效果呢?这里我们以绘制统计图来说明这些问题。 解决思路―― 这里,我们暂且先撇开具体的问题,综合地一下讨论画图的问题。 画图工具是基本元素的具体实现,对于我们初学者来说,还是有很好的参考价值的,在delphi 5中有一个自带的工程例子“……Borland\Delphi5\Demos\Doc\Graphex”,这个例子可以实现一些基本的绘图功能。对这个例子多加修改,一定会有所收获的。这里就不列出它的详细代码了,有心的读者可以自己找到这个例子。我这里只是想综合地讨论这方面的问题。使用DELPHI编写绘图软件的灵魂就在于操作画布,画笔和刷子,尽可能地挖掘它们的属性和相关参数的设置。 (一)画布 画布,画笔和刷子之间的关系很明了.其实,画笔和刷子都是画布的一个属性.而画布也只是TForm,TImage,TShape等组件对象的一个属性,专门负责与图象相关的信息打交道.它的主要作用可以概括如下几点: 1.指定使用画笔,刷子和字体的使用类型; 2.绘制和填充指定形状的线或图形; 3.修饰和改变图象; 画布的主要属性有: Brush--指定填充图形和背景的样式 CanvasOrientation--指定画布的定位类型,有coLeftToRight, coRightToLeft两个属性; ClipRect--指定剪切矩形的边界; CopyMode--指定图形图象的复制模式; Font--指定画布上使用的字体; Handle--为画布指定窗口GDI对象的设备描述表; LockCount--指定画布被别的线程锁定的次数; Pen--指定画布上使用的画笔,具体见下面描述; PenPos--指定画笔当前的位置; Pixels--指定当前剪切矩形的象素颜色; TextFlags--指定字体在画布上的显示方式,有ETO_CLIPPED,ETO_OPAQUE,ETO_RTLREADING,ETO_GL YPH_INDEX,ETO_IGNORELANGUAGE,ETO_NUMERICSLOCALETO_NUMERIC SLATIN等值可选; 画布相关的API函数及其注释如下: Arc--按指定方式画一条弧; BrushCopy--把位图复制到指定的画布的矩形中,用画布刷子颜色替换位图的颜色; Chord--按指定方式画弦; CopyRect--从一个矩形区域复制部分图象到另一个矩形区域; Draw--用指定参数在指定位置画图; DrawFocusRect--按指定焦点风格,通过异或操作来绘制一焦点矩形; Ellipse--按指定参数画一椭圆; FillRect--按指定的刷子填充一矩形; FloodFill--使用当前选定的刷子填充指定设备描述表中的一块区域;

【VIP专享】delphi 三层架构CS简单例子一步步做

delphi 三层CS架构一步步建立的简单例子 所谓三层: (1) 客户端 (2) 服务器端 (3) 数据库 在数据访问时,使得客户端必须通过服务器来访问数据库。提高了系统的安全性。 在Delphi中可以使用Socket或者Dcom组件来连接他们相互间的通讯。 本例使用SOCKET组件. DCOM用在局域网, SOCKET用在互联网. 环境为windows xp+ delphi 7 + access2000 创建过程: 1、请用ACCESS2000新建一个数据库database02.mdb. 2、请在delphi7执行file-new- application, 新建一个桌面, 上面放一个label, label.caption =’服务器端已运行….’

3、接下来在delphi7执行file --new--other,选择"Multitier"--"Remote data module"。在跳出来的对话框里面输入名称(任意),例如: AppSqlConn。选择确定,进入remote data module窗口。 界面如下图所示

4、加入组件:adodataset,点击connectionstring属性,点击后面的…,进 入设定连接窗口。在选择数据库中选择自己想要使用的数据库 database02.mdb。一般只要地址正确、用户名和密码无误,肯定可以连接通过。确定。 3、ADODATASET1在commandtext中点击后面的…,啥也不用设定,默认 配置; 4、ADODATASET1将active属性设置为false。

5、再加入组件:datasetprovider。设定其dataset属性为上面的adodataset1。 5.1 接着设置datasetprovider1的属性,poallowcommandtext=true, 其他的参数默认即可. datasetprovider1的属性如下图所示

delphi数学模块函数、过程大全

function ArcCos(const X : Extended) : Extended; overload; function ArcCos(const X : Double) : Double; overload; function ArcCos(const X : Single) : Single; overload; function ArcSin(const X : Extended) : Extended; overload; function ArcSin(const X : Double) : Double; overload; function ArcSin(const X : Single) : Single; overload; function ArcTan2(const Y, X: Extended): Extended; procedure SinCos(const Theta: Extended; var Sin, Cos: Extended) register; function Tan(const X: Extended): Extended; function Cotan(const X: Extended): Extended; { 1 / tan(X), X <> 0 } function Secant(const X: Extended): Extended; { 1 / cos(X) } function Cosecant(const X: Extended): Extended; { 1 / sin(X) } function Hypot(const X, Y: Extended): Extended; { Sqrt(X**2 + Y**2) } function RadToDeg(const Radians: Extended): Extended; inline; { Degrees := Radians * 180 / PI } function RadToGrad(const Radians: Extended): Extended; inline; { Grads := Radians * 200 / PI } function RadToCycle(const Radians: Extended): Extended; inline; { Cycles := Radians / 2PI } function DegToRad(const Degrees: Extended): Extended; inline; { Radians := Degrees * PI / 180} function DegToGrad(const Degrees: Extended): Extended; function DegToCycle(const Degrees: Extended): Extended; function GradToRad(const Grads: Extended): Extended; inline; { Radians := Grads * PI / 200 } function GradToDeg(const Grads: Extended): Extended; function GradToCycle(const Grads: Extended): Extended; function CycleToRad(const Cycles: Extended): Extended; inline; { Radians := Cycles * 2PI } function CycleToDeg(const Cycles: Extended): Extended; function CycleToGrad(const Cycles: Extended): Extended; { Hyperbolic functions and inverses } function Cot(const X: Extended): Extended; inline; { alias for Cotan } function Sec(const X: Extended): Extended; inline; { alias for Secant } function Csc(const X: Extended): Extended; inline; { alias for Cosecant } function Cosh(const X: Extended): Extended; function Sinh(const X: Extended): Extended; function Tanh(const X: Extended): Extended; function CotH(const X: Extended): Extended; inline; function SecH(const X: Extended): Extended; inline; function CscH(const X: Extended): Extended; inline; function ArcCot(const X: Extended): Extended; { IN: X <> 0 } function ArcSec(const X: Extended): Extended; { IN: X <> 0 } function ArcCsc(const X: Extended): Extended; { IN: X <> 0 } function ArcCosh(const X: Extended): Extended; { IN: X >= 1 } function ArcSinh(const X: Extended): Extended;

DELPHI常用函数说明

一、数据类型转换函数1 在我们编写程序当中,根据不同情况,会使用到多种数据类型。当要对不同的类型进行操作时,必须要将不同的类型转换成同样的类型。因此熟练地掌握数据类型的转换是非常重要的。 1.FloatToStr 功能说明:该函数用于将“浮点型”转换成“字符型”。 参考实例: Edit1.Text := FloatToStr(1.981); 2.IntToStr 功能说明:该函数用于将“整数型”转换成“字符型”。 参考实例: S := IntToStr(10);(注:S为String类型变量。) 3.IntToHex 功能说明:该函数用于将“十进制”转换成“十进制”。该函数有二个参数1。第一个参数为要转换的十进制数据,第二个参数是指定使用多少位来显示十六进制数据。 参考实例: Edit1.Text := IntToHex('100', 2);

执行结果,Edit1.Text等于64。 注意:Delphi没有提供专门的“十六进制”转换为“十进制”的函数。使用StrToInt函数可以实现这个功能。具体代码是:I := StrToInt('S\' + '64'); 这时I等于100。加上一个'S\'即可将“十六进制”转换为“十进制”。 4.StrToInt 功能说明:该函数用于将“字符型”转换成“整数型”。 参考实例: I := StrToInt('100'); 注意:不能转换如StrToInt('ab')或StrToInt('好')这样的类型,因为他们并不存在数字型。 5.StrToFloat 功能说明:该函数用于将“字符型”转换成“浮点型”。 参考实例: N := StrToFloat(Edit1.Text); 注意:Edit1.Text中的内容为1.981(凡在Edit 控件中显示的文本均为字符串)。N为Double类型,用于保存转换后的浮点型数据。

Delphi调用WebService的实例(非常经典)

Delphi 调用webservice 经典实例 Dispatch: 派遣,分派 Invoke: 调用 Invokable: 可调用接口 TReomtable: WebService中自定义类都是继承自该类 TSOAPAttachment: Attachment:附件,一种流类型,可以返回流数据 CGI:(EXE) ISAPI:(DLL) Base64编码: uses EncdDecd; s := EncodeString(s); //加 base64 编码 s := DecodeString( str ); //解码 UTF8: UTF8 是8位的UNICODE字符,而ASCII是7位 ,gb2312和unicode是2字节/字,utf8是3字节/字utf8类似以前的8位转7位的编码,是为了在网络间不同系统的通讯方便而作的转换。几乎所有用.Net写的WebService只支持DOC方式、Delphi写的只支持RPC方式;J2ME目前对Web Service的支持仅限于RFC172,而 RFC172要求必须为DOC方式(sun怎么偏袒MS?)! 为了在设计中减少障碍,下面还介绍几个概念。 1) SOAP:SOAP是一种简单有效的数据传输协议,用于分布式网络环境下数据信息交换,它以XML 作为数据传输的格式,搭配Internet上标准的传输协议HTTP、SMTP、TCP等来传送信息。从本质上看,SOAP事实上只是将Request和Response经由XML格式把数据打包,达到双方沟通的目的。 2) WSDL:WSDL(Web Service Description Language)是一种以XML格式描述的Web Service语言,当Web Service Provider 要对外公布提供的 Web Service,就需要通过WSDL来构建描述语言。在WSDL中有两个非常重要的要素::此WSDL文件所要描述的Web Service集合;每一个Port代表外界Client可以和此Service沟通的一个进入点,一个Port会指定一个Binding方式。 3):处理中文乱码的问题: 将HttpRio的 Converter 的 Options 的 soUTF8InHeader 设为 True 将生成soap消息的HTTPSoapDispatcher控件,添加encoding为gb2312 https://www.doczj.com/doc/ee12127535.html,eUTF8InHeader := True; 4)在Delphi中,能够传递的自定义类型的对象要继承TRemotable, 5:修正一个服务器端的一个Bug:将ISAPIThreadPool和ISAPIApp的次序变一下:ISAPIApp必须在 ISAPIThreadPool之前: uses ... ISAPIApp, ISAPIThreadPool 解决如下错误: Received content of invalid Content-Type setting:text/html -SOAP"expects"text/xml" 6:"XML document must have a top level element. Line: 0" 错误,我该如何解决??哈纳斯 (2002-08-05 17:26:00) 我也曾碰到同样的问题解决方法是:别设httprio的wsdllocation,设它的url 如http://localhost/mydir/project1.exe/wsdl/IFIRST mydir是你的可执行的虚拟目录,IFIRST是你定义的接口名 ********************************************************************* **************************

Delphi函数大全

Delphi函数大全 首部function Languages: TLanguages; $[ 功能返回系统语言对象 说明通过此函数可以得到系统的语言环境 参考type 例子 12a12c12a12c. 参考 例子:= IsValidIdent; ━━━━━━━━━━━━━━━━━━━━━ 首部function IntToStr(Value: Integer): string; overload; $[ 首部function IntToStr(Value: Int64): string; overload; $[ 功能返回整数Value转换成字符串 说明Format('%d', [Value]) 参考function 例子:= IntToStr; ━━━━━━━━━━━━━━━━━━━━━ 首部function IntToHex(V alue: Integer; Digits: Integer): string; overload; $[ 首部function IntToHex(V alue: Int64; Digits: Integer): string; overload; $[ 功能返回整数Value转换成十六进制表现结果;Format('%.*x', [Digits, Value]) 说明参数Digits指定字符最小宽度;最小宽度不足时将用0填充 参考function 例子:= IntToHex, ; ━━━━━━━━━━━━━━━━━━━━━ 首部function StrToInt(const S: string): Integer; $[ 功能返回字符串S转换成整数 说明字符串非整数表达时将引起异常 参考procedure 例子:= StrToInt; ━━━━━━━━━━━━━━━━━━━━━ 首部function StrToIntDef(const S: string; Default: Integer): Integer; $[ 功能返回字符串S转换成整数 说明字符串非整数表达时则返回默认值Default 参考procedure 例子:= StrToIntDef, 0); ━━━━━━━━━━━━━━━━━━━━━ 首部function TryStrToInt(const S: string; out Value: Integer): Boolean; $[ 功能返回字符串S转换成整数V alue是否成功 说明字符串非整数表达时返回False并且Value将输出为0 参考procedure 例子 ..);打开失败则返回负数 参考function

delphi7串口通信(spcomm控件)实例

Delphi7串口通信(spcomm控件)实例 最近在用delphi7做串口通信,网上找了很多例程,复制粘贴运行就没有能通过的,再次鄙视一下列位先行者,你们帮人倒是帮到底啊,没一个是拿过来能用的,太坑了,在N天的努力下(鄙人比较笨)终于通过串口接收到数据,希望给后来人予以帮助,程序如下: 功能简介 功能比较简单,只是从串口接收单片机发送的数据,给memo1 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes,

Graphics, Controls, Forms,

Dialogs, SPComm, StdCtrls; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; Comm1: TComm; Memo1: TMemo; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Comm1ReceiveData(Sender: TObject; Buffer: Pointer;BufferLength: Word); procedure Comm1ModemStateChange(Sender: TObject; ModemEvent: Cardinal); private { Private declarations } public { Public declarations } end; var

delphi_三层架构简单例子.

delphi 三层架构简单例子(经测试成功2009-01-22 下午 02:45所谓三层: (1 客户端 (2 服务器端 (3 数据库在数据访问时,使得客户端必须通过服务器来访问数据库。提高了系统的安全性。在Delphi中可以使用Socket或者Dcom来连接他们相互间的通讯。如果使用Scocket在系统使用时必须提供Scocket连接器,而Dcom 则不用。客户端和服务器的连接需要Broker来联系。环境为winxp sp2 + delphi 7 + db7.(MSSQL2000 创建过程: 1、请不要新建application.file-new-activex-activex library,file --new--other,选择"Multitier"--"Remote data module"。在跳出来的对话框里面输入名称(任意),例如:AppSqlConn。选择确定,进入remote data module窗口。 2、加入组件:adodataset,点击connectionstring属性,点击后面的…,进入 设定连接窗口。选择:use connection string--build,在提供程序中选择:"Microsoft ole db provider for sql server",在连接中:服务器名称输入sql server的ip地址,登录信息中输入用户名和密码(sql server),在选择数据库中选择自己想要使用的数据库。一般只要地址正确、用户名和密码无误,肯定可以连接通过。确定退出。 3、在commandtext中点击后面的…,进入sql 语句设定,根据自己的要求设定。 4、将active属性设置为true。只要前面的设定是正确的,这里应该顺利通过。 5、加入组件:datasetprovider。设定其dataset属性为上面的adodataset。 6、到此服务器端已经设置完成。请保存并且运行一次,从而使服务注册。 7、运行delphi的bin目录下面的scktsrvr,因为下面要使用socket连接。运行后任务栏中出现socket server的图标。 8、新建程序(application),然后file--new--data module,会创建客户端的data module。 9、加入组件:socketconnection,在address中输入sql server的ip地址,然后在servername中输入刚才创建的remote data module的服务程序。程序会自动在serverguid中加入id。然后选择connected属性为true。只要 此处不报告错误,此程序基本成功了。 10、加入组件:clientdataset,选择remoteserver属性为socketconnection,选择providename为服务器程序的datasetprovider。然后选择active属性为true。 11、到程序的form窗口状态,首先选择file--use unit,选择上面创建的data module,确定。然后加入组件datasource 和dbgrid。选择datasourece的dataset属性为data module的clientdataset,选择dbgrid的datasource为这里的datasource组件。现在应该可以看到dbgrid的窗口中

(DELPHI)API函数大全

(DELPHI)API函数大全 1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接WNetAddConnection2 创建同一个网络资源的连接WNetAddConnection3 创建同一个网络资源的连接WNetCancelConnection 结束一个网络连接 WNetCancelConnection2 结束一个网络连接 WNetCloseEnum 结束一次枚举操作 WNetConnectionDialog 启动一个标准对话框,以便建立同网络资源的连接WNetDisconnectDialog 启动一个标准对话框,以便断开同网络资源的连接WNetEnumResource 枚举网络资源 WNetGetConnection 获取本地或已连接的一个资源的网络名称WNetGetLastError 获取网络错误的扩展错误信息WNetGetUniversalName 获取网络中一个文件的远程名称以及/或者UNC (统一命名规范)名称 WNetGetUser 获取一个网络资源用以连接的名字 WNetOpenEnum 启动对网络资源进行枚举的过程 2. API之消息函数 BroadcastSystemMessage 将一条系统消息广播给系统中所有的顶级窗口GetMessagePos 取得消息队列中上一条消息处理完毕时的鼠标指针屏幕位置GetMessageTime 取得消息队列中上一条消息处理完毕时的时间PostMessage 将一条消息投递到指定窗口的消息队列PostThreadMessage 将一条消息投递给应用程序RegisterWindowMessage 获取分配给一个字串标识符的消息编号ReplyMessage 答复一个消息 SendMessage 调用一个窗口的窗口函数,将一条消息发给那个窗口SendMessageCallback 将一条消息发给窗口 SendMessageTimeout 向窗口发送一条消息 SendNotifyMessage 向窗口发送一条消息 3. API之文件处理函数 CloseHandle 关闭一个内核对象。其中包括文件、文件映射、进程、线程、安全和同步对象等 CompareFileTime 对比两个文件的时间 CopyFile 复制文件 CreateDirectory 创建一个新目录 CreateFile 打开和创建文件、管道、邮槽、通信服务、设备以及控制台CreateFileMapping 创建一个新的文件映射对象 DeleteFile 删除指定文件

delphi函数参考手册

delphi函数参考手册 名称类型说明 abort 函数引起放弃的意外处理 abs 函数绝对值函数 addexitproc 函数将一过程添加到运行时库的结束过程表中addr 函数返回指定对象的地址 adjustlinebreaks 函数将给定字符串的行分隔符调整为cr/lf序列align 属性使控件位于窗口某部分 alignment 属性控件标签的文字位置 allocmem 函数在堆栈上分配给定大小的块 allowgrayed 属性允许一个灰度选择 ansicomparestr 函数比较字符串(区分大小写)ansicomparetext 函数比较字符串(不区分大小写)ansilowercase 函数将字符转换为小写 ansiuppercase 函数将字符转换为大写 append 函数以附加的方式打开已有的文件 arctan 函数余切函数 assignfile 函数给文件变量赋一外部文件名 assigned 函数测试函数或过程变量是否为空 autosize 属性自动控制标签的大小 backgrounddi2001.jpg 属性背景色 beginthread 函数以适当的方式建立用于内存管理的线程bevelinner 属性控件方框的内框方式

bevelouter 属性控件方框的外框方式 bevelwidth 属性控件方框的外框宽度 blockread 函数读一个或多个记录到变量中blockwrite 函数从变量中写一个或多个记录borderstyle 属性边界类型 borderwidth 属性边界宽度 break 命令终止for、while、repeat循环语句 brush 属性画刷 caption 属性标签文字的内容 change 函数改变文件的后缀 chdir 函数改变当前目录 checked 属性确定复选框选中状态 chr 函数返回指定序数的字符 closefile 命令关闭打开的文件 color 属性标签的颜色 columns 属性显示的列数 comparestr 函数比较字符串(区分大小写)concat 函数合并字符串 continue 命令继续for、while、repeat的下一个循环copy 函数返回一字符串的子串 cos 函数余弦函数 ctl3d 属性是否具有3d效果

delphi常用函数大全

delphi常用函数大全(转) Abort函数引起放弃的意外处理 Abs函数绝对值函数 AddExitProc函数将一过程添加到运行时库的结束过程表中 Addr函数返回指定对象的地址 AdjustLineBreaks函数将给定字符串的行分隔符调整为CR/LF序列Align属性使控件位于窗口某部分 Alignment属性控件标签的文字位置 AllocMem函数在堆栈上分配给定大小的块 AllowGrayed属性允许一个灰度选择 AnsiCompareStr函数比较字符串(区分大小写) AnsiCompareText函数比较字符串(不区分大小写) AnsiLowerCase函数将字符转换为小写 AnsiUpperCase函数将字符转换为大写 Append函数以附加的方式打开已有的文件 ArcTan函数余切函数 AssignFile函数给文件变量赋一外部文件名 Assigned函数测试函数或过程变量是否为空 AutoSize属性自动控制标签的大小 BackgroundColor属性背景色 BeginThread函数以适当的方式建立用于内存管理的线程 BevelInner属性控件方框的内框方式 BevelOuter属性控件方框的外框方式 BevelWidth属性控件方框的外框宽度 BlockRead函数读一个或多个记录到变量中 BlockWrite函数从变量中写一个或多个记录 BorderStyle属性边界类型 BorderWidth属性边界宽度 Break命令终止for、while、repeat循环语句 Brush属性画刷 Caption属性标签文字的内容 ChangeFileExt函数改变文件的后缀 ChDir函数改变当前目录 Checked属性确定复选框选中状态 Chr函数返回指定序数的字符 CloseFile命令关闭打开的文件 Color属性标签的颜色 Columns属性显示的列数 CompareStr函数比较字符串(区分大小写) Concat函数合并字符串 Continue命令继续for、while、repeat的下一个循环 Copy函数返回一字符串的子串 Cos函数余弦函数 Ctl3D属性是否具有3D效果 Cursor属性鼠标指针移入后的形状 Date函数返回当前的日期 DateTimeToFileDate函数将DELPHI的日期格式转换为DOS的日期格式DateTimeToStr函数将日期时间格式转换为字符串DateTimeToString函数将日期时间格式转换为字符串 DateToStr函数将日期格式转换为字符串

DELPHIXE移动开发调用的例子方法

调用的例子方法: uses Androidapi.JNI.GraphicsContentViewText, FMX.Helpers.Android, https://www.doczj.com/doc/ee12127535.html,; procedure Call_URI(const AAction : JString;const AURI: string); var uri: Jnet_Uri; Intent: JIntent; begin uri := StrToJURI(AURI); Intent := TJIntent.JavaClass.init(AAction, uri); {Intent.putExtra() 如果是要发短信等复杂的应用,需要传递各种其他的参数.要用到Intent.putExtra()传递多个参数. 这里只封装最简单的,具体Intent.putExtra()的用法,可以查询Java的资料.大把的 } SharedActivityContext.startActivity(Intent); end; //使用例子: //打电话 Call_URI(TJIntent.JavaClass.ACTION_CALL, 'tel:137114553XX'); //打开地图显示某个坐标点 Call_URI(TJIntent.JavaClass.ACTION_VIEW, 'geo:38.899533,-77.036476'); //发送电子邮件 Call_URI(TJIntent.JavaClass.ACTION_SENDTO, 'mailto:wr960204@https://www.doczj.com/doc/ee12127535.html,'); //播放音乐 Call_URI(TJIntent.JavaClass.ACTION_VIEW, 'file:///sdcard/download/最炫民族风.mp3'); 调用的例子方法: ===========================我是分割线================================================== android 系统常用URI: android 系统常用URI: android 系统常用URI: android 系统常用URI: 显示网页: 1. Uri uri = Uri.parse("https://www.doczj.com/doc/ee12127535.html,"); 2. Intent it = new Intent(Intent.ACTION_VIEW,uri); 3. startActivity(it); 显示地图:

Delphi字符串处理函数

【字符串函数大全】 首部function AnsiResemblesText(const AText, AOther: string): Boolean; $[StrUtils.pas 功能返回两个字符串是否相似 说明ANSI(American National Standards Institute)美国国家标准协会;不区分大小写参考function StrUtils.SoundexProc; var StrUtils.AnsiResemblesProc 例子CheckBox1.Checked := AnsiResemblesText(Edit1.Text, Edit2.Text); ━━━━━━━━━━━━━━━━━━━━━ 首部function AnsiContainsText(const AText, ASubText: string): Boolean; $[StrUtils.pas 功能返回字符串AText是否包含子串ASubText 说明不区分大小写 参考function StrUtils.AnsiUppercase; function StrUtils.AnsiPos 例子CheckBox1.Checked := AnsiContainsText(Edit1.Text, Edit2.Text); ━━━━━━━━━━━━━━━━━━━━━ 首部function AnsiStartsText(const ASubText, AText: string): Boolean; $[StrUtils.pas 功能返回字符串AText是否以子串ASubText开头 说明不区分大小写 参考function https://www.doczj.com/doc/ee12127535.html,pareString 例子CheckBox1.Checked := AnsiStartsText(Edit1.Text, Edit2.Text); ━━━━━━━━━━━━━━━━━━━━━ 首部function AnsiEndsText(const ASubText, AText: string): Boolean; $[StrUtils.pas 功能返回字符串AText是否以子串ASubText结尾 说明不区分大小写 参考function https://www.doczj.com/doc/ee12127535.html,pareString 例子CheckBox1.Checked := AnsiEndsText(Edit1.Text, Edit2.Text); ━━━━━━━━━━━━━━━━━━━━━ 首部function AnsiReplaceText(const AText, AFromText, AToText: string): string; $[StrUtils.pas 功能返回字符串AText中用子串AFromText替换成子串AToText的结果 说明不区分大小写 参考function SysUtils.StringReplace; type SysUtils.TReplaceFlags 例子Edit4.Text := AnsiReplaceText(Edit1.Text, Edit2.Text, Edit3.Text);

0 Delphi专家群体法项目案例

1. 系统功能描述 教务管理主要完成以下功能: 对于教师而言,登录系统后,应提供以下功能:1)录入成绩:每位任课教师在学期末考试后拿到成绩表时,都应将每位学生的成绩准确的录入到教务系统中,方便学生查询。 2)个人课表:系统根据学校排课情况和教师的任课情况自动生成教师个人课表,以备教师查阅。 3)会议通知:系统实时更新和上传教师的会议通知,同时用该具备起草和发布通知的功能,起草和发布通知也应设定相应的权限。 4)个人日志:系统应为每位教师提供可用于个人记事的功能。 5)专业概况:每位教师都需知道自己所工作的专业的最新情况,系统应为教师提供可以了解专业信息的功能,在此功能中,教师还可以了解到其他同行教师的情况。 6)日程安排:该功能是系统设置用来为教师提醒每日行程的,由于权限的限制,每位教师可以对自己的个人行程进行删除和修改,也可定义提醒时间。 对于学生而言,登录系统后,应提供以下功能:1)网上选课:在此功能中,学生可以根据自已的情况分别网上选修体育课、非专业选修课和专业选修课。 2)活动报名:系统应及时更新、删除和修改由学校举办的各种活动的通知,以便学生及时查询和报名参加。同时,该功能应及时更新活动的现况,比如获奖情况、参赛名单、成绩公布以及后续情况。 3)教学质量评价:此功能提供给学生网上评教的方法。每学期期中,教师评价都尤为重要,除了教师之间可以进行评价以外,学生也必须为每个教师的教学情况进行评价。该功能也要有权限,只有当给每个教师均评教完后,方能生效。 4)信息维护: 5)信息查询:信息查询包括: a)专业推荐课表查询:在此项中,学生可以 查询所在专业班级的课表。 b)教师个人课表查询:在此项中,学生可以 在权限范围内查询学校教师的个人课表。 c)学生个人课表:在此项中,学生可以查询 个人课表。 d)学生考试查询:在此项中,学生可以查询 学期考试安排。 e)成绩查询:在此项中,学生可以查询自己 每学期的期末考试成绩及所修学分等。 f)等级考试查询:在此项中,学生可以查询 在校期间参加的所有等级考试的成绩。 g)培养计划:在此项中,学生可以查询有学 校举办的各种培养计划。 h)教室查询:在此项中,学生可以查询上课 所在教室的情况及空闲教室的使用情况。 i)课程介绍查询:在此项中,学生可以查询专业 课及非专业课的情况,便于选课。 j)学生补考考试查询:此项设有权限,只有参加过补考的学生可以查询其补考成绩。 2. 系统需求分析 高校教务管理系统需要完成教学资源管理、教师管理、学生管理、选课管理、考务管理、开课/选课管理、成绩管理和教学计划管理。 2.1 教学资源管理 1. 学年校历编排:给定学年起止日期,自动生成校历。并能对其进行人工调整。 2. 教室资源维护:对教室个数、可容纳人数、教室功能、教室属性(语音室、实验室、微机室、体育场馆等)、相应的管理人员进行维护。 2.2 教师管理 该子系统提供对每位教师的基本信息、教学考勤和教学工作量等信息的维护功能。 1. 教师基本信息:职称、姓名、性别、、年龄、教工号、所属系别。 2. 教师教学考勤:教师到课情况。 3. 教师工作量:教学总课时、专业班级、学生人数、个人课表。 2.3学生管理 该子系统提供对每位学生的档案管理、考勤管理、选课管理、学期/学年资格审核管理等功能的管理。 1. 学生档案管理:系统可从招办提供的电子档中导入学生档案,实现新生基本信息表,并能对基本信息表数据进行存档和维护。 2. 学生考勤管理:对学生每周上课的考勤情况进行登记,每周提交一次。开通班主任办公室/教学服务中心两个输入端口,只有教学服务中心对数据有更改权限。对有关考勤情况的按班级、时间段等不同类别的统计,并根据校规对违规学生进行标记。存在违规情况时,根据相关规定处理各违规学生,并生成备注存入个人临时档案。 3. 选课情况:学生可根据专业班级的不同进行选课,可选择体育课、专业选修课和非专业选修课,并将选课计入学年计划中。 4. 学期/学年资格审核管理:从成绩管理系统获得每学年的学生信息数据和学分信息数据,实现个人学分信息统计。实现对学生升级资格标准信息维护,系统对不符合要求的学生进行自动标记。最终输出学生学年资格审核信息报表。

相关主题
文本预览
相关文档 最新文档