C++Builder 5开发人员指南

C++Builder 5开发人员指南
作 者: (美)Borland/Inprise公司著;梁志刚等译
出版社: 机械工业出版社
丛编项: Borland/Inprise核心技术丛书
版权说明: 本书为出版图书,暂不支持在线阅读,请支持正版图书
标 签: Builder
ISBN 出版时间 包装 开本 页数 字数
未知 暂无 暂无 未知 0 暂无

作者简介

暂缺《C++Builder 5开发人员指南》作者简介

内容简介

本书分五部分阐述了C++Builder的使用。第一部分“使用C++Builder编程”描述了如何创建一般的C++Builder应用程序;第二部分“开发数据库应用程序”讲述了如何使用数据库工具和组件创建数据库应用程序;第三部分“编写分布式应用程序”描述如何创建Web服务器应用程序;第四部分“开发基于COM的应用程序”描述如何创建可与其他的基于COM的API对象相互操作的应用程序;第五部分“创建定制组件”讲述如何设计和实现自己的组件及如何使它们在IDE的组件面板中可用。本书内容丰富、全面,是C++Builder开发人员的理想手册。

图书目录

第一部分使用C++Builder编程第1章引言

11.1本书内容

11.2本书约定

21.3开发支持

2第2章C++Builder编程

32.1集成开发环境概述

32.2设计应用程序

32.3理解VCL

32.3.1属性

32.3.2方法

42.3.3事件

42.4VCL中的对象.组件与控件

42.4.1TObject分支

52.4.2TPersistent分支

52.4.3TComponent分支

52.4.4TControl分支

62.4.5TWinControl分支

62.4.6TControl的共同属性

72.4.7TControl通用标准事件

82.4.8TWinControl的共同属性

82.4.9TWinControl的通用标准事件

92.4.10创建应用程序用户界面

102.4.11使用组件

102.4.12VCL标准组件

112.5使用帮助对象

192.5.1使用列表

192.5.2使用串列表

192.5.3Windows注册表和INI文件

232.6开发应用程序

252.6.1编辑代码

252.6.2调试应用程序

262.6.3发布应用程序

26第3章创建应用程序.组件和程序库

273.1创建应用程序

273.1.1Windows应用程序

273.1.2程序设计模板

283.1.3控制台应用程序

283.1.4服务应用程序

283.2创建程序包和DLL

323.3在C++Builder中使用DLL

333.4在C++Builder中创建DLL

333.5创建包含VCL组件的DLL

343.6链接DLL

363.7编写数据库应用程序

363.8创建分布式应用程序

363.8.1使用TCP/IP的分布式应用程序

363.8.2使用COM和DCOM的分布式应用程序

373.8.3使用CORBA的分布式应用程序

383.8.4分布式数据库应用程序

383.9使用数据模块和远程数据模块

383.9.1创建及编辑数据模块

383.9.2存取窗体的数据模块

393.9.3向应用程序服务器工程中加入远程数据模块

393.10使用对象仓库

393.10.1在工程中共享对象

393.10.2在对象仓库中加入对象

393.10.3在小组环境中共享对象

393.10.4在工程中使用对象仓库的对象

403.10.5使用工程模板

403.10.6修改共享对象

403.10.7指定一个缺省工程.新窗体以及主窗体

41第4章开发应用程序用户界面

424.1理解TApplication.TScreen和TForm

424.1.1使用主窗体

424.1.2加入其他窗体

424.1.3隐藏主窗体

424.1.4工作在应用程序层

434.1.5处理屏幕

434.1.6管理布局

434.2处理消息

444.3窗体的更多细节

444.3.1控制窗体何时驻留内存

444.3.2给窗体传递其他参数

464.3.3从窗体获取数据

464.4重用组件和组件组

494.5创建并使用组件模板

494.6使用框架

504.6.1创建框架

504.6.2使用并修改框架

504.6.3共享框架

514.7创建并管理菜单

514.7.1打开菜单设计器

524.7.2创建菜单

534.7.3在对象观察器中编辑菜单项

554.7.4使用菜单设计器上下文菜单

564.7.5使用菜单模板

574.7.6将菜单保存为菜单模板

574.7.7在运行时控制菜单项

584.7.8合并菜单

584.7.9引入资源文件

594.8设计工具栏和酷栏

594.8.1使用面板组件增加工具栏

594.8.2使用工具栏组件增加工具栏

614.8.3增加酷栏组件

624.8.4响应点击

634.8.5增加隐藏的工具栏

634.8.6隐藏和显示工具栏

634.9使用动作列表

644.9.1动作对象

644.9.2使用动作

654.9.3预定义动作类

674.9.4编写动作组件

68第5章应用控件

715.1实现控件拖放操作

715.1.1开始拖动操作

