第1章 关于Delphi与本书(1)
1.1 Delphi是什么(1)
1.1.1 Delphi的历史(1)
1.1.2 选择Delphi意味着什么(2)
1.1.3 如何使用Delphi编程(3)
1.2 本书的特点(4)
1.2.1 本书有哪些内容,没有哪些内容(5)
1.2.2 本书是如何写作的(5)
1.2.3 如何阅读本书(5)
第2章 Object Pascal入门(7)
2.1 运算符(7)
2.1.1 赋值运算符(7)
2.1.2 比较运算符(7)
2.1.3 逻辑运算符(8)
2.1.4 算术运算符(8)
2.1.5 按位运算符(9)
2.1.6 其他运算符和模拟运算(9)
2.2 常量和变量(12)
2.2.1 无类型常量和有类型常量(13)
2.2.2 全局变量和局部变量(13)
2.2.3 声明时使用编译时函数(14)
2.2.4 资源字符串(15)
2.3 过程和函数(15)
2.3.1 过程和函数的区别(15)
2.3.2 子过程(16)
2.4 数据类型(17)
2.4.1 常用类型和复杂类型(17)
2.4.2 不同语言的数据类型对照表(17)
2.5 程序流程控制(18)
2.5.1 条件分支(18)
2.5.2 循环(19)
2.5.3 跳转(20)
2.5.4 用过程辅助实现流程控制(21)
2.6 单元的组织结构(24)
2.6.1 Program的组织结构(24)
2.6.2 Unit的组织结构(25)
2.6.3 单元循环引用(27)
2.7 with...do语句的用法(28)
2.8 IDE的快捷键列表(29)
第3章 Object Pascal精要(31)
3.1 数据类型及其相互关系(31)
3.1.1 数据类型概述(32)
3.1.2 变量的内存分配和释放(48)
3.1.3 数据的内存结构(52)
3.1.4 强数据类型与类型转化(53)
3.2 过程和函数(59)
3.2.1 作用域(60)
3.2.2 参数传递(62)
3.2.3 声明指令(66)
3.3 类和类成员(66)
3.3.1 类和类成员概述(67)
3.3.2 深入认识方法(69)
3.3.3 深入认识属性(78)
3.3.4 深入认识事件(84)
3.3.5 类成员重新声明(86)
3.3.6 inherited释疑(88)
3.3.7 接口的真相(89)
3.4 编译指令(95)
3.4.1 开关指令(96)
3.4.2 参数指令(99)
3.4.3 条件指令(102)
第4章 VCL入门(104)
4.1 VCL概述(104)
4.2 组件与控件的概念(105)
4.3 使用VCL(105)
4.4 扩展VCL(107)
第5章 VCL精要(108)
5.1 揭开VCL的神秘面纱(108)
5.1.1 VCL架构(108)
5.1.2 构造和析构的内幕(111)
5.1.3 虚拟方法表和动态方法表(115)
5.1.4 TObject如何使用虚拟方法表(118)
5.1.5 运行时类型信息(122)
5.2 VCL的消息机制(130)
5.2.1 VCL消息机制(130)
5.2.2 处理消息的八种方法(134)
5.2.3 选用什么方法发送消息(140)
5.2.4 VCL消息大全(144)
5.3 多态性(161)
5.3.1 多态性的概念(162)
5.3.2 多态性和虚方法的关系(164)
第6章 组件开发实战(167)
6.1 三种组件开发方法(167)
6.1.1 继承、聚合和子类化(167)
6.1.2 接口、虚方法和辅助类的选择(169)
6.2 文件拖放监视器(169)
6.2.1 文件拖放原理(169)
6.2.2 文件拖放实例(170)
6.2.3 组件封装(171)
6.3 托盘组件(175)
6.3.1 装入托盘图标(175)
6.3.2 在应用程序最小化时去掉状态栏的图(177)
6.3.3 给托盘图标增加接收鼠标消息功能(179)
6.3.4 处理鼠标消息(181)
6.3.5 显示动画图标(182)
6.3.6 设置程序的自动启动功能(182)
6.3.7 组件封装(183)
6.4 自动下拉的TComboBox(190)
6.5 开发数据敏感控件(195)
6.5.1 数据敏感原理(196)
6.5.2 开发日期敏感控件(196)
6.6 开发聚合组件(203)
6.6.1 开发LabelDBDatePicker(203)
6.6.2 加强LabelDBDatePicker(206)
6.7 开发图形图像控件(211)
6.8 开发QuickReport组件(218)
第7章 组件开发相关工作(225)
7.1 包和包编译指令(225)
7.2 创建组件图标(226)
7.3 属性编辑器(227)
7.4 组件编辑器(231)
第8章 常用函数和过程(235)
8.1 数据类型转化类(235)
8.1.1 数值和字符串的相互转化(235)
8.1.2 整数和字符串的相互转化(236)
8.1.3 实数和字符串的相互转化(236)
8.1.4 实数子类型的相互转化(237)
8.1.5 布尔类型和字符串的相互转化(237)
8.2 字符串处理类(237)
8.2.1 字符串的分类(240)
8.2.2 和字符串相关的类(241)
8.3 流处理类(245)
8.4 内存管理、程序流程控制类(250)
8.4.1 内存管理(250)
8.4.2 程序流程控制(251)
8.5 文件操作类(252)
8.5.1 使用文件句柄进行I/O处理(252)
8.5.2 使用Pascal文件变量进行I/O处理(253)
8.5.3 面向对象文件I/O处理(255)
8.5.4 文件属性操作(255)
8.5.5 其他函数和方法(256)
8.6 日期时间类(258)
8.6.1 获取/合成日期/时间(258)
8.6.2 日期/时间和字符串的转换(259)
8.6.3 日期/时间的运算(259)
8.7 VCL类(260)
8.7.1 Classes单元(260)
8.7.2 Controls单元(262)
8.7.3 Dialogs单元(262)
8.8 位运算类(264)
8.9 图形图像类(266)
第9章 高级开发技巧(268)
9.1 自定义窗口过程(268)
9.2 自定义消息及其替代方法(270)
9.3 自定义系统惟一消息(272)
9.4 新颖的类工厂(275)
9.5 使用对象库(281)
9.6 非发布(published)数据的持久化(287)
9.7 使用回调函数(288)
9.8 使用递归算法(290)
9.9 编写NT服务程序(294)
9.10 编写只能惟一运行的程序(295)
9.11 字段类型全家福(298)
9.12 获取数据库结构信息(300)
9.13 深入使用TCanvas(301)
9.14 指针列表类的使用(308)
9.15 结构化存储技术(312)
9.16 挂钩技术(321)
9.17 TRichEdit高级开发(327)
9.18 用TTreeView分析数据表的结构(334)
9.19 SQL语句分析器(339)
9.20 剪贴板高级编程(344)
第10章 综合例子——使用Socket传输多个文件(350)
10.1 Socket简介(350)
10.2 TServerSocket和TClientSocket(351)
10.3 设计通讯协议(354)
10.4 实现服务端(357)
10.5 实现客户端(367)
10.6 组件封装(374)
10.7 自动下载技术在项目中的应用(391)