CBuilder开发环境课件_第1页
CBuilder开发环境课件_第2页
CBuilder开发环境课件_第3页
CBuilder开发环境课件_第4页
CBuilder开发环境课件_第5页
已阅读5页,还剩139页未读 继续免费阅读

下载本文档

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

文档简介

CBuilder开发环境2024/4/16CBuilder开发环境1.1C++Builder概览C++Builder是Borland(Inprise)公司开发的Windows下可视化的C++编程环境,它常被简称为BCB(分别取Borland、C++、Builder的第一个字母)或CB。BCB不仅功能强大,而且学习简单、使用方便,深受软件开发人员的喜爱。C++Builder目前的最新版本是6.0版。CBuilder开发环境1.1.1Windows环境下的快速开发工具有一句话在软件开发人员之间流传很广,并且在流传过程中形成了若干不同的版本。这句话的上半句是“真正的程序员用C++”,下半句则是“聪明的程序员用X”。X在这句话的不同版本中分别为VB、Delphi、PB等。有人觉得对于这种“X”王婆卖瓜式的自夸,无需当真,但依笔者看却未必。因为VB、Delphi、PB等开发工具之间有一个共同之处,即它们都是RAD(RapidApplicationDevelopment,快速开发工具)。CBuilder开发环境因此,若站在比较公正的立场来说,这后半句应该是“聪明的程序员用RAD”。此说法若能成立,那么一个必然的推论就是:“真正的并且聪明的程序员应该用基于C++的RAD”。按照该标准选择编程环境,就目前来说,无疑应该首选Borland公司的C++Builder。CBuilder开发环境传统的“软件工程”提倡“先设计,后编程”,设计一旦完成,则不允许做过多修改。这种设计原则固然有其合理的一面,但严重制约了开发效率。对于某些开始时对需求并不十分清楚的应用项目,若按此办理则往往将开发人员逼入窘境。“快速原型法”或RAD则反其道而行之,它把设计看成需经多次反复才能完成的工作:对一个项目的初步分析完成后,即据此开发出一个程序“原型”;然后与用户一起对该“原型”进行评价,找出不足,修改设计后再产生程序。CBuilder开发环境这一过程可重复多次,直到所开发的系统达到用户要求为止。但要有效实现RAD,必须拥有优良的编程环境和代码生成工具,由于BCB具有可视化、面向对象等特性,特别适合作为Windows下企业级应用的RAD开发环境使用。目前,称得上RAD的产品有VB、Delphi、C++Builder、PB、VFP等。相对于VB等“解释型”的语言来说,Delphi、BCB这些以“编译型”的语言为基础的RAD编程环境效率较高,功能也更强大。CBuilder开发环境作为一个RAD开发环境,BCB对Windows和Internet上的各种流行技术都提供了充分的支持,C++Builder6.0在先前版本基础上又增加了许多新的功能和特性。它具有很强的图形、图像和多媒体处理功能;对Windows下的OLE、COM、ActiveX技术提供了很好的支持;在数据库编程方面,BCB提供了各种连接方案以及多层分布式数据处理等先进技术;在Internet和Intranet编程方面,BCB提供了Socket组件和InternetExpress、WebSnap等技术。BCB的另一优点是具有极强的兼容能力,它可以编译连接TurboC、BorlandC++、VC++、Delphi等工具开发的源代码或目标模块。CBuilder开发环境1.1.2C++编译器作为第四代编程环境,BCB具有一定的代码自动生成的能力,但仍需人工编写部分程序代码,这些代码必须用C++语言写成。因此,BCB可被看作是Windows下一个功能强大的C++编译器,它支持ANSIC++标准并在使用部件技术等方面作了扩充。BCB具有编译速度快等优点,经BCB编译后产生的目标文件尺寸小、效率高,可直接在Windows环境下运行。CBuilder开发环境C++是在C语言基础上扩充而成的一种编程语言,它具有C语言紧凑、高效等优点并支持面向对象程序设计的技术,本书第2章将简单介绍C++语言和面向对象程序设计。对已初步掌握C语言的读者来说,只需对面向对象程序设计的有关概念稍有了解,就能使用BCB编写简单程序了。当然,要使用BCB编写复杂的、高质量的程序,就必须对所使用的C++语言的各种特性有深刻理解。我们认为,掌握C++和面向对象程序设计是一个从实践中学习的循序渐进的过程,本书会提供一个很好的起点。

CBuilder开发环境1.1.3C++Builder的安装和启动 C++Builder6.0有普通版和Client/Server版,通常用光盘安装。它对硬件的最低要求并不高,但为了使用效果好一点,我们建议采用如下基本硬件配置:(1)CPU为PentiumII350以上;(2)内存128MB以上;(3)硬盘总容量10GB以上,可用空间1GB以上,其中安装BCB约用去600MB以上。CBuilder开发环境BCB应安装在32位的Windows上,它们包括Windows95、Windows98、Windows2000、WindowsNT4.0、WindowsMe以及WindowsXP等。执行光盘上的Setup程序进行安装,主要步骤有:(1)按提示输入软件的序列号和密码;(2)选择安装方式,安装方式有Typical、Compact和Custom,当硬盘空间充足时可选Typical,否则选Compact,有经验的用户也可选Custom;CBuilder开发环境(3)选择安装目录,一般可采用由安装程序建议的目录。安装完毕后,在“开始”菜单的“程序”项下新添了一项“BorlandC++Builder6”,点击该项即能启动C++Builder6.0。启动后的界面如图1-1所示。CBuilder开发环境图1-1启动BCB后的画面CBuilder开发环境1.1.4一个简单的程序 为了让读者尽早了解在BCB下编程是怎么回事,我们在本节给出一个简单的“Hello,World!”程序。该程序运行时显示一个窗口,窗口内有一个命令按钮,当按钮被点击时,窗口的标题显示为“Hello,World!”。下面,我们详细给出在BCB下编制该程序的每一步。(1)启动BCB,出现如图1-1所示的界面。此时编程环境中已存在一个应用程序的框架,显示在该图右下方的标题为Form1的一个空白的窗口即是该应用程序的窗口,习惯上我们称它为窗体。CBuilder开发环境(2)点击控件面板上按钮图案选取按钮控件,然后在应用程序窗体中选择适当位置将按钮放到该空白窗体上,如图1-2和图1-3所示。