715.1.2接受拖动项

715.1.3放下项

725.1.4终止拖动操作

725.1.5通过拖动对象定制拖放操作

725.1.6改变拖动鼠标指针

735.2实现控件的拖动-停靠操作

735.2.1使窗口控件成为一个停靠点

735.2.2使控件成为一个可停靠子控件

735.2.3控制子控件如何被停放

735.2.4控制子控件如何取消停靠

745.2.5控制子控件如何响应拖动-停靠操作

745.3处理控件中的文本

745.3.1设置文本对齐方式

755.3.2在运行时增加滚动条

755.3.3增加剪贴板对象

755.3.4选择文本

765.3.5选定全部文本

765.3.6剪切.拷贝及粘贴文本

765.3.7删除选定文本

765.3.8禁用菜单项

775.3.9提供弹出式菜单

775.3.10处理OnPopup事件

775.4在控件中加入图形

785.4.1指定控件为属主绘制控件

785.4.2给串列表增加图形对象

795.4.3调整属主绘制项的大小

805.4.4绘制各属主绘制项

81第6章使用图形和多媒体

826.1图形编程概述

826.1.1刷新屏幕

826.1.2图形对象的样式

836.1.3画布的通用属性和方法

836.1.4使用Canvas对象的属性

846.1.5使用Canvas的方法来绘制图形对象

876.1.6在应用程序中处理多个绘图对象

896.1.7在图形中绘制

936.1.8加载和保存图形文件

956.1.9使用剪贴板处理图形

966.1.10拖引线示例

976.2使用多媒体

1016.2.1将无声的视频剪辑加入应用程序

1026.2.2将声音和/或视频剪辑加入应用程序

103第7章编写多线程应用程序

1057.1定义线程对象

1057.1.1初始化线程

1067.1.2编写线程函数

1067.1.3编写清理代码

1087.2协调线程

1087.2.1避免同时访问

1087.2.2等待其他线程

1107.3执行线程对象

1117.3.1重载缺省优先级

1117.3.2开始和停止线程

1117.4调试多线程应用程序

111第8章异常处理

1138.1C++异常处理

1138.1.1异常处理的ANSI规定

1138.1.2异常处理语法

1138.1.3声明异常

1148.1.4发送异常

1148.1.5处理异常

1178.1.6异常规范

1198.1.7异常处理的构造和析构

1208.1.8未处理的异常

1208.1.9设置异常处理选项

1208.2Win32下的结构异常

1218.2.1结构异常的语法

1218.2.2处理结构异常

1228.2.3异常过滤器

1228.2.4在C++中混用结构异常

1248.2.5定义异常

1258.2.6引发异常

1258.2.7终止块

1268.3VCL异常处理

1278.3.1C++和VCL异常处理之间的差别

1278.3.2处理操作系统异常

1288.3.3处理VCL异常

1288.3.4VCL异常类

1288.3.5可移植性考虑

130第9章VCL的C++语言支持

1319.1C++和ObjectPascal对象模型

1319.1.1对象本身和实例

1319.1.2C++Builder中VCL类的对象构造

1329.1.3在基类构造函数调用虚拟方法

1349.1.4对象析构

1369.1.5AfterConstruction和BeforeDestruction

1379.1.6类虚拟函数

1379.2ObjectPascal数据类型和语言概念的支持

1389.2.1Typedefs

1389.2.2支持ObjectPascal语言的类

1389.2.3ObjectPascal语言的C++语言对应

1389.2.4动态数组

1399.2.5定义不同的类型

1419.2.6资源字符串

1419.2.7缺省参数

1429.2.8运行时类型信息

1429.2.9未映射的类型

1439.2.10关键字扩展

1449.2.11__declspec关键字扩展

145第10章使用包和组件

14710.1为什么使用包

14710.2运行时包

14710.2.1在应用程序中使用运行时包

14710.2.2动态装载包

14810.2.3决定使用哪个运行时包

14810.2.4定制包

14810.3设计时包

14910.4创建和编辑包

15010.4.1创建包

15010.4.2编辑现有的包

15010.4.3包源文件和工程选项文件

15110.4.4理解包的结构

15210.4.5编译包

15210.5发布包

15410.5.1发布使用包的应用程序

15410.5.2将包发布给其他开发者

15410.5.3包集文件

154第11章创建国际化的应用程序

15611.1国际化和本地化

15611.1.1国际化

15611.1.2本地化

15611.2国际化应用程序

15611.2.1应用程序代码

15611.2.2设计用户界面

16011.2.3分离资源

16011.2.4创建资源DLL

16011.2.5使用资源DLL

16111.2.6动态切换资源DLL

16211.3本地化应用程序

162第12章发布应用程序

16312.1发布一般应用程序

16312.2发布数据库应用程序

