目 录
译者序
第一部分 入门
第1章 程序设计基础
1.1 本书的结构
1.2范例程序
1.3创建设计良好的程序
1.3.1设计问题:书写简单的代码
1.3.2螺旋式上升
1.3.3好OOP与差OOP的对比
1.3.4注意灵活的事件处理程序
1.3.5感到懒于理清程序的环节
1.3.6避免使用隐藏数据交叉链接对象
1.3.7简短的方法
1.3.8变量、方法以及过程的命名
1.3.9避免特征漂移
1.3.10创建组件
1.3.11使用第三方工具
1.4本书正文的注意事项
1.4.1Unleash和Merc40包
1.4.2CodeBox单元
1.4.3建立网络
1.4.4Borland/Inprise的名称变化
1.4.5注释代码
1.5总结
第2章IDE和VCL增强
2.1可停放的工具栏
2.2使用工具窗口
2.3使用COdeExplor
2.4 Delphi4中的新工具
2.4.1使用ProjectManager和调试器
2.4.2调试DLL
2.4.3使用模块视图
2.4.4使用事件日志窗口
2.4.5CPU视图
2.4.5调试器中的新特征
2.4.6CodeBrowser和TooltipSymbolInsight
2.5停靠窗口
2.5.1在窗体中停放控件
2.5.2在窗体中停放窗体
2.6动作列表
2.6.1使用动作列表
2.6.2使用标准动作
2.7函数重载
2.7.1方法重载和继承
2.7.2使用方法重载时要避免的错误
2.7.3默认参数
2.8动态数组
2.9implements关键字
2.10总结
第3章 多态性
3.1多态性的概念
3.1.1 赋值和等于的比较
3.1.2多态性的简单例子
3.2多态性赋值能力
3.2.1设置子对象适合于它们的父对象
3.2.2多态性的另一面
3.3虚方法和多态性
3.3.1经典的形状演示
3.3.2没有多态性的代码
3.4 VCL中的多态性
3.5总结
第4章 异常处理
4.1本章如何处理异常
4.2异常的理论
4.2.1 异常的功能
4.2.2默认异常处理程序
4.2.3整个程序是一个大try块
4.2.4未处理异常引起的恐慌
4.3异常类
4.4基本异常句法
4.4.1一个简单的try..except模块
4.4.2异常的关联错误字符串
4.4.3找到错误的地址
4.4.4异常处理总结
4.5引发异常
4.5.1引发VCL异常类
4.5.2理解VCL异常类
4.5.3运行Gauntlet:多异常类
4.5.4在常规except语句中捕获异常
4.6创建和引发自己的异常
4.7再引发异常
4.8try..finally块
4.9流、异常和空闲空间
4.10 替换默认的异常处理程序
4.11 使用资源跟踪错误字符串
4.12总结
第5章 线程
5.1进程和内存
5.1.1 线程与多任务
5.1.2 抢占式与非抢占式多任务
5.2线程:一个简单的例子
5.3多线程程序
5.3.1任Thread2程序中使用线程
5.3.2向线程函数传递一个参数
5.3.3临界区:让多个线程同时工作
5.4处理互斥元
5.5线程和VCL
5.6线程安全数据库访问
5.7VCL线程安全对象
5.8使用TThread对象
5.9设置线程的优先级
5.10重访Delphi线程
5.11总结
第二部分 创建组件
第6章 创建组件(一)
6.1组件原理
6.2创建现存组件的派生组件
6.2.1创建简单的组件
6.2.2双向工具
6.2.3注册组件
6.2.4改变组件的默认行为
6.2.5动态创建并检查组件
6.3包:将组件放入ComponentPalette中
6.3.1什么是包
6.3.2创建包
6.4 扩展Un1eash单元
6.4.1TCCBigEdit和TCCEmptyPanel控件
6.4.2创建复合组件
6.4.3创建组件的published属性
6.4.4流属性的注意事项
6.5创建真正有用的组件
6.6总结
第7章 创建组件:(二)
7.1从头开始建立组件
7.2时钟组件
7.2.1了解TCCClock
7.2.2TCCColorClock
7.2.3创建FancyClock
7.3为组件创建图标
7.4ToolsAPI:PropertyEditor和 ComponentEditor
7.4.1五个主要的ToolsAPI
7.4.2PropertyEditor
7.4.3关于注册你自己的组件以及
ComponentEditor的更多知识
7.4ComponentE山tor
7.5不可视的组件
7.6FindAllW程序
7.6.1使用TFileIterator遍历目录
7.6.2什么时候应该把对象做成不可见组件
7.6.3AllDirs单元和FileIter单元
7.6.4遍历目录
7.6.5使用FindFirstFindNext和FindC1ose
7.6.6创建事件处理程序
7.7CompDirs程序
7.8TCCPickDirDlg
7.9组件模板
7.10 ActiveX控件
7.11总结
第三部分 数据库编程
第8章 字段和数据库工具
8.1从关系数据库开始
8.1.1关系数据库模型的优势
8.1.2 简单的逻辑设置:关系数据库的基础
8.1.3DBD和DatabaseExplorer中的索引和关键字
8.2 重点规则:给每个表建立一个关键字
8.2.1一对多的关系:数据和索引
8.2.2用主关键字和主索引工作
8.2.3用副索引和外部关键字工作
8.2.4关键字的重要性
8.3用数据库工具浏览和操作数据库
8.3.1浏览DBDEMOS数据库的关键字和索引
8.3.2用DatabaseDesktop创建索引
8.3.3创建别名
8.3.4使用DatabaseDesktop创建主关键字和外部关键字
8.3.5探究引用完整性
8.3.6关系数据库和联结
8.3.7 联结和QBE
8.4FieldsEditor
8.5计算字段
8.6运行期间的TDBGrid
8.6.1在运行中控制DBGrid的Options属性
8.6.2运行时显示DBGrid选项
8.7使用TDBGrid列
8.7.1改变TDBGird对象的标题
8.7.2 改变网格里的整列
8.7.3改变网格里一行的颜色
8.7.4 改变列宽
8.7.5在TDBGrid里隐藏列
8.7.6显示可见字段的列表
8.7.7运行时移动列
8.8查找字段
8.9多记录对象
8.10总结
第9章 平面文件现实世界数据库
9.1本章示例程序
9.2设计应用程序
9.2.1定义数据
9.2.2程序设计的焦点
9.3定义程序的外观
9.4查找:处理Category字段
9.5设置程序的命令结构
9.6查看应用程序的“粗略草稿
9.7创建自己的对象
9.8创建最终的程序
9.9切换进和切换出只读模式
9.10排序数据
9.11查询数据
9.12筛选数据
9.13标记文件
9.14设置颜色
9.15使用注册表
9.16剪贴板:剪切、复制和粘贴
9.17总结
第10章 关系式数据库
10.1现实世界的数据
10.2测试关联地址程序
10.3kdAdd代码
10.3.1使用kdAdd程序
10.3.2为kdAdd建立索引
10.3.3查询记录
10.3.4插入数据和取消操作
10.3.5删除数据:程序的数据模块初览
10.3.6数据模块:级联删除
10.3.7数据模块:总体登记
10.3.8在字符串资源中加入错误字符串
10.3.9About框
10.4使用kdAddExplore程序
10.4.1使用TSession
10.4.2kdAddExplore程序的代码
10.4.3用TTreeView显示系统数据库
10.4.4 展开TTreeView节点
10.4.5为TTreeView加入可用表的列表
10.4.6找到索引和字段
10.4.7显示别名和别名参数
10.5总结
第11章 使用本地InterBase服务器
11.1从InterBase开始
11.1.1数据库和工作市场
11.1.2设置本地InterBase
11.1.3设置InterBase别名
11.2创建数据库
11.2.1使用WISQL
11.2.2创建表
11.3利用WISQL管理数据库
11.4事务处理
11.4.1创建TRANSACT程序
11.4.2使用TRANSACT程序
11.4.3理解事务处理
11.5高速缓存更新
11.6多对多关系
11.7安全和InterBaseServerManager
11.7.1定义表的访问权力
11.7.2利用InterBaseServerManager备份表
11.8总结
第12章 InterBase编程
12.1关于Music程序
12.2设计Music程序
12.2.1创建数据库方案
12.2.2修改表:空或非空
12.2.3重新命名现有表中的字段
12.2.4创建Blob字段
12.2.5主关键字和外部关键字
12.3在Music表创建索引
12.4 生成器、触发器和存储过程
12.4.1不要在活动索引上使用触发器
12.4.2使用存储过程
12.4.3来自Delphi端的存储过程
12.5服务器端规则和客户端规则
12.6Music程序界面概述
12.7使用子窗体
12.8Music程序的代码
12.8.1使用Music程序
12.8.2禁止密码:TdataBase对象
12.8.3FormCreate事件
12.9使用Music程序中的数据
12.10向数据库提出一个问题:简短的SQL入门
12.10.1不返回数据集合的存储过程
12.10.2查看数据范围
12.11总结
第四部分 COM
第13章 COM接口和基础
13.1理解COM接口
13.1.1COM是什么?
13.1.2COM和窗口
13.1.3即插即用应用程序
13.1.4 COM的问题
13.1.5UNIX上的COM
13.1.6COM+和COM的未来
13.2接口介绍
13.2.1新接口类型
13.2.2接口不是类
13.2.3不能直接实现接口
13.2.4 利用类实现接口
13.2.5调用接口的方法
13.2.6破坏接口
13.3接口背后的理论
13.3.1使用接口的原因
13.3.2维护或更新接口
13.4 创建和使用COM接口
13.4.1理解GUID
13.4.2关于注册表和GUID所有内容
13.4.3理解IUnknown
13.4.4 实现IUnknown
13.4.5为接口指定GUID
13.4.6幻数
13.4.7UnknownByUser程序的注释
13.5高级接口问题
13.5.1多个接口
13.5.2方法解析语句
13.5.3Implements伪指令
13.5.4虚方法表
13.6总结
第14章 TC0mObjectTTypedComObject以及类型库
14.1样例程序
14.2TComObject
14.2.1在DLL中放置普通接口
14.2.2IClassFactory
14.2.3ISystemInfo接口
14.2.4 注册DLL
14.2.5从可执行文件访问存储在DLL中的COM对象
14.2.6 越过程序边界编组数据
14.2.7编组数据
14.2.8Variant数组
14.2.9调用ISystemInfo数据
14.3类型库和查询对象
14.3.1创建类型库
14.3.2 创建查询类型库的客户程序
14.3.3检索ITypeInfo
14.3.4 获取接口信息
14.4 总结
第15章 创建COM自动化服务器和客户程序
15.1理解OLE自动化客户程序和服务器
15.2 建立简单的COM服务器和客户程序
15.2.1建造简单的服务器
15.2.2在服务器上添加方法
15.2.3查看生成的源代码
15.2.4添加接口属性
15.2.5建立简单客户程序
15.2.6通过TCOMInterface来调用方法
15.2.7通过dispinterface调用方法
15.2.8通过Vaeiant调用方法
15.3IDispatch 双重接口和dispinterface
15.3.1从Word调用SimpleAutoServer
15.3.2VTable和双重接口
15.4 类型库
15.4.1什么是类型库
15.4.2创建类型库
15.4.2有效的自动化类型
15.5用EmptyParam忽略参数
15.6注册
15.7自动编组数据
15.8从一个CoClass得到两个或更多的接口
15.9总结
第16章 用De1phi完成Word和Excel自动化
16.1自动化Office应用程序的系统要求
16.2启动Delphi和Excel
16.2.1启动Excel
16.2.2使用COMObj
16.2.3了解Excel的简单自动化
16.2.4比较接口和Variant
16.2.5理解CreateOleObject
16.2.6Variant和类型
16.2.7创建Excel自动对象
16.3了解Excel自动化对象
16.3.1在APplication对象内访问各种对象
16.3.2使用自动化
16.4在Excel和Word间共享图表
16.4.1创建电子表格
16.4.2创建图表
16.4.3使用SeriesCollection对象
16.5从Excel向Word复制数据
16.5.1Word内部的自动化
16.5.2发送文档
16.6总结
第五部分 Internet编程
第17章 接口和InternetExplorer
17.1Variant与接口的对比
17.1.1 补救接口
17.1.2使用类型库
17.2本章所需文件
17.3使用Word和Exce1
17.3.1使用Excel和Word接口
17.3.2比较Variant和接口技术
17.4 使用IE和TwebBrowser
17.4.1开始:访问WebPage中的元素
17.4.2运行时在浏览器上处理
HTMI
17.5在浏览器内放置ActiveX控件
17.6总结
第18章 WebBroker: CGI和ISAPI
18.1WebModule
18.2WebServerApplicationWizard
18.2.1CGI
18.2.2WinCGI
18.2.3ISAPI/NSAPI
18.2.4CGI与ISAPI
18.3WebBroker组件
18.3.1TWebModule
18.3.2 TWebResponse
18.3.3 TWebRequest
18.4 InreaBob
18.5TPageProducer
18.6TDataSetPageProducer
18.7浏览状态
18.7.1FatURL
18.7.2Cookie
18.7.3 隐含字段
18.8高级网页的生成
18.9TDaraSetTableProducer
18.10DatabaseWebApplicationWizard
18.11TQueryTableProducer
18.12总结
第19章 WinINet和FTP
19.1理解WinINet FTP和TCP/IP
19.1.1 所需文件
19.1.2确保FTP在系统中运行
19.1.3安装TCP/IP应该注意的问题
19.2FTP使用WinINet
19.2.1使用InternetOpen
19.2.2使用InternetConnect
19.2.3获得当前目录
19.2.4 在目录中查找文件(一)
19.2.5在目录中查找文件(二)
19.2.6检索文件(一)
19.2.7创建回调
19.2.8检索文件(二)
19.2.9发送文件到服务器的简单方法
19.2.10删除文件
19.2.11创建和删除目录
19.3在程序中使用FTP控件
19.3.1连接服务器
19.3.2响应OnNewDir事件
19.3.3改变目录
19.3.4 跟踪文件传送
19.4总结
第六部分 分布式编程
第20章 DCOM
20.1COM和分布式体系结构
20.1.1 什么是DCOM
20.1.2在Windows95/98和WindowsNT上运行DCOM服务器
20.1.3作为DCOM服务器使用Windows98
20.2 简单的DCOM客户程序和服务器
20.2.1建立服务器
20.2.2理解Safecall
20.2.3机器之间编组数据
20.2.4创建DCOM客户程序
20.2.5使用远程对象
20.3再访问SystemInformation程序
20.4轻量远程数据集
20.4.1理解DataCOMServer程序
20.4.2访问远程数据集的DataCOMC1ient
20.4.3理解DataCOMClient
20.4.4编辑数据行
20.5程序数据和自动化数据
20.6测试远程调试系统
20.7总结
第21章 MIDAS
21.1多层计算概述
21.1.1什么是MIDAS
21.1.2分布式计算的目的
21.1.3公文包模型概述
21.1.4术语
21.1.5查找调度程序
21.2技术细节:使用分布式数据集
21.2.1建立简单的MIDAS应用程序
21.2.2创建SimpleMidasServer
21.2.3理解服务器
21.2.4导出TProvider接口
21.2.5为客户应用程序准备服务器
21.2.6创建简单的MIDAS客户程序
21.2.7理解简单的MIDAS客户程序
21.2.8远程访问服务器
21.2.9使用套接字代替DCOM
21.3建立一对多应用程序
21.4 建立远程数据客户应用程序
21.4.1更新和刷新数据
21.4.2公文包模型
21.4.3PacketRecords
21.5错误处理
21.6 服务器端逻辑与客户端逻辑
21.7所需的DLL
21.8使用OLEnterprise
21.9 总结
第22章 AcriveForm
22.1介绍ActiveForm
22.2建立ActiveForm
22.3配置在InternetExp1orer里使用的ActiveForm
22.3.1为ActiveForm设置选项
22.3.2连接到ActiveForm上
22.3.3了解OCCACHE
22.4 使用CAB文件和包
22.4.1理解INF文件
22.4.2许可证问题
22.5在Word中运行AcriveForm
22.5.1注册应用程序
22.5.2在Microsoft岁ord里运行窗体
22.6使用ActiveFOrm模板
22.7套接字和AcriveForm
22.7.1套接字概述
22.7.2建立套接字支持的MIDASActiveForm
22.7.3创建基于MIDAS的ActiveForm
22.8总结
第23章 MTS
23.1什么是MTS
23.2如何安装MTS
23.3创建简单的MTS服务器
23.4 创建简单的MTS客户程序
23.5调用本地对象
23.6用MTS注册对象
23.7远程调用对象
23.8创建简单的MTS数据库服务器
23.9创建简单的MTS数据库客户程序
23.10处理MTS事务
23.11建立跨越多个服务器的MTS示例
23.12Rocket程序的代码
23.13总结
第24章 CORBA
24.1理解CORBA
24.1.1什么是CORBA
24.1.2比较DCOM和CORBA
24.1.3什么是ORB
24.1.4什么是SmartAgent
24.1.5什么是BOA
24.1.6什么是代理、存根和框架
24.1.7理解Delphi和CORBA
24.2两个重要的CORBA存储库
24.2.1什么是InterfaceRepository
24.2.2什么是ImplementationRepository
24.3简单的CORBA对象
24.3.1服务器
24.3.2客户程序
24.3.3理解客户程序
24.3.4理解CORBA存根
14.3.5理解CORBA框架
24.4理解服务器的IDL接口
24.5简单的CORBA动态项目
24.6简单的CORBA数据库对象
24.6.1 创建CORBA数据库服务器
24.6.2创建客户程序
24.7利用VisiBrokerManager和OSFind
24.8总结
第25章 Delphi、Java和C++
25.1在Delphi和Java中使用CORBA
25.2从Delphi调用Java服务器
25.3从C++Builder调用DelphiCORBA服务器
25.3.1用C++建立CORBA服务器并从Delphi调用
25.3.2理解BCBCorbaserver
25.4 总结
第七部分 游戏编程
第26章 VCL图形类
26.1WindowsGDI与VCLTCanvas
26.1.1理解GDI
26.1.2 VCL使图形编程更容易
26.2使用TCanvas
26.3研究与使用画刷
26.3.1TBeush.Color属性分析
26.3.2TBrush.Style属性分析
26.3.3TBrush.Assign方法分析
26.4 研究与使用画笔
26.4.1TPen.Style属性分析
26.4.2TPen.Width属性分析
26.4.3TPen.Mode属性分析
26.5研究与使用字体
26.5.1TFont.Height属性分析
26.5.2TFont.Size属性分析
26.5.3TFont.Name属性分析
26.5.4 TFont.Style属性分析
26.6 研究与使用TCanvas.PenPos
26.7研究与使用TCanvas.ClipRect
26.8研究与使用TCanvas.CopyMode
26.9研究与使用TCanvas.Pixels
26.10 分析与理解TCanvas方法
26.11 MainBrush范例代码
26.11.1 OnCreate事件
26.11.2FormShow方法
26.11.3设置画笔模式
26.11.4使用Fonts
26.11.5在画布上画出形状
26.11.6使用CopyMode
26.11.7修改ClipRect
26.12其他名称的线条
26.13 深入研究VCL
26.13.1深入了解TColor
26.l3.2Colors样本项目
26.13.3OnChange事件处理程序
26.14 调色板
26.15 深入了解Windows的图形文件格式
26.15.1分析位图和DIB
26.15.2分析图标
26.15.3分析元文件
26.16分析TPaintBox和Tlmage
26.17再谈位图
26.18 总结
第27章 DirectDraw
27.1理解DirectDraw
27.1.1什么是DirectDraw
27.1.2 关于双缓冲的几点想法
27.1.3硬件与仿真
27.2 一个简单的DirwreDraw程序
27.3释放接口
27.3.1进入独占模式和改变屏幕分辨率
27.3.2DirectDraw表面是什么
27.3.3向屏幕写文本
27.3.4 交换表面
27.3.5释放内存
27.4平滑动画
27.5使用位图
27.6游戏资源
27.7总结
第28章 更多的DirectX技术
28.1DirectSound
28.1.1 初始化DirectSound
28.1.2枚举声音驱动程序
28.1.3使用DirectSOundBuffer
28.1.4 打开WAV文件
28.1.5播放声音文件
28.1.6播放大文件
28.1.7一次播放两个WAV文件
28.2创建DirectX游戏
28.2.1创建DelphiMan程序
28.2.2实现DelphiMan程序的注意事项
28.2.3“机器人物 的控制
28.2.4小结DelphiMan程序
28.3浏览Direct3D
28.4关键的3D技术
28.5总结
配套光盘内容