(3)在窗体内选中按钮,然后在对象检阅器内编辑按钮Button1属性。如图1-4所示,我们把按钮的Caption属性改为“Hello”。这使得窗体中按钮的标题也变为“Hello”。CBuilder开发环境图1-2点击面板上按钮控件CBuilder开发环境图1-3将按钮放入窗体CBuilder开发环境图1-4修改按钮的标题CBuilder开发环境(4)双击窗体中标题为Hello的按钮,BCB自动为该按钮的单击事件建立了相应的处理程序(方法)TForm1::Button1Click的框架,此时代码编辑窗口被激活,文本插入点处有如下代码:void__fastcallTForm1::Button1Click(TObject*Sender){

}这正是TForm1::Button1Click事件代码的框架。在一对大括号内可以由用户输入C++的代码,这些代码将在该按钮被单击(Click)时执行。在本例中,我们输入:CBuilder开发环境Form1->Caption="Hello,World!";即使得TForm1::Button1Click事件有如下代码:void__fastcallTForm1::Button1Click(TObject*Sender){Form1->Caption="Hello,World!";}CBuilder开发环境(5)点击位于BCB界面左上方的工具栏上标有绿色箭头的那个按钮,就可以编译、运行该程序了。若一切顺利,程序运行后,按下“Hello”按钮,窗口的标题就会变为“Hello,World!”,如图1-5所示。至此,我们的第一个Windows应用程序已编制完成,当然这个程序的功能太简单了。但请记住,我们有了一个很好的程序框架,在此基础上增加一点功能并不是难事。

CBuilder开发环境最后,我们还要介绍如何将已完成的程序保存。BCB将一个完整的应用程序称为项目,它由若干文件组成,保存一个项目也就是要将该项目的所有文件存盘。CBuilder开发环境图1-5Hello程序运行时的画面CBuilder开发环境图1-6保存单元文件CBuilder开发环境通常,应该为项目建立一个文件夹用于保存该项目的文件。我们为“Hello”程序的项目建立的文件夹,可以取名为Hello。在BCB中执行菜单命令File→SaveAll。此时,会弹出如图1-6所示的保存单元文件对话框。在标有“保存在”标签的组合框内选中Hello文件夹,在“文件名”文本框内更改文件名,最后按“确认”按钮保存文件。由于SaveAll是保存项目的所有文件,因而一般会出现两次保存文件对话框:第一次,要求保存与程序主窗体Form1对应的代码单元文件,它的默认文件名是Unit1;第二次,要求保存项目文件,它的默认文件名是Project1(对于初学者,最好采用默认的文件名)。CBuilder开发环境回到Windows下,看看Hello文件夹内有哪些文件。我们会发现至少有六个文件:Project1.bpr,Project1.cpp,Project1.res,Unit1.cpp,Unit1.dfm和Unit1.h。这些文件可看作是“Hello”项目的源文件,若我们在保存项目后再运行一次程序,就会发现Hello文件夹内又增加了四个文件:Project1.obj,Project1.exe,Project1.tds和Unit1.obj。其中的Project1.exe可脱离BCB在Windows下运行,它的大小仅为25KB。由于这四个文件可以通过编译生成,当磁盘空间紧缺时(例如,当需要保存到软盘时)可将它们删除,特别是Project1.tds文件,它的尺寸很大。CBuilder开发环境1.2C++语言简介如前所述,BCB使用C++作为编程语言。C++语言是在C语言的基础上扩充而成的,它具有C语言紧凑、高效等优点并支持面向对象程序设计技术。本书假定读者已具有使用C语言编程的基础知识,我们在此基础上介绍学习本书时所需的C++知识。CBuilder开发环境1.2.1面向对象程序设计自20世纪80年代以来,面向对象的技术引起了计算机界的极大关注。随着面向对象程序设计语言的渐趋成熟,作为一种新的程序设计风格,其应用也得到了迅速发展。面向对象是一种对应于真实世界概念化的抽象思维方法,面向对象方法的基本出发点就是按照人类认识世界的方法和思维方式来分析和解决问题的。在面向对象的系统中,对象(Object)是一个封装了数据属性和操作行为的实体。数据描述了对象的状态,操作可操纵私有数据,改变对象的状态。对象内的操作通常叫做方法,对象之间进行通讯的一种构造叫做消息。CBuilder开发环境在面向对象系统中,人们并不是逐个地描述各个具体的对象,而是将注意力集中于具有相同特性的一类事物,抽象出这样一类事物的共同结构和行为。类(Class)是对对象的抽象及描述,是具有共同属性和操作的多个对象的相似特性的统一描述体,类中的每个对象都是该类的实例。由于类描述了数据结构(对象属性)、算法(方法)和外部接口(消息协议),因此,类提供了完整的解决问题的能力。CBuilder开发环境在类的描述中,每个类要有一个名字,要能表示一组对象的共同特征,还必须给出一个生成对象实例的具体方法。类不是孤立的,类与类之间有各种关系。其中,特别重要的是层次关系,即可以有父类与子类,它们之间有派生和继承的关系,继承关系具有传递性。在收到消息时,对象要予以响应。不同的对象收到同一消息可产生完全不同的结果,这一现象叫做多态,多态的实现依赖于继承性。