16512.2.1提供数据库引擎

16512.2.2多级分布式应用程序服务

16612.3发布Web应用程序

16612.4为各种主机环境编程

16612.4.1屏幕分辨率和颜色浓度

16712.4.2字体

16812.4.3Windows版本

16812.5软件许可证要求

16812.5.1DEPLOY.TXT

16812.5.2README.TXT

16912.5.3No-nonsense许可协议

16912.5.4第三方的产品文档

169第二部分开发数据库应用程序第13章设计数据库应用程序

17113.1使用数据库

17113.1.1数据库类型

17113.1.2数据库安全

17213.1.3事务

17313.1.4数据字典

17313.1.5引用完整性.存储过程和触发器

17413.2数据库结构

17413.2.1可扩展性规划

17513.2.2一级数据库应用程序

17613.2.3二级数据库应用程序

17613.2.4多级数据库应用程序

17713.3设计用户接口

17813.3.1显示单条记录

17813.3.2显示多条记录

17813.3.3分析数据

17913.3.4选择要显示的数据

17913.3.5编写报表

180第14章开发一级与二级应用程序

18114.1基于BDE的应用程序

18114.1.1基于BDE的(应用程序)结构

18114.1.2数据库连接

18314.1.3使用事务

18314.1.4缓存更新

18614.1.5创建及重组数据表

18714.2基于ADO的应用程序

18714.2.1基于ADO的应用程序结构

18714.2.2连接到ADO数据库

18814.2.3获取数据

18814.2.4创建并重组ADO数据库表

18814.3flat-file数据库应用程序

18914.3.1创建数据集

18914.3.2装载和存储数据

19114.3.3使用公文包模式

19114.4扩充为三级应用程序

192第15章创建多级应用程序

19315.1多级数据库模式优点

19315.2理解MIDAS技术

19315.2.1基于MIDAS的多级应用程序概述

19415.2.2客户端应用程序结构

19415.2.3应用程序服务器结构

19515.2.4选择连接协议

19815.3创建多级应用程序

19915.4创建应用程序服务器

19915.4.1设置远程数据模块

20015.4.2为应用程序服务器创建一个数据提供者

20215.4.3扩展应用程序服务器接口

20215.5创建客户端应用程序

20215.5.1连接应用程序服务器

20315.5.2管理服务器连接

20515.5.3调用服务器接口

20515.6在多级应用程序中管理事务

20615.7支持主/明细关系

20615.8支持远程数据模块的状态信息

20715.9编写MIDASWeb应用程序

20815.9.1将客户端应用程序以ActiveX控件形式分发

20915.9.2使用InternetExpress创建Web应用程序

20915.9.3使用XML代理

21115.9.4使用MIDAS页生成器创建Web页面

213第16章使用提供者组件

21616.1确定数据源

21616.2选择如何进行更新

21616.3控制包括在数据包里的信息

21716.3.1指定出现在数据包里的字段

21716.3.2设置影响数据包的选项

21716.3.3加入定制信息到数据包

21816.4响应客户端数据请求

21916.5响应客户端更新请求

21916.5.1在更新数据库前编辑delta包

22016.52影响更新如何被应用

22016.5.3屏显单独的更新

22116.5.4在提供者端解决更新错误

22116.5.5对不仅涉及单一数据表格的数据集应用更新

22216.6响应客户端产生的事件

22216.7处理服务器限制

222第17章管理数据库会话

22417.1使用一个session组件

22417.1.1使用缺省session

22417.1.2创建额外的session

22517.1.3为session命名

22617.1.4启动session

22617.1.5定制session的启动方式

22717.1.6指定缺省的数据库连接方式

22717.1.7创建.打开和关闭数据库连接

22717.1.8取消临时数据库连接

22817.1.9搜索数据库连接

22817.1.10取得有关session的信息

22917.1.11使用BDE别名

23017.1.12迭代一个session的数据库组件

23117.1.13指定Paradox目录位置

23217.1.14使用有口令保护Paradox和dBASE表

23217.2管理多个session

23417.3在数据模块中使用session组件

235第18章连接到数据库

23618.1理解永久和临时数据库组件

23618.1.1使用临时数据库组件

23618.1.2在设计时创建数据库组件

23618.1.3在运行时创建数据库组件

23718.2控制连接

23718.2.1关联数据库组件与session

23818.2.2指定一个BDE别名

23818.2.3设置BDE别名参数

23918.2.4控制服务器登录

23918.2.5连接到数据库服务器

24018.2.6连接到远程服务器时的特别考虑

24018.2.7关闭与数据库服务器的连接

24118.2.8关闭数据集但不关闭与服务器的连接

24118.2.9迭代数据库组件的数据集

24118.3理解数据库与session组件的交互

24218.4在数据模块中使用数据库组件

24218.5从TDatabase组件中执行SQL语句

24218.5.1从TDatabase执行SQL语句

24218.5.2执行参数化的SQL语句

243第19章理解数据集

24519.1什么是TDataSet

24519.2数据集类型

24619.3打开和关闭数据集

24619.4确定和设置数据集状态

24719.4.1关闭数据集

24819.4.2浏览一个数据集

24819.4.3允许编辑数据集

24919.4.4允许插入新的记录

25019.4.5允许对数据表做索引搜索和取范围

25019.4.6计算字段

25019.4.7过滤记录

25119.4.8更新记录

25119.5浏览数据集

25119.5.1使用First和Last方法

25119.5.2使用Next和Prior方法

25219.5.3使用MoveBy方法

25219.5.4使用Eof和Bof属性

25219.5.5标记并返回到记录位置

25419.6搜索数据集

25519.6.1使用Locate

25519.6.2使用Lookup

25619.7使用过滤器显示和编辑一个数据子集

25619.7.1打开和关闭过滤器

25719.7.2创建过滤器

25719.7.3设置过滤器属性

25719.7.4编写一个OnFilterRecord事件处理程序

25819.7.5设置过滤器选项

25819.7.6浏览过滤后的数据集记录

25919.8修改数据

26019.8.1编辑记录

26019.8.2加入新的记录

26119.8.3删除记录

26119.8.4把数据写入数据库

26219.8.5取消改动

26219.8.6修改整条记录

26219.9使用数据集事件

26319.9.1终止一个方法

26319.9.2使用OnCalcFields

26419.10使用基于BDE的数据集

26419.10.1基于BDE的功能概述

26519.10.2处理数据库和session连接

26519.10.3使用缓存更新

26619.10.4缓存BLOB

267第20章使用字段组件

26820.1理解字段组件

26920.1.1动态字段组件

26920.1.2永久字段组件

27020.2创建永久字段

27020.3排列永久字段

27120.4定义新的永久字段

27120.4.1定义一个数据字段

27220.4.2定义一个计算字段

27220.4.3编写计算字段的程序代码

27320.4.4定义一个查找字段

27320.4.5定义一个合计字段

27420.4.6删除永久字段组件

27520.5设置永久字段的属性和事件

27520.5.1在设计时设置显示和编辑属性

27520.5.2在运行时设置字段组件的属性

27620.5.3创建字段组件的属性集

27620.5.4关联数据集到字段组件

27720.5.5删除关联属性

27720.5.6控制和屏蔽用户输入

27720.5.7为数值.日期和时间字段使用缺省格式

27820.5.8处理事件

27820.6运行时使用字段组件的方法

27920.7显示.转换和存取字段值

27920.7.1在标准控件中显示字段组件值

27920.7.2转换字段值

28020.7.3使用缺省数据集属性存取字段值

28120.7.4使用数据集的Fields属性存取字段值

28120.7.5使用数据集的FieldByName方法存取字段值

28120.8检查字段的当前值

28220.9设置字段的缺省值

28220.10使用限制

28220.10.1创建定制限制

28220.10.2使用服务器限制

28220.11使用对象字段

28320.11.1显示ADT和数组字段

28320.11.2使用ADT字段

28420.11.3使用数组字段

28520.11.4使用数据集字段

28520.11.5使用引用字段

286第21章使用数据表

28721.1使用数据表组件

28721.2设置数据表组件

28721.2.1指定数据库位置

28721.2.2指定数据表名

28821.2.3为本地数据表指定数据表类型

28821.2.4打开.关闭数据表

28921.3控制对数据表的读/写访问

28921.4搜索记录

29021.5排序记录

29221.5.1使用GetIndexNames方法取得可用的索引列表

29221.5.2使用IndexName指定索引

29221.5.3为SQL数据表指定排序顺序

29321.5.4检查索引的字段列表

29421.6使用数据子集

29421.6.1理解范围和过滤器的不同

29421.6.2创建和应用一个新的范围

29521.6.3修改范围

29721.7删除一个数据表中的所有记录

29721.8删除数据表

29821.9重命名数据表

29821.10创建数据表

29821.11从另一个数据表导入数据

29921.12使用TBatchMove

30021.12.1创建批移动组件

30021.12.2指定批移动模式

30121.12.3映射数据类型

30221.12.4执行批移动

30221.12.5处理批移动错误

30221.13链接到相同数据库表的同步数据表

30321.14创建主/明细表

30321.15使用嵌套数据表

304第22章使用查询

30622.1有效地使用查询

30622.1.1对桌面数据库开发者使用查询

30622.1.2对数据库服务器开发者使用查询

30722.2使用查询组件能够存取什么数据库

30722.3使用查询组件概述

30722.4指定要执行的SQL语句