CBuilder开发环境要设计一个有意义的类并非易事,但一旦设计完成,就能在程序中被重复使用。因此,一个成熟的面向对象的编程环境往往会提供一组精心设计而成的类供用户使用,以提高软件开发的效率和质量,一般称这样的一组类为类库。C++Builder提供的类库名为VCL,而VC++则提供了一个叫做MFC的类库。CBuilder开发环境面向对象程序设计的概念提出来以后,某些公司和机构曾经开发出一些纯粹的面向对象设计语言,如Smalltalk、Ada等,但是由于种种原因,这些语言没能够广泛地流行起来。从本质上来讲,我们今天所广泛采用的面向对象的设计语言C++并不是一种纯粹的面向对象的设计语言。C++是C语言的一个超集,它既支持传统的面向过程程序设计,又支持面向对象程序设计,C++与C语言的这种兼容性是其成功的一个重要方面。CBuilder开发环境C++由RichMaseitti提出,它的创造灵感来源于当时计算机语言多方面成果的凝集,特别是BCPL和Simula67。C++的标准化工作于1989年已开始,在支持面向对象特性的开发平台上,日趋进步和完善。CBuilder开发环境1.2.2C++语言对C语言在非面向对象方面的增强 C++作为一种混合语言,在面向对象及非面向对象这两个方面都对C语言进行了扩充或修订,使得它既适用于结构化程序设计,又能满足面向对象程序设计的要求。因而很快流行起来,成为当今面向对象程序设计的主要语言。以下是C++对C语言在非面向对象方面的若干重要扩充。CBuilder开发环境1.C++提供了单行注释方式在传统的C语言中C提供了块注释方式,其形式如下:/*explanationsentence*/而在C++中,除了保留了块注释方式外,还增加了一种更为方便的单行注释方式,其形式如下://explanationsentenceCBuilder开发环境2.更为灵活的变量说明在传统的C语言中,局部变量的说明必须放在可执行的代码的前面。数据说明语句和可执行语句的混合将引起编译错误。而在C++中,可以在程序代码块的任何地方进行局部变量的说明。CBuilder开发环境3.结构、联合和枚举名可以直接作为类型名使用在C语言中,对结构、联合和枚举类型进行定义后,要生成该结构、联合和枚举类型的变量,必须在结构名前加上struct。如对BankAccount结构的变量进行说明时使用如下形式:BtructBankAccounta;在C++中,说明方法可简化为:BankAccounta;//关键字struct不必要CBuilder开发环境4.枚举类型与整型的关系在C语言中,枚举值与整型值之间可以相互转换使用。而C++的类型检查则比C要严格,枚举值将被自动转化为整型值使用,但将整型值转化为枚举值则需要强制类型转换,否则会出现编译错误。如下面的一段代码,在C语言中都是可以接受的,但某些语句在C++中则会引起错误。CBuilder开发环境enumname{John,Mike,Rose,Joan};enumnameperson1=John;//正确enumnameperson2=person1;//正确enumnameperson3=1;//在C++中错误enumnameperson4=(enumname)1;//在C++中正确无名联合可以通过使用其中数据项的名字直接进行访问。CBuilder开发环境5.作用域限定运算符::作用域限定运算符::用于对当前作用域之外的同名变量进行访问。如在下面的例子中,我们在局部变量var的作用域内使用::var来实现对全局变量var的访问。CBuilder开发环境#include<iostream.h>intvar;voidmain(){floatvar;var=3.14;::var=6;cout<<"localvariablevar="<<var<<endl;cout<<"globalvariablevar="<<::var<<endl;}CBuilder开发环境该程序的输出结果如下:localvariablevar=3.14globalvariablevar=6CBuilder开发环境6.增强了类型转换方式在C++中,除了保留了传统的C语言的强制类型转换方式之外,还可以将类型名作为函数名使用,这将大大提高程序的可读性。例如:floatf=0.01;longl=(long)f;longk=long(f);CBuilder开发环境8.关键字const在C++中,关键字const用于将一个标识符说明为常量,即其值是在程序的运行过程中不变的量,程序不能以任何方式对其进行修改。const与C语言中的#define是有区别的:const所说明的常量是有内存单元与之对应的量,在程序编译时其值还不能确定;而#define所说明的常量是在编译时便能确定其数值的量。CBuilder开发环境关键字const也可以用来修饰函数参数中的某些变量,用以保证被修饰的参数对应的实参在该函数内部不被改动。当关键字const用来修饰指针时,根据使用的形式不同,它可以冻结指针所指向的变量、冻结指针本身或同时冻结指针及其所指向的变量,如下所示:constchar*name="Mike";//冻结指针所指向的变量char*constname="Mike";//冻结指针本身constchar*constname="Mike";//同时冻结指针及其所指向的变量CBuilder开发环境9.new和deleteC++为了提高内存管理上的灵活性,提供了动态内存分配和释放的操作符new和delete,用来增强C语言中原有的函数malloc()和free()。new操作符用来动态分配内存,new操作符的使用格式可以参考如下代码:char*mybuffer=newchar[4096];CBuilder开发环境对于较大的数组,动态分配可以节省大量的堆栈空间。值得注意的是,数组在单独使用时是指向该数组在内存中的起始位置的,而指针也是指向同一个位置的,所以两者可以互换。在程序中new和delete是成对出现的,如果没有释放new操作符分配的内存,则程序将一直占用大量的内存。不过值得注意的是,不要对已经释放的指针再次使用delete(),因为它将导致无法预料的结果。CBuilder开发环境new和delete在C++中除了能用于对C中原有类型的变量动态分配和释放内存外,主要用于对C++中动态生成的对象分配和释放内存。当使用new动态生成对象时,new操作符返回一个指向对象在内存中所在位置的指针,对对象的任何操作都要用到这个指针。与其它未初始化的变量一样,未初始化的指针的值是随机的,如果使用未初始化的指针,将导致严重的后果。因此在一般情况下,应该在声明指针后立即对其进行初始化。例如:TEdit*Edit1=newTEdit(this);Edit1->Width=100;Edit1->Height=10;CBuilder开发环境10.内联函数(inline)C++提供了内联函数。使用内联函数可以节约函数调用时保留现场所需的系统开销,提高程序执行效率。同时,由于内联函数的使用将增大程序的代码段,因此建议在充分权衡系统开销和程序代码段长度的关系后谨慎使用。CBuilder开发环境11.缺省函数参数在C++的函数调用时,可以缺省函数的参数。但是要使用缺省函数参数,必须在函数定义时为该参数赋一缺省值,且所缺省参数的顺序只能是从右到左,不能随意缺省。请看下面的例子:CBuilder开发环境intfunction(inta=0;intb=1;intc=2){ }以下函数调用都是合法的:function(); //等同于function(0,1,2)function(12); //等同于function(12,1,2)function(12,13); //等同于function(12,13,2)function(12,13,14);而以下函数调用则是非法的:function(,13,14);function(12,,14);CBuilder开发环境12.函数返回值在C++中,任何说明为非void类型的函数都需要指定一个相应类型的返回值,否则在函数的编译时会产生警告错误。CBuilder开发环境1.2.3C++对于面向对象技术的支持 类和对象是面向对象技术的基石,因此,我们首先要解决的问题是如何用C++语言来描述类和对象。让我们回忆一下C语言中的结构体这种复合数据类型,结构可把相关联的数据元素组合成一个统一体,它和类非常相似,其区别主要在于C的结构不含成员函数,而C++的类既能包含数据元素(即数据成员),又能包含方法(即成员函数)。下面用C++定义了BankAccount(银行帐号)类,该类包含有两个数据成员和两个成员函数:CBuilder开发环境classBankAccount{private: floatbalance; unsignedaccountNumber;public: voiddeposit(floatamount) { balance+=amout; }