30822.4.1在设计时指定SQL属性

30922.4.2在运行时指定SQL语句

30922.5设置参数

31022.5.1在设计时提供参数

31122.5.2在运行时提供参数

31122.5.3使用数据源绑定参数

31222.6执行查询

31222.6.1在设计时执行查询

31322.6.2在运行时执行查询

31322.7准备查询

31422.8取消查询准备以释放资源

31422.9创建异类查询

31422.10提高查询性能

31522.11使用结果集

31522.11.1允许编辑结果集

31522.11.2对可用结果集的本地SQL要求

31622.11.3对可用结果集的远程服务器SQL要求

31622.11.4更新可用结果集的限制

31622.11.5更新只读结果集

316第23章使用存储过程

31723.1何时使用存储过程

31723.2使用存储过程

31823.2.1创建存储过程组件

31823.2.2创建存储过程

31823.2.3准备和执行存储过程

31923.2.4使用返回结果集的存储过程

31923.2.5使用以参数返回数据的存储过程

32023.2.6使用在数据上执行操作的存储过程

32123.3理解存储过程的参数

32323.3.1使用输入参数

32323.3.2使用输出参数

32323.3.3使用输入/输出参数

32423.3.4使用结果参数

32423.3.5在设计时访问参数

32423.3.6在设计时设置参数信息

32523.3.7在运行时创建参数

32523.3.8绑定参数

32623.4在设计时查看参数信息

32623.5使用Oracle重载存储过程

327第24章使用ADO组件

32824.1ADO组件概况

32824.2连接到ADO数据仓库

32924.2.1使用TADOConnection连接到数据仓库

32924.2.2调整连接

33124.2.3列出数据表和存储过程

33224.2.4使用(连接)事务

33424.3使用ADO数据集

33424.3.1所有ADO数据集组件的共有特点

33524.3.2使用TADODataSet

33924.3.3使用TADOTable

34024.3.4使用TADOQuery

34124.3.5使用TADOStoredProc

34224.4执行命令

34424.4.1指定命令

34424.4.2使用Execute方法

34524.4.3取消命令

34524.4.4使用命令获取结果集

34524.4.5处理命令参数

346第25章创建和使用客户端数据集

34725.1使用客户端数据集处理数据

34725.1.1在客户端数据集中浏览数据

34725.1.2限制记录显示

34725.1.3描述主/明细关系

34825.1.4限制数据值

34825.1.5设置只读数据

34825.1.6编辑数据

34925.1.7排序和索引

35025.1.8表示计算值

35125.1.9使用被维护的合计

35225.1.10加入特定应用程序信息到数据

35425.2从另一个数据集复制数据

35425.2.1直接指定数据

35425.2.2复制一个客户端数据集指针

35525.3使用带有数据提供者的客户端数据集

35525.3.1指定数据提供者

35525.3.2从应用程序服务器得到参数

35625.3.3传送参数给应用程序服务器

35625.3.4重载应用程序服务器上的数据集

35725.3.5从应用程序服务器请求数据

35725.3.6处理限制

35825.3.7更新记录

35925.3.8刷新记录

36125.3.9使用定制事件与提供者通信

36125.4使用带有flat-file数据的客户端数据集

36225.4.1创建新的数据集

36225.4.2从文件或数据流中装载数据

36225.4.3合并更新到数据

36325.4.4存储数据到文件或数据流

363第26章使用缓存更新

36426.1决定何时使用缓存更新

36426.2使用缓存更新概述

36426.2.1允许和禁用缓存更新

36526.2.2提取记录

36526.2.3应用缓存更新

36626.2.4取消未定的缓存更新

36826.2.5撤消删除缓存记录

36926.2.6指定缓存中的可视记录

36926.2.7检查更新状态

37026.3使用更新对象来更新数据集

37126.3.1为数据集指定UpdateObject属性

37126.3.2为更新组件创建SQL语句

37226.3.3执行更新语句

37526.3.4使用数据集组件更新数据集

37726.4更新只读结果集

37726.5控制更新处理

37826.5.1决定是否需要控制更新处理

37826.5.2创建一个OnUpdateRecord事件处理程序

37826.6处理缓存更新错误

37926.6.1引用要应用更新的数据集

38026.6.2指明产生错误的更新类型

38026.6.3指定要执行的动作

38026.6.4使用错误消息文本

38126.6.5访问字段的OldValue.NewValue和CurValue属性

381第27章使用数据控件

38327.1使用通用的数据控件特征

38327.1.1关联数据控件与数据集

38427.1.2编辑并更新数据

38427.1.3禁止和允许数据显示

38527.1.4刷新数据显示

38527.1.5允许鼠标.键盘及定时器事件

38627.2使用数据源

38627.2.1使用TDataSource属性

38627.2.2使用TDataSource事件

38727.3显示单个字段的控件

38827.3.1以标签显示数据

38827.3.2在编辑框中显示和编辑字段

38827.3.3在备注控件中显示和编辑文本

38827.3.4在richedit备注控件中显示和编辑文本

38927.3.5显示并且编辑在图像控件中的图形

38927.3.6在列表框和组合框中显示和编辑数据

38927.3.7在查找列表和组合框中显示和编辑数据

39027.3.8使用复选框处理布尔型字段值

39227.3.9使用单选组控件限制字段值

39227.4使用TDBGrid查看与编辑数据

39327.4.1使用缺省状态的网格控件

39327.4.2创建定制网格

39427.4.3显示ADT和数组字段

39727.4.4设置网格选项

39827.4.5在网格中编辑

39927.4.6在设计时对列重排序

40027.4.7在运行时对列重排序

40027.4.8在运行时响应用户动作

40027.5创建包含其他数据感知控件的网格

40127.6导航和操作记录

40227.6.1选择显示浏览器按钮

40227.6.2显示飞出式帮助

40327.6.3多个数据集使用一个浏览器

403第28章使用决策支持组件

40528.1概述

40528.2关于crosstabs

40628.2.1一维的crosstabs

40628.2.2多维的crosstabs

40628.3使用决策支持组件指南

40628.4使用决策支持组件的数据集

40728.4.1使用TQuery或TTable创建决策数据集

40728.4.2使用DecisionQuery编辑器创建决策数据集

40828.4.3决策查询的属性

40828.5使用决策立方

40828.5.1决策立方的属性和事件

40828.5.2使用DecisionCube编辑器

40928.6使用决策源

40928.7使用决策控制轴

41028.8创建和使用决策网格

41028.8.1创建决策网格

41128.8.2使用决策网格

41128.8.3决策网格属性

41128.9创建和使用决策图

41228.9.1创建决策图

41228.9.2使用决策图

41228.9.3决策图显示

41328.9.4定制决策图

41328.10运行时的决策支持组件

41528.10.1运行时的决策控制轴

41528.10.2运行时的决策网格

41628.10.3运行时的决策图

41628.11决策支持组件和内存控制

41628.11.1设置最大维.合计及单元

41628.11.2设置维状态

41628.11.3使用分页维

417第三部分编写分布式应用程序第29章编写CORBA应用程序

41929.1CORBA应用程序概述

41929.1.1了解存根和框架

42029.1.2使用聪明代理

42029.1.3激活服务器应用程序

42129.1.4动态绑定接口调用

42129.2编写CORBA服务程序

42129.2.1定义对象的接口

42129.2.2使用CORBA服务器向导

42229.2.3从IDL文件生成存根和框架

42229.2.4使用CORBA对象的实现向导

42329.2.5实现CORBA对象

42429.2.6改变CORBA接口

42629.2.7注册服务器接口

42729.3编写CORBA客户程序

42729.3.1使用存根

42729.3.2使用动态调用接口

42829.4测试CORBA服务器

42929.4.1建立测试工具

42929.4.2记录和运行测试的脚本

430第30章创建Internet服务器应用程序

43130.1术语和标准

43130.1.1统一资源定位符URL的构成

43130.1.2HTTP请求报文头信息

43230.2HTTP服务器的活动

43230.2.1构造客户请求

43230.2.2处理客户请求

43230.2.3响应客户请求

43330.3Web服务器应用程序

43330.3.1Web服务器应用程序的分类

43330.3.2创建Web服务器应用程序

43430.3.3Web模块

43430.3.4Web应用程序对象

43530.4Web服务器应用程序的结构

43530.5Web派发器

43530.5.1为派发器添加处理项

43630.5.2派发请求报文

43630.6处理项

43630.6.1确定处理项的触发时间

43630.6.2利用处理项响应客户请求

43730.7访问客户请求的信息

43830.7.1包含了请求报文头信息的属性

43830.7.2HTTP请求报文的内容

43930.8创建HTTP响应报文

43930.8.1填写响应报文的头

44030.8.2设置报文的内容

44030.8.3发送应答信息

44130.9生成响应报文的内容

44130.10在响应报文中使用数据库信息

44430.10.1给Web模块添加一个会话

44430.10.2用HTML表示数据库的信息

44430.11调试服务器应用程序

44630.11.1调试ISAPI和NSAPI应用程序

44630.11.2调试CGI和Win-CGI应用程序

448第31章使用套接字

45031.1实现服务

45031.1.1理解服务协议

45031.1.2服务和端口

45031.2套接字连接的类型

45131.2.1客户连接

45131.2.2侦听连接

45131.2.3服务器连接

45131.3说明套接字

45131.3.1说明主机

45131.3.2使用端口