CBuilder开发环境voidwithdraw(floatamout) { balance-=amout;}floatgetbalance() {returnbalance; }};CBuilder开发环境可以看出C++中定义类的语句确实同定义结构非常相像。我们使用了关键字class表示类,这里BankAccount是类名,在一对大括号中罗列了所有的数据成员和方法函数。关键字“private:”和“public:”分别用于说明私有成员和公有成员,前者只允许在属于该类对象的方法内进行访问,后者则可被外部对象的方法访问。CBuilder开发环境给BankAccount类生成静态对象实例的语句可以是:BankAccountBA1,BA2;为了动态生成对象实例,我们必须使用指针和new操作符:BankAccount*BA3;BA3=newBankAccount;如果详细介绍C++面向对象技术,可能需要半本书的篇幅,而且比较枯燥,对于学习本书的“基础篇”和“应用篇”,我们暂时只需要以上介绍的这些知识就可以了。在本书的“提高篇”将更深入地介绍C++和面向对象的内容。CBuilder开发环境1.2.4VCL组件类 前面曾提及BCB开发环境为用户提供的类库被称为VCL(VisualComponentLibrary),该类库非常适用于Windows下的快速开发。在VCL中首先定义了一个基类TObject,其它的类都是TObject的后代。所有的组件都是TComponent类的派生类,它们都能放在BCB的组件面板上供取用。组件中有一部分继承自TControl类的又常被称为控件,它们是可视的,有着大体相似的属性和方法。CBuilder开发环境TForm类也称为窗体类,它是应用程序的窗口。通常,在BCB的一个空白程序框架中,已存在着一个由系统生成的空窗体Form1。由于C++中对象的数据成员的类型也可以是类,因此对象中可以含有成员子对象。主要用于包容成员对象的那种对象通常被称为“容器”。窗体中可以放入各种组件,因此,窗体也常被当成是容器。CBuilder开发环境属性和事件概念是BCB对C++类的某种扩展和深化,为此BCB中引入了扩展关键字__property。属性是类中一种特殊的数据成员,对该成员的读写常伴随着一系列与WindowsAPI调用有关的组件状态的改变。事件则是一种触发器,它通常与某种特定状态(如接收到某个Windows消息)相联系。用户可以为事件编写代码,该代码只在上述的某种特定状态发生时被执行。在1.1.4节的例子中,我们写代码Form1->Caption="Hello,World!",其中Caption即为类TForm的属性。双击按钮时出现的空白代码框架:CBuilder开发环境void__fastcallTForm1::Button1Click(TObject*Sender){}即为Button1对象的OnClick事件的代码框架。在BCB下编程,所要做的工作大部分都与VCL对象的属性与事件有关。由于VCL中有大量的组件,必须循序渐进地学习它们的用法。如果读者能熟练使用多种VCL组件的属性与事件,就能成为一个Windows下的编程高手。CBuilder开发环境1.2.5BCB的字符串类型传统的C语言中没有真正的字符串类型,只有字符数组或指针,因此使用中常带来不便。BCB采纳了AnsiC++中的AnsiString类,弥补了C的不足。此外,BCB中定义的TStrings等类型也非常有用。下面简单介绍这些类型的用法。CBuilder开发环境1.AnsiString类AnsiString类除了将一个长字符串作为它的数据成员外还提供了操纵字符串的方法,并且能方便地与C的字符类型相转换。大部分编程语言都允许使用“+”号连接两个字符串,但在C中却不行,这会带来许多不便,好在AnsiString解决了这个问题。例如:CBuilder开发环境AnsiStrings1,s2,s3;s1="abc";s2="efg";s3=s1+'d'+s2;是完全符合C++语法的。由于AnsiString的强大功能和具有与其它编程语言的兼容性,使得它在VCL类的属性和方法参数中被大量使用。CBuilder开发环境AnsiString类提供了如下主要的方法函数:●Length返回AnsiString中的字符数。●IsEmpty如果AnsiString为空,则返回true,否则返回false。●SubString返回该AnsiString的子串。●c_str将AnsiString转化为基本C语言的*char型。因为调用C或C++的函数时,参数的数据类型常常要求是char*,所以可使用该函数先将AnsiString转换为char*型,再进行调用。CBuilder开发环境注意:AnsiString::c_str()返回一个指向AnsiString对象内部字符串缓冲的指针,一旦使用该调用语句结束,这个指针也就不再有效。●atoi将数值型字符串转换为整数。●itoa将整数转化为字符串。●AnsiCompare将该字符串与指定的字符串比较,比较时区分大小写。CBuilder开发环境2.TStrings类TSrings是另一个在VCL中被广泛使用的字符串类型,它可以将一段由若干行组成的文本保存在一个长字符串中。使用TStrings的方法可根据实际需要方便地在这一段文本中插入或删除行,或将其转换为其它字符串类型。VCL中TListBox类组件的Items属性和TMemo类组件的Lines属性都是TStrings类型的。3.TWideString类TWideString类是用于与WindowsOLE和非英文字符集等相兼容的字符串类型。CBuilder开发环境1.2.6BCB的通用函数BCB编程环境下提供了一组通用函数,这些函数主要提供在各种基本数据类型之间进行转换、磁盘文件操作、字符串操作等功能,它们的使用都是比较简单的。下面介绍其中最常用的若干函数。1.IntToStr函数IntToStr函数原型为AnsiString__fastcallIntToStr(intValue);功能是将整型变量转换为字符串。CBuilder开发环境2.StrToInt函数StrToInt函数原型为int__fastcallStrToInt(constAnsiStringS);功能是将字符串转换为整型变量。3.FloatToStr函数FloatToStr函数原型为AnsiString__fastcallFloatToStr(floatValue);功能是将实数型变量转换为字符串。CBuilder开发环境4.StrToFloat函数StrToFloat函数原型为float__fastcallStrToFloat(constAnsiStringS);功能是将字符串转换为实数型变量。CBuilder开发环境5.FloatToStrF函数FloatToStrF函数原型为AnsiString__fastcallFloatToStrF(longdoublevalue,TStringFloatFormatformat,intprecision,intdigits);功能是将实数型变量转换为指定格式的字符串。整型参数precision和digits分别指定小数部分的位数和字符串的长度。参数format可取值为sffGeneral、sffExponent、sffFixed、sffNumber以及sffCurrency。CBuilder开发环境6.TimeToStr函数TimeToStr函数原型为AnsiString__fastcallTimeToStr(System::TDateTimeTime);功能是将当前日期和时间转换为字符串对象。7.UpperCase函数UpperCase函数原型为AnsiString__fastcallUpperCase(constAnsiStringS);功能是将指定的AnsiString字符串转换为大写形式。CBuilder开发环境8.LowerCase函数LowerCase函数原型为AnsiString__fastcallLowerCase(constAnsiStringS);功能是将指定的AnsiString字符串转换为小写形式。9.IntToHex函数IntToHex函数原型为AnsiString__fastcallIntToHex(intValue,intDigits);功能是将整数转换为十六进制字符串。CBuilder开发环境10.FileExists函数FileExists函数原型为bool__fastcallFileExists(constSystem::AnsiStringFileName);功能是测试指定的文件是否存在,如果存在,则返回true,否则返回false。CBuilder开发环境11.DeleteFile函数DeleteFile函数原型为bool__fastcallDeleteFile(constAnsiStringFileName);功能是删除指定的磁盘文件,如果操作成功,则返回true,否则返回false。CBuilder开发环境12.CreateDir函数CreateDir函数原型为bool__fastcallCreateDir(constAnsiStringDir);功能是创建一个新的目录,如果操作成功,则返回true,否则返回false。13.DiskSize函数DiskSize函数原型为int__fastcallDiskSize(ByteDrive);功能是返回指定磁盘的空间,操作失败时返回-1。参数Drive取值为“0”,代表当前盘,取值为1,2,3,...时分别代表A,B,C,...盘。CBuilder开发环境14.DiskFree函数DiskFree函数原型为int__fastcallDiskFree(ByteDrive);功能是返回指定磁盘的剩余空间,操作失败时返回-1。参数Drive的用法与DiskSize函数中的用法相同。15.StrScan函数StrScan函数原型为char*__fastcallStrScan(constchar*Str,charChr);功能是在指定的字符串中寻找特定的字符,并返回指向该特定字符在字符串中第一次出现位置的字符指针。若找不到该特定字符,则返回NULL。CBuilder开发环境16.StrRScan函数StrRScan函数原型为char*__fastcallStrRScan(constchar*Str,charChr);功能与StrScan类似,但返回值是指向最后一次出现该特定字符处的指针。CBuilder开发环境1.3C++Builder集成开发环境本章介绍C++Builder6.0应用程序集成开发环境(IDE)的各个组成部分及相关的操作。CBuilder开发环境启动BCB,进入IDE,如图1-7所示,我们将该环境分解为四个窗口和六个组成部分。这四个窗口是:程序主窗口、对象监视器、应用程序窗体设计区和代码编辑器。其中,前两个窗口分别位于IDE的上方和左方,后两个窗口都位于IDE的右下方,其中应用程序窗体设计区叠在代码编辑器之上。主窗口的标题是“C++Builder6”,它可被进一步分解为主菜单、工具栏、组件面板三个部分。这三个部分加上另外三个窗口就是BCBIDE的六个主要组成部分。CBuilder开发环境图1-7BCBIDE的各个组成部分CBuilder开发环境1.3.1程序主窗口1.主菜单在BCBIDE主窗口顶部是主菜单,它由File、Edit、Search、View、Project、Run、Component、Database、Tools、Windows、Help等项及相应的下拉菜单组成。IDE的大部分功能都可由该菜单系统提供。1)File下拉菜单File下拉菜单由New、Open、OpenProject、Reopen、Save、SaveAs、SaveAll、Close、CloseAll、IncludeUnithdr、Print、Exit等选项组成。CBuilder开发环境选择New时会弹出下拉菜单,从中可选择所需创建的对象或文件类型,其中,NewApplication用于创建一个新的项目,即一个空白的应用程序框架,NewForm则用于将一个空白窗体添加到当前打开的项目中。Open、OpenProject、Reopen用于打开项目或文件。选用Open和OpenProject时都会出现打开文件对话框,用户可在对话框内选择存放文件的路径以及文件类型,按“打开”按钮即完成。一般常用OpenProject打开项目,此时,与该项目有关的主要文件都已被打开。Reopen提供最近打开过的文件列表供选择打开。CBuilder开发环境As为另存,指将当前文件以另一路径或不同的文件名保存;SaveAll则保存当前项目下的所有文件。建议初学者多使用SaveAll。Close、CloseAll用于关闭文件,前者只关闭当前正在操作的文件,后者关闭当前项目下的所有文件。用IncludeUnithdr可使当前编辑的源文件中包含另一个源文件,一般被包含的是C++的头文件(扩展名.h)。此项操作等同于在源程序中加入#include<源文件名>语句。用Exit可退出BCBIDE,返回到Windows。若文件尚未关闭时选Exit,则IDE会给出提示信息。CBuilder开发环境2)Edit下拉菜单Edit下拉菜单由Undo、Redo、Cut、Copy、Paste、Undelete、Delete、SeleteAll、Align、BringtoFront、SendtoBack、TabOrder等选项组成。Undo和Redo用于在代码编辑器窗口中进行文本编辑时取消和恢复前一次的操作,它们一般不能用于对窗体中控件的编辑。CBuilder开发环境Align、BringtoFront、SendtoBack、TabOrder用于控件的编辑。其中,Align用于排列(对齐)控件,在进行排列之前应先选中一组需要排列的控件(按住Shift键不放,并用鼠标逐个点击控件就能选中一组控件);BringtoFront和SendtoBack用于处理窗体中若干控件相互重叠的情况,BringtoFront将选中的控件置前,SendtoBack将选中的控件置后;TabOrder用于调整窗体中一组控件在程序运行时发生焦点(光标)转移的先后顺序。CBuilder开发环境Cut、Copy、Paste、Delete、Undelete在文本编辑和控件操作两种情况下都能起作用,分别表示对文本或控件进行剪切、复制、粘贴、删除和取消删除操作。其中,Cut和Delete操作前必须先选中文本或控件,进行Paste操作时必须确保剪贴板上有相应的内容存在。CBuilder开发环境3)Search下拉菜单Search下拉菜单由Find、SearchAgain、Replace、GoToLineNumber等选项组成。Find和SearchAgain用于在文本中搜索特定字符串,前者用于首次搜索,后者用于对同一字符串的再次搜索。Replace则在搜索基础上进行替换。选择Find或Replace都会出现对话框,使用时应注意对话框各选项的正确使用方法。这些选项中,Casesensitive表示搜索时对字母区分大小写,Forward和Backward分别表示搜索方向为向前和向后,Global和Selectedtext分别表示在全文范围内和当前选中文本范围内搜索。CBuilder开发环境GoToLineNumber可搜索到文本的某一行。使用时弹出对话框,输入一个行号后即可执行。CBuilder开发环境4)View下拉菜单View下拉菜单由ObjectInspector、AlignmentPalette、WindowList、DebugWindows、ToggleForm/Unit、Toolbars等选项组成,主要功能为控制IDE的外观和在各个窗口间的切换。ObjectInspector激活对象监视窗口;DebugWindows打开Debug(纠错)窗口;WindowList提供包含了当前环境中已打开的全部窗口的一个列表,选中其中一个窗口的名称,按一下“OK”按钮就能使该窗口激活并显示。CBuilder开发环境AlignmentPalette与Edit菜单下的Align项功能相似,但不能通过对话框进行操作,而是提供一个图形化的工具面板用于排列控件。Toolbars可设置工具条,使某些工具按钮显示或关闭。ToggleForm/Unit可将当前正在操作的某个窗体快速切换到代码编辑器中与该窗体相关的单元文件,或反过来从当前单元文件切换到窗体。CBuilder开发环境5)Project下拉菜单Project下拉菜单由AddtoProject、RemovefromProject、ViewSource、CompileUnit、BuildProject1、Options等选项组成。AddtoProject可将现存的某个单元文件或其它对象添加到当前项目;RemovefromProject则从当前项目中删除某一文件或窗体等对象,操作时都有对话框出现。使用该两项功能时,BCB会对项目及相关代码进行必要的分析和修改。CBuilder开发环境Options设置与项目有关的选项。可选择的选项很多,但大部分都非常专业,初学者一般不应随意改变这些选项的值。CompileUnit编译当前代码文件,BuildProject1则编译整个项目。ViewSource可打开项目的主程序单元的代码进行编辑,一般情况下不必编辑修改该代码。CBuilder开发环境6)Run下拉菜单Run下拉菜单由Run、Parameters、StepOver、TraceInto、RuntoCursor、ProgramReset、ProgramPause、AddWatch、AddBreakpoint等选项组成。这些菜单项主要用于应用程序运行及调试。Run菜单项编译、链接并且运行应用程序。若选择Parameters,可指定程序运行时的命令行参数。StepOver和TraceInto都是逐句执行程序,但前者对函数调用语句视作整体一次执行,而后者则会跟踪到函数内部逐句执行。在提高篇的第8章,我们将较详细介绍这些菜单命令是如何用于程序调试的。CBuilder开发环境7)Component下拉菜单Component下拉菜单由NewComponent、InstallComponent、ImportActiveXControl、ConfigurePalette等选项组成,用于创建、安装自定义控件及配置控件面板。CBuilder开发环境8)Database下拉菜单Database下拉菜单由Explore、SQLMonitor、FormWizard等选项组成,主要用于对数据库编程的支持。选择Explore,则弹出“SQLExplore”窗口,该窗口用于数据库系统的SQL设计。选择SQLMonitor,则弹出“SQLMonitor”窗口,该窗口用作SQL操作的监视器。选择FormWizard,则出现一个数据库窗体设计向导,按照屏幕提示,可以很方便地设计一个对简单数据库作常规操作的窗体。CBuilder开发环境9)Tools下拉菜单Tools下拉菜单由EnvironmentOptions、EditorOptions、ConfigureTools、DatabaseDesktop、ImageEditor等选项组成,用于环境设置并提供一些软件工具。EnvironmentOptions和EditorOptions分别对IDE和代码编辑器进行设置。这些设置的可选项目很多,其中有一些非常实用。例如,我们可在EnvironmentOptions对话窗口中发现“Preferences”页的“Formdesigner”框内有一项“Snaptogrid”。当该项选中时,若在窗体上用鼠标移动控件,控件只能定位在格点(Grid)上,该项未选中时,无此限制。此外,还可输入“GridsizeX”和“GridsizeY”以改变格点的间距等。CBuilder开发环境ConfigureTools可对位于IDE左上方的工具条进行配置。DatabaseDesktop、ImageEditor都是BCB提供的实用工具。DatabaseDesktop相当于是一个小型的数据库管理系统(DBMS),主要用于处理Paradox类型的本地数据,我们将在“应用篇”的第5章作较详细的介绍。ImageEditor工具用于对简单的位图图像进行编辑。CBuilder开发环境10)Window下拉菜单Windows下拉菜单中各项命令可用于在BCBIDE中的各个窗口之间切换。11)Help下拉菜单Help下拉菜单中各项为用户提供帮助。本章1.3.5节将介绍BCB的帮助系统。CBuilder开发环境2.工具栏BCBIDE的工具栏位于主菜单的左下方,上面排列着若干个图标。它们分别与主菜单上的某些常用选项相对应,点击这些图标能更快捷地执行相应的菜单命令。每个图标都有自己的名称,只要将鼠标箭头在图标上停留一点时间,IDE就会提示该图标的名称。如图1-8所示,上排从左往右依次为New、Open、Save、SaveAll、OpenProject、AddfiletoProject、RemovefilefromProject、Help图标;下排从左往右依次为ViewUnit、ViewForm、ToggleForm/Unit、NewForm、Run、Pause、Traceinto、StepOver图标。工具栏是可以通过设置进行改变的,所以上述的排列不是固定不变的。CBuilder开发环境图1-8BCB的工具栏CBuilder开发环境3.组件面板在本章1.1.4节中的“Hello,World!”范例中,我们从组件面板上选择一个按钮并将它放到应用程序主窗体内,这种“所见即所得”的操作方式使程序的界面设计变得轻松随意。C++Builder和它的姐妹产品Delphi有一个明显的优点就是可供选用的组件特别多。这些组件被分门别类地排列在组件面板上,使用起来非常方便。组件面板位于BCB主窗口的右下方,它由若干个页面组成。点击页标签,可切换当前页。点击位于面板右端的两个小箭头,可横向滚动页标签,使所有的页能显示。CBuilder开发环境每个组件都有自己的名称,只要将鼠标箭头在组件图标上停留一点时间,IDE就会提示该组件的名称。在BCB中控件是指具有某些Windows窗口特性的可视组件,或者用更专业一点的说法就是属于由TControl派生的类。由于大部分最常用的组件都是控件,因此有时也将组件面板称为控件面板,有些书上甚至将两者混为一谈。