45231.4使用套接字组件

45231.4.1使用客户套接字

45231.4.2使用服务器套接字

45331.5响应套接字的事件

45431.5.1出错事件

45431.5.2客户事件

45431.5.3服务器事件

45531.6通过套接字连接读写数据

45531.6.1非阻塞连接

45531.6.2阻塞连接

456第四部分开发基于COM的应用程序第32章COM技术概述

45932.1COM应用程序的构成

46032.1.1COM接口

46032.1.2COM服务器

46132.1.3COM客户

46332.2COM扩展

46432.2.1自动化服务器

46532.2.2活动服务器页

46532.2.3ActiveX控件

46632.2.4活动文档

46632.2.5事务对象

46632.2.6类型库

46732.3使用向导实现COM对象

469第33章使用类型库

47333.1类型库编辑器

47333.1.1类型库编辑器的部件

47333.1.2类型库元素

47733.1.3使用类型库编辑器

47833.2发布类型库

484第34章创建COM客户程序

48634.1引入类型库信息

48634.1.1使用ImportTypeLibrary对话框

48734.1.2使用ImportActiveX对话框

48734.1.3引入类型库信息后生成的代码

48834.2控制引入的对象

48934.2.1使用组件包装器

48934.2.2使用数据感知的ActiveX控件

49034.2.3使用MicrosoftWord打印文档的例子

49134.2.4编写基于类型库定义的客户代码

49334.3为没有类型库的服务器创建客户程序

495第35章创建简单的COM服务器程序

49635.1创建COM对象概述

49635.2设计COM对象

49635.3使用COM对象向导

49735.4使用自动化对象向导

49735.5指定ATL选项

50035.6定义COM对象接口

50035.6.1为对象接口添加属性

50135.6.2给对象接口添加方法

50135.6.3提供客户事件

50135.7自动化接口

50235.7.1双向接口

50235.7.2派发接口

50335.7.3自定义接口

50335.8调度数据

50335.8.1自动化兼容的类型

50335.8.2自动化调度的类型限制

50435.8.3自定义调度

50435.9注册COM对象

50435.9.1注册进程内服务器

50435.9.2注册进程外服务器

50535.10调试应用程序

505第36章创建活动服务器页

50636.1创建活动服务器对象

50636.1.1使用ASP本征

50736.1.2为进程内或进程外服务器创建ASP

51036.2注册活动服务器对象

51036.2.1注册一个进程内服务器

51036.2.2注册一个进程外服务器

51036.3测试和调试活动服务器页应用程序

510第37章创建ActiveX控件

51237.1创建ActiveX控件概述

51237.2设计ActiveX控件

51337.3从VCL控件生成ActiveX控件

51437.4创建基于VCL窗体的ActiveX控件

51537.5ActiveX控件的许可证控制

51537.6自定义ActiveX控件接口

51637.6.1添加附加的属性.方法和事件

51737.6.2使简单数据与类型库的绑定

51837.7为ActiveX控件创建属性页

52037.7.1创建属性页

52037.7.2向属性页添加控件

52037.7.3把属性页与ActiveX控件的属性关联

52137.7.4把属性页与ActiveX控件关联

52137.8注册ActiveX控件

52237.9测试ActiveX控件

52237.10在网络上发布ActiveX控件

522第38章创建MTS或COM+对象

52438.1理解事务对象

52438.2管理资源

52538.2.1访问对象的前后关系

52538.2.2及时激活

52638.2.3资源共享

52638.2.4对象共享

52938.3MTS和COM+的事务支持

53038.3.1事务的特性

53038.3.2状态相关和状态无关对象

53138.3.3影响事务如何结束

53138.3.4初始化事务

53238.3.5事务超时

53438.4基于角色的安全性

53438.5创建事务对象概述

53538.6使用事务对象向导

53538.7生成COM+事件

53738.7.1使用事件对象向导

53738.7.2使用COM+事件对象激发事件

53838.8传递对象指针

53838.9调试和测试事务对象

53938.10安装事务对象

53938.11管理事务对象

540第五部分创建定制组件第39章组件创建概述

54139.1可视组件库

54139.2组件和类

54239.3如何创建组件

54239.3.1修改已有的控件

54239.3.2创建窗口控件

54339.3.3创建图形控件

54339.3.4子类Windows控件

54339.3.5创建不可视组件

54339.4组件内部有什么

54339.4.1消除相关性

54439.4.2属性.方法和事件

54439.4.3图形封装

54539.4.4注册

54539.5创建新组件

54539.5.1使用组件向导

54639.5.2手工创建组件

54739.6测试未安装的组件

54939.7测试已安装的组件

55139.8安装组件到组件面板

55139.8.1定位组件文件

55239.8.2添加组件

552第40章组件开发员的面向对象编程

55340.1定义新类

55340.1.1派生新类

55340.1.2声明新组件类

55440.2祖先.后代和类层次结构

55440.3控制访问

55440.3.1隐藏实现细节

55540.3.2定义组件开发员接口

55740.3.3定义运行时接口

55740.3.4定义设计时接口

55740.4派发方法

55740.4.1常规方法

55840.4.2虚拟方法

55840.5抽象类成员

55940.6类与指针

559第41章创建属性

56041.1为什么要创建属性

56041.2属性的类型

56041.3发布继承的属性

56141.4定义属性

56141.4.1属性声明

56141.4.2内部数据存储

56241.4.3直接访问

56241.4.4访问方法

56241.4.5缺省属性值

56441.5创建数组属性

56541.6存储和载入属性

56541.6.1使用存储-载入机制

56641.6.2指定缺省值

56641.6.3决定存储内容

56741.6.4载入后的初始化

56741.6.5存储和载入未发布的属性

567第42章创建事件

56942.1什么是事件

56942.1.1事件是closure

56942.1.2事件是属性

56942.1.3事件类型是closure类型

57042.1.4事件处理程序是可选的

57042.2实现标准事件

57142.2.1标识标准事件

57142.2.2使事件可见

57142.2.3改变标准的事件处理

57242.3定义你自己的事件

57242.3.1触发事件

57242.3.2定义处理程序类型

57242.3.3声明事件

57342.3.4调用事件

573第43章创建方法

57543.1避免相关性

57543.2命名方法

57543.3保护方法

57643.3.1应为public的方法

57643.3.2应为protected的方法

57643.4虚拟方法

57643.5声明方法

576第44章在组件中使用图形

57844.1图形概述

57844.2使用画布

57944.3使用图片

57944.3.1使用图片.图形或画布

57944.3.2载入和存储图形

58044.3.3处理调色板

58044.4幕后位图

58144.4.1创建和管理幕后位图

58144.4.2拷贝幕后位图

58144.5响应改变

581第45章处理消息

58345.1理解消息处理系统

58345.1.1Windows消息中有什么

58345.1.2派发消息

58445.2修改消息处理

58445.2.1重载处理器方法

58445.2.2使用消息参数

58545.2.3屏蔽消息

58545.3创建新的消息处理器

58645.3.1定义自己的消息

58645.3.2声明一个新的消息处理方法

587第46章使组件在设计时可用

58846.1注册组件

58846.1.1声明Register函数

58846.1.2编写Register函数

58846.2添加组件面板位图

59046.3为你的组件提供帮助

59046.4添加属性编辑器

59246.4.1派生属性编辑器类

59246.4.2将属性作为文本进行编辑

59346.4.3将属性作为整体进行编辑

59346.4.4指定编辑器特性

59446.4.5注册属性编辑器

59446.5添加组件编辑器

59546.5.1向上下文菜单添加项目

59546.5.2改变双击时的行为

59646.5.3添加剪贴板格式

59746.5.4注册组件编辑器

59746.6属性范畴

59846.6.1一次注册一个属性

59846.6.2一次注册多个属性

59846.6.3属性范畴类

59846.6.4使用IsPropertyInCategory函数

59946.7将组件编译成软件包

59946.8解决定制组件问题

600第47章修改已有的组件

60147.1创建和注册该组件

60147.2修改组件类

60247.2.1重载构造函数

60247.2.2指定新的缺省属性值

603第48章创建图形组件

60448.1创建和注册组件

60448.2发布继承的属性

60548.3添加图形能力

60548.3.1决定画什么

60548.3.2重载构造函数和析构函数

60648.3.3发布笔和刷子

60748.3.4绘制组件图像

60948.3.5调整形状绘制

610第49章定制网格

61249.1创建和注册组件

61249.2发布继承的属性

61349.3修改初始值

61349.4重定义单元大小

61449.5填充单元

61549.6定位月和年份

61949.7定位日期

62049.7.1移动选择

62049.7.2提供OnChange事件

62049.7.3排除空白单元

621第50章创建数据感知控件

62250.1创建数据浏览控件

62250.1.1创建和注册组件

62250.1.2创建只读的控件

62350.1.3添加数据链接

62550.1.4响应数据修改

62750.2创建数据编辑控件

62750.2.1修改FReadOnly的缺省值

62850.2.2处理鼠标按下和键盘按下消息

62850.2.3更新字段数据链接类

62950.2.4修改Change方法

63050.2.5更新数据集

630第51章创建对话框组件

63251.1定义组件接口

63251.2创建和注册组件

63251.3创建组件接口

63351.3.1包含窗体单元文件

63351.3.2添加接口属性

63451.3.3添加Execute方法

63451.4测试组件

636附录ANSI具体实现标准