CBuilder开发环境不同版本BCB的组件面板的页数和每页上的组件是有差别的,但差别不是很大。BCB支持用户创建自己的组件并把它安装到面板上,此外它也允许用户改变组件在面板上的排列。因此,即使对同一版本的BCB,不同用户组件面板的内容也不尽相同。本节中介绍的是BCB6.0标准安装下的组件面板。CBuilder开发环境下面简单介绍组件面板上常用的各个页,对其中各个组件的具体用法将在后续章节中结合编程技术进行介绍。1)Standard页Standard页上有16个组件,常用的有:主菜单(MainMenu)、标签(Label)、文本编辑框(Edit)、备注框(Memo)、按钮(Button)、复选框(CheckBox)、列表框(ListBox)、组合框(ComboBox)、滚动条(ScrollBar)、单选按钮组(RadioGroup)和面板(Panel)等,如图1-9所示。这些组件主要用于创建应用程序界面和各种对话框。CBuilder开发环境图1-9Standard页上的组件CBuilder开发环境2)Additional页Additional页上有22个组件,常用的有:快速按钮(SpeedButton)、掩码编辑框(MaskEdit)、图像(Image)、图形(Shape)和图表(Chart)等,如图1-10所示。这些组件用于程序界面设计,图形、图像显示等。CBuilder开发环境图1-10Additional页上的组件CBuilder开发环境3)Win32页Win32页上有19个组件,常用的有:RTF编辑器(RichEdit)、页面控制框(PageControl)、进度显示栏(ProgressBar)、微调按钮(UpDown)、日期输入框(DateTimePicker)、月份牌(MonthCalendar)和树结构显示框(TreeView)等,如图1-11所示。这些控件功能强大,应用广泛。其中,RichEdit可显示和编辑丰富的格式文本(这是一种标准的格式化文本文件,在Windows下扩展名为.rtf,可在Word等字处理软件中打开)。DateTimePicker或MonthCalendar可提供非常友好的日期输入界面,TreeView可提供处理树形结构所需的图形界面,但使用较复杂。CBuilder开发环境图1-11Win32页上的组件CBuilder开发环境4)System页System页上有8个组件,常用的有:Timer(定时器)、MediaPlayer(媒体播放器)和OleContainer(Ole容器)等,如图1-12所示。这些组件用于时间控制、播放多媒体和插入Ole对象等。5)Dialogs页Dialogs页上有10个对话框组件,最常用的有:打开文件对话框(OpenDialog)、保存文件对话框(SaveDialog)、字体对话框(FontDialog)、颜色对话框(ColorDialog)和打印对话框(Printdialog)等,如图1-13所示。它们将标准Windows风格的对话框提供给应用程序,使用十分方便。CBuilder开发环境图1-12System页上的组件CBuilder开发环境图1-13Dialogs页上的组件CBuilder开发环境6)DataControls、BDE、ADO、DataAccess页Date、Controls、BDE、ADO、DateAccess这几个页上的组件都是用于对数据库应用系统开发提供支持的。与以前版本相比,BCB6.0对这几个页面作了较大调整。DataControls页上的组件主要用于数据库程序的界面设计,如图1-14所示。其中,DBEdit、DBMemo、DBListBox、DBComboBox、DBRadioGroup等组件分别与Standard页上Edit、Memo、ListBox、ComboBox、RadioGroup等组件用法相似,但使用时要与数据表中的字段对象相联系。CBuilder开发环境图1-14DataControls页上的组件CBuilder开发环境DataAccess页上的组件主要用于连接各种数据集,其中最常用的是数据源(DataSource)组件。BDE是“BorlandDatabaseEngine”的缩写,主要提供对本地数据库或符合ODBC标准的数据库服务器的访问。BDE页上的组件有表(Tabel)、查询(Query)、数据库(Database)以及存储过程(StoredProc)等。ADO是Microsoft提出的新一代数据库标准,ADO页面上各个组件为数据库应用程序采用ADO访问方式提供支持。BCB最大限度地在不同的数据库技术标准之间保持兼容性,使现有的采用BDE技术的数据库应用能很方便地转换成基于ADO的数据库应用。CBuilder开发环境7)其它页除上面介绍的页以外,组件面板上还有Internet、IntenetExpress、FastNet、ActiveX、Midas、dataSnap、WebSnap等页,提供了对Internet编程、Web服务器应用程序、分布式多层数据库应用、COM以及CORBA等技术的广泛支持。CBuilder开发环境1.3.2对象监视窗口(ObjectInspector)ObjectInspector是BCBIDE的另一重要组成部分。它是一个可独立控制的窗口,由一个位于窗口上方的组合框和位于该组合框下方的有两个页面的列表组成。这两个页分别称为属性(Properties)页和事件(Events)页,单击页标签可在这两个页之间切换,如图1-15所示。ObjectInspector上方的组合框用来选取一个组件或对象,当选定了一个组件后,该组件的有关属性和事件分别被填入属性页和事件页。此外,在IDE的窗体设计区内选中某组件时,对应的属性也会自动进入ObjectInspetor。CBuilder开发环境BCB6.0新增了ObjectTreeView窗口,它是对象监视窗口的附属窗口(二者能合并成一个窗口)。由于该窗口以树形方式显示具有层次结构的组件(类似于在Windows的“资源管理器”中显示各级目录),因此便于更迅速地找到所需处理的组件。CBuilder开发环境图1-15ObjectInspector的两个页CBuilder开发环境从图1-15可看到,属性页分为若干行和两个栏,每一行对应一项属性,显示在第一栏中的是属性名,第二栏中的是属性值。图1-15上部的组合框内显示的“Form1”告诉我们,这是窗体Form1的属性页,它属于TForm1类,有Align、AutoScroll、AutoSize、BorderIcons、BorderStyle、Caption、ClientHeight、ClientWidth、Color、Cursor、DragMode、Enabled、Font、FormStyle、Height、Hint、Icon、Left、Name、Position、ShowHint、Top、Visible、Width、WindowState等属性,这里显示的各项属性值多数是缺省定义的初值。CBuilder开发环境以上这些属性中,Caption、Color、Cursor、DragMode、Enabled、Font、Height、Hint、Left、Name、ShowHint、Top、Visible、Width是所有可视控件的共有属性。窗体是一种组件,同时又是一个容器,即窗体中可放入其它组件。因此,窗体是比较复杂的组件,相应地具有较多属性。如BorderIcons、BorderStyle、FormStyle、Position、WindowState等都是窗体特有的属性。事件页也被分为若干行和两个栏。每一行对应一种事件,显示在第一栏中的是事件名,第二栏中的是与之联系的处理方法名称。缺省状态下第二栏中都是空白,表示不必处理这些事件。CBuilder开发环境当需要创建或修改某一事件的处理程序(方法)时,可在ObjectInspector事件页上找到该事件的所在行,然后双击该行的方法栏,就能生成或打开该方法的代码段。通常BCB会按一定规则给出该方法的名称,如TForm1::Button1Click表示Form1窗体内按钮Button1的OnClick事件的处理方法。BCB也允许输入或选取一个方法名,还可以将同一方法指派到若干不同的事件。另外,直接双击控件也能创建或打开该控件的一个缺省事件,通常该缺省事件是OnClick事件。CBuilder开发环境从图1-15中可看到,窗体主要有OnActivate、OnClick、OnClose、OnCreate、OnDbClick、OnDestroy、OnDragDrop、OnDragOver、OnHide、OnKeyDown、OnKeyPress、OnKeyUp、OnMouseDown、OnMouseMove、OnMouseUp、OnPaint、OnResize、OnShow等事件。上面这些事件中,OnClick、OnDbClick、OnDragDrop、OnDragOver、OnKeyDown、OnKeyPress、OnKeyUp、OnMouseDown、OnMouseMove、OnMouseUp是一般控件(TControl的派生类)共有的事件。CBuilder开发环境1.3.3代码编辑器代码编辑器窗口被一个垂直分隔条分成左右两部分,其左侧被称为“Explore”区(可以被关闭),右侧是代码编辑器。源文件在“Explore”区内显示为一棵树,树节点可以折叠或展开,双击某节点,即能使编辑器内的光标转移到对应的代码上。代码编辑器不仅是一个精致的文本编辑器,它还能够提供许多与处理C++代码有关的便利。该编辑器可打开多个页面便于同时处理若干代码文件,点击页标签可在页面间切换。CBuilder开发环境代码编辑器具有一定的语法分析功能,如能对文本中C++的保留词用粗体显示。在进行代码编辑时,可用鼠标移动插入点和选取文本,使用Edit菜单的剪切、复制和粘贴等功能(它们也可用组合键Ctrl+X、Ctrl+C和Ctrl+V完成)。此外,可使用各种组合键进行操作,如组合

温馨提示

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

评论

0/150

提交评论