Delphi 的知识体系
第一部分   快速开发的基础 
  第1章   Delphi 5下的Windows编程    1 
    1.1   Delphi产品家族    1 
    1.2  Delphi是什么    3 
      1.2.1   可视化开发环境    3 
      1.2.2   编译器的速度和已编译代码的效率    4 
      1.2.3   编程语言的功能及其复杂性    4 
      1.2.4   数据库结构的灵活性和可扩展性    5 
      1.2.5   框架对设计和使用模式的扩充    5 
    1.3   历史回顾    5 
      1.3.1   Delphi 1    5 
      1.3.2   Delphi 2    6 
      1.3.3   Delphi 3    6 
      1.3.4   Delphi 4    7 
      1.3.5   Delphi 5    7 
      1.3.6   未来    7 
    1.4   Delphi 5的IDE    7 
      1.4.1   主窗口    8 
      1.4.2   窗体设计器    9 
      1.4.3   Object Inspector    9 
      1.4.4   代码编辑器    9 
      1.4.5   代码浏览器    10 
      1.4.6   源代码生成器    10 
    1.5   创建一个简单的应用程序    11 
    1.6   事件机制的优势在哪里    12 
    1.7   加速原型化    13 
    1.8   可扩展的组件和环境    13 
    1.9   IDE最重要的十点功能    13 
    1.10   总结    15 
  第2章   Object Pascal语言    16 
    2.1   注解    16 
    2.2   新的过程和函数特征    17 
      2.2.1   圆括号    17 
      2.2.2   重载    17 
      2.2.3   缺省值参数    17 
    2.3   变量    18 
    2.4   常量    19 
    2.5   运算符    20 
      2.5.1   赋值运算符    20 
      2.5.2   比较运算符    20 
      2.5.3   逻辑表达式    21 
      2.5.4   算术运算符    21 
      2.5.5   按位运算符    22 
      2.5.6   加减运算过程    22 
    2.6   Object Pascal类型    23 
      2.6.1   类型的比较    23 
      2.6.2   字符    24 
      2.6.3   字符串    24 
      2.6.4   变体类型    32 
      2.6.5   Currency    39 
    2.7   用户自定义类型    39 
      2.7.1   数组    39 
      2.7.2   动态数组    40 
      2.7.3   记录    41 
      2.7.4   集合    42 
      2.7.5   对象    43 
      2.7.6   指针    44 
      2.7.7   类型别名    46 
    2.8   强制类型转换和类型约定    46 
    2.9   字符串资源    47 
    2.10   测试条件    47 
      2.10.1   if语句    47 
      2.10.2   case语句    48 
    2.11   循环    49 
      2.11.1   for循环    49 
      2.11.2   while循环    49 
      2.11.3   repeat...until    50 
      2.11.4   Break()过程    50 
      2.11.5   Continue()过程    50 
    2.12   过程和函数    50 
    2.13   作用域    50 
    2.14   单元    55 
      2.14.1   uses子句    55 
      2.14.2   循环单元引用    56 
    2.15   包    56 
      2.15.1   使用Delphi的包    56 
      2.15.2   包的语法    56 
    2.16   面向对象编程    57 
    2.17   使用Delphi对象    58 
      2.17.1   声明和实例化    58 
      2.17.2   析构    59 
    2.18   方法    59 
      2.18.1   方法的类型    60 
      2.18.2   属性    61 
      2.18.3   可见性表示符    62 
      2.18.4   友类    62 
      2.18.5   对象的秘密    63 
      2.18.6   TObject:所有对象的祖先    63 
      2.18.7   接口    63 
    2.19   结构化异常处理    66 
      2.19.1   异常类    68 
      2.19.2   执行的流程    70 
      2.19.3   重新触发异常    71 
    2.20   运行期类型信息    72 
    2.21   总结    72 
  第3章   Win32 API    73 
    3.1   对象:以前和现在    73 
      3.1.1   内核对象    73 
      3.1.2   GDI和用户对象    75 
    3.2   多任务和多线程    75 
    3.3   Win32内存管理    76 
      3.3.1   什么是线性内存模式    76 
      3.3.2   Win32系统是怎样管理内存的    76 
    3.4   Win32的错误处理    78 
    3.5   总结    78 
  第4章   应用程序框架和设计    79 
    4.1   理解Delphi环境和项目的体系结构    79 
    4.2  构成Delphi 5项目的文件    79 
      4.2.1   项目文件    80 
      4.2.2   单元文件    80 
      4.2.3   窗体文件    80 
      4.2.4   资源文件    81 
      4.2.5   项目选项及桌面设置文件    81 
      4.2.6   备份文件    81 
      4.2.7   包文件    82 
    4.3   项目管理提示    82 
      4.3.1   一个项目一个目录    82 
      4.3.2   共享代码的单元    82 
      4.3.3   多项目管理    84 
    4.4   Delphi 5项目的框架类    84 
      4.4.1   TForm类    84 
      4.4.2   TApplication类    89 
      4.4.3   TApplication的方法    91 
      4.4.4   TApplication的事件    92 
      4.4.5   TScreen类    93 
    4.5   定义公共体系结构:使用对象库    93 
      4.5.1   考虑应用程序的体系结构    93 
      4.5.2   Delphi固有的体系结构    94 
      4.5.3   体系结构的例子    94 
      4.5.4   子窗体TChildForm    94 
      4.5.5   数据库基础模式窗体TDBMode- Form    96 
             4.5.6   数据库导航/状态窗体TDBNavstat- Form    97 
             4.5.7   使用框架进行应用程序结构设计    102
           4.6   一些项目管理的功能    103 
      4.6.1   在项目中添加资源    103 
      4.6.2   改变屏幕光标    105 
      4.6.3   避免创建一个窗体的多个实例    106 
      4.6.4   在DPR文件中增加代码    107 
      4.6.5   覆盖应用程序的异常处理    107 
      4.6.6   显示一个封面    109 
      4.6.7   使窗体尺寸最小    110 
      4.6.8   运行没有窗体的项目    111 
      4.6.9   退出Windows    112 
      4.6.10   防止关闭Windows    113 
    4.7   总结    113 
第5章   理解Windows消息    114 
5.1   什么是消息    114 
5.2   消息的类型    115 
5.3   Windows消息系统是如何工作的    115 
5.4    Delphi的消息系统    116 
5.5   消息处理    117 
5.5.1   消息处理:不是无约定的    118 
5.5.2   对Result域赋值    119 
5.5.3   TApplication的OnMessage事件    119 
5.6   发送自己的消息    120 
5.6.1   Perform()    120 
5.6.2   sendMessage()和PostMessage()    120 
5.7   非标准的消息    121 
5.7.1   通知消息    121 
5.7.2   VCL内部的消息    122 
5.7.3   用户自定义的消息    122 
5.8   一个消息系统的剖析:VCL    123 
5.9   消息与事件之间的关系    128 
5.10   总结    129 
第6章   代码标准文档    130 
6.1   一般的源代码格式规则    130 
6.1.1   缩进    130 
6.1.2   边距    130 
6.1.3   begin...end    130 
6.2   Object Pascal    131 
6.2.1   括号    131 
6.2.2   保留字和关键字    131 
6.2.3   过程和函数    131 
6.2.4   变量    132 
6.2.5   类型    133 
6.2.6   构造类型    133 
6.2.7   语句    134 
6.2.8   结构化异常处理    134 
6.2.9   类    135 
6.3   文件    136 
6.3.1   项目文件    136 
6.3.2   窗体文件    136 
6.3.3   数据模块文件    137 
6.3.4   远程数据模块文件    137 
6.3.5   单元文件    137 
6.3.6   文件头    138 
6.4   窗体与数据模块    138 
6.4.1   窗体    138 
6.4.2   数据模块    139 
6.5   包    139 
6.5.1   运行期包与设计期包    139 
6.5.2   文件命名标准    140 
6.6   组件    140 
6.6.1   自定义组件    140 
6.6.2   组件实例的命名规则    140 
6.7   代码标准文档升级    141 
第7章   使用ActiveX控件    142 
7.1   什么是ActiveX控件    142 
7.2   何时使用ActiveX控件    142 
7.3   把ActiveX控件加到组件面板上    143 
7.4   Delphi组件外套    144 
7.4.1   外套文件是从哪来的    152 
7.4.2   枚举    152 
7.4.3   控件接口    152 
7.4.4   TOleControl的派生类    152 
7.4.5   方法    152 
7.4.6   属性    153 
7.5   在应用程序中使用ActiveX控件    153 
7.6   发布带有ActiveX控件的应用程序    154 
7.7   注册ActiveX控件    155 
7.8   BlackJack:一个OCX示范程序    155 
7.8.1   纸牌    155 
7.8.2   游戏    157 
7.8.3   调用ActiveX控件的方法    165 
7.9   总结    166 
第二部分   高级技术 
第8章   使用GDI和字体的图像编程    167 
8.1   TImage:Delphi的图像显示    167 
8.2   存储图像    168 
8.3   使用TCanvas的属性    169 
8.3.1   画笔    170 
8.3.2   使用TCanvas.Pixels属性    175 
8.3.3   使用刷子    175 
8.3.4   使用字体    180 
8.3.5   使用CopyMode属性    181 
8.3.6   其他属性    184 
8.4   使用TCanvas的方法    184 
8.4.1   用TCanvas画线    184 
8.4.2   用TCanvas画几何形状    185 
8.4.3   画图的示范程序    185 
8.4.4   用TCanvas输出文字    189 
8.5   坐标系统和映射模式    193 
8.5.1   设备坐标系    193 
8.5.2   逻辑坐标系    194 
8.5.3   屏幕坐标系    194 
8.5.4   窗体坐标系    194 
8.5.5   坐标映射    195 
8.5.6   设置映射模式    196 
8.5.7   设置窗口/视区范围    196 
8.5.8   关于映射模式的示范程序    197 
8.6   创建一个绘画程序    202 
8.7   编写动画程序    215 
8.8   高级字体    221 
8.8.1   Win32字体类型    222 
8.8.2   基本字体元素    222 
8.8.3   GDI字体分类    223 
8.8.4   显示不同字体    223 
8.9   实际创建一种字体    224 
8.9.1   这个程序是如何工作的    224 
8.9.2   显示字体的有关信息    230 
8.10   总结    233 
第9章   动态链接库    234 
9.1   究竟什么是DLL    234 
9.2   静态链接与动态链接    235 
9.3   为什么要使用DLL    236 
9.3.1   共享代码、资源和数据    236 
9.3.2   隐藏实现的细节    237 
9.3.3   自定义控件    237 
9.4   创建和使用DLL    237 
9.4.1   数美分:一个简单的DLL    237 
9.4.2   显示DLL中的模式窗体    239 
9.5   显示DLL中的无模式窗体    241 
9.6   在Delphi应用程序中使用DLL    242 
9.7   DLL的入口函数和出口函数    246 
9.7.1   进程/线程初始化和终止例程    246 
9.7.2   DLL入口/出口示例    246 
9.8   DLL中的异常    250 
9.8.1   在16位Delphi中捕捉异常    250 
9.8.2   异常和Safecall指示符    250 
9.9   回调函数    250 
9.9.1   使用回调函数    253 
9.9.2   拥有者绘制的列表框    253 
9.10   从DLL中调用回调函数    253 
9.11   在不同的进程间共享DLL数据    256 
9.11.1   一个可以被共享数据的DLL    256 
9.11.2   访问DLL中的共享数据    259 
9.12   引出DLL中的对象    261 
9.13   总结    265 
第10章   Delphi 5的打印    266 
10.1   TPrinter对象    266 
10.2   TPrinter.Canvas    267 
10.3   简单打印    267 
10.3.1   打印TMemo组件中的内容    267 
10.3.2   打印位图    268 
10.3.3   打印RTF格式的文本    269 
10.4   打印窗体    269 
10.5   高级打印    270 
10.5.1   打印分栏报表    270 
10.5.2   放弃打印进程    275 
10.5.3   打印信封    275 
10.5.4   抽象打印    276 
10.5.5   一个简单的打印预览程序    285 
10.6   其他打印任务    286 
10.6.1   TDeviceMode结构    286 
10.6.2   设置打印份数    288 
10.6.3   设置打印方向    288 
10.6.4   设置纸张尺寸    288 
10.6.5   设置纸张的长度    289 
10.6.6   设置页的宽度    289 
10.6.7   设置打印比例    289 
10.6.8   设置打印颜色    289 
10.6.9   设置打印质量    289 
10.6.10   设置双面打印    290 
10.6.11   指定默认打印机    290 
10.7   获取打印机信息    291 
10.7.1   GetDeviceCaps()和DeviceCapa- 
             bilities()    292 
10.7.2   获取打印机信息的示范程序    292 
10.8   总结    303 
第11章   编写多线程应用程序    304 
11.1   对线程的解释    304 
11.1.1   一种新型的多任务    304 
11.1.2   在Delphi程序中使用多线程    304 
11.1.3   关于线程的滥用    305 
11.2   TThread对象    305 
11.2.1   TThread基础    305 
11.2.2   TThread实例    307 
11.2.3   线程的终止    307 
11.2.4   与VCL同步    308 
11.2.5   一个演示程序    310 
11.2.6   优先级和时序安排    311 
11.2.7   挂起和唤醒线程    313 
11.2.8   测试线程的时间    313 
11.3   管理多线程    314 
11.3.1   线程局部存储    314 
11.3.2   线程同步    317 
11.4   一个多线程的示范程序    325 
11.4.1   用户界面    326 
11.4.2   搜索线程    330 
11.4.3   调整优先级    334 
11.5   多线程与数据库    335 
11.6   多线程与图形处理    340 
11.7   总结    343 
第12章   文件处理    344 
12.1   处理文件的输入/输出    344 
12.1.1   文本文件的处理    344 
12.1.2   类型文件的处理    348 
12.1.3   无类型文件的处理    356 
12.2   TTextRec 和TFileRec结构    359 
12.3   内存映射文件    360 
12.3.1   内存映射文件的应用    360 
12.3.2   使用映射文件    361 
12.3.3   内存映射文件的一致性    366 
12.3.4   文本搜索实用程序    366 
12.4   目录和驱动器    373 
12.4.1   获得有效驱动器和驱动器类型列 
             表    373 
12.4.2   获取驱动器信息    374 
12.4.3   获取Windows目录位置    376 
12.4.4   获取系统目录的位置    376 
12.4.5   获取当前目录    377 
12.4.6   在目录中查找文件    377 
12.4.7   复制和删除目录树    380 
12.4.8   获取文件的版本信息    382 
12.4.9   获取版本号    387 
12.4.10   获得操作系统信息    388 
12.4.11   使用TVerInfoRes类    388 
12.5   使用SHFileOperation()函数    390 
12.6   总结    391 
第13章   核心技术    392 
13.1   高级消息处理    392 
13.1.1   子类化    392 
13.1.2   HookMainWindow()    396 
13.2   防止同时出现多个应用程序实例    397 
13.3   使用Delphi的BASM    401 
13.3.1   BASM是如何工作的    401 
13.3.2   简易的参数访问    402 
13.3.3   var声明的参数    402 
13.3.4   Register调用约定    403 
13.3.5   全汇编过程    403 
13.3.6   记录    403 
13.4   使用挂钩    404 
13.4.1   设置挂钩    404 
13.4.2   使用挂钩函数    405 
13.4.3   使用脱钩函数    405 
13.4.4   使用SendKeys:一个JournalPlay- 
             back类型的挂钩    405 
13.5   使用C/C++的OBJ文件    416 
13.5.1   调用一个函数    416 
13.5.2   命名问题    417 
13.5.3   共享数据    417 
13.5.4   使用Delphi RTL    418 
13.6   使用C++类    422 
13.7   替换    426 
13.7.1   generic替换    426 
13.7.2   WM_COPYDATA    435 
13.8   获取包的信息    440 
13.9   总结    443 
第14章   获取系统信息    444 
14.1   InfoForm:获取一般信息    444 
14.1.1   格式化字符串    444 
14.1.2   获取内存状态    445 
14.1.3   获取操作系统版本信息    446 
14.1.4   获取目录信息    447 
14.1.5   获取系统信息    448 
14.1.6   检查环境    450 
14.2   平台无关性    455 
14.3   Windows 95/98: 使用ToolHelp32    455 
14.3.1   快照    456 
14.3.2   列举进程    457 
14.3.3   列举线程    460 
14.3.4   列举模块    461 
14.3.5   列举堆    462 
14.3.6   堆的视图    465 
14.3.7   程序源码    466 
14.4   Windows NT/2000: PSAPI    474 
14.5   总结    485 
第15章   移植到Delphi 5    486 
15.1   Delphi 5的新功能    486 
15.1.1   哪个版本    486 
15.1.2   单元、组件和包    487 
15.2   从Delphi 4移植到Delphi 5    487 
15.2.1   IDE问题    488 
15.2.2   RTL问题    488 
15.2.3   VCL问题    488 
15.2.4   Internet开发问题    488 
15.2.5   数据库问题    488 
15.3   从Delphi 3移植到Delphi 5    489 
15.3.1   无符号的32位整数    489 
15.3.2   64位整数    490 
15.3.3   Real类型    490 
15.4   从Delphi 2移植到Delphi 5    490 
15.4.1   改变为Boolean类型    490 
15.4.2   ResourceString    490 
15.4.3   RTL的改变    491 
15.4.4   TCustomForm    491 
15.4.5   GetChildren()    491 
15.4.6   自动化服务器    491 
15.5   从Delphi 1移植到Delphi 5    491 
15.5.1   字符串和字符    492 
15.5.2   变量长度和范围    497 
15.5.3   记录的排列    497 
15.5.4   32位的数学运算    498 
15.5.5   TDateTime类    498 
15.5.6   单元结束代码    498 
15.5.7   汇编语言    499 
15.5.8   调用约定    499 
15.5.9   动态链接库    500 
15.5.10   Windows操作系统的变化    501 
15.5.11   32位的地址空间    501 
15.5.12   32位资源    501 
15.5.13   VBX控件    502 
15.5.14   Windows API函数的变化    502 
15.5.15   16位和32位并存    504 
15.6   总结    504 
第16章   MDI应用程序    505 
16.1   创建MDI应用程序    505 
16.1.1   理解MDI基础    505 
16.1.2   子窗体    506 
16.1.3   主窗体    522 
16.2   菜单    528 
16.2.1   用MDI程序合并菜单    528 
16.2.2   在菜单中列出打开的文档    528 
16.3   杂类MDI技术    529 
16.3.1   在MDI客户区输出一幅位图    529 
16.3.2   创建一个隐藏的子窗体    534 
16.3.3   最小化、最大化、还原所有MDI 
             子窗体    536 
16.4   总结    538 
第17章   用剪贴板共享信息    539 
17.1   剪贴板基础    539 
17.1.1   剪贴板对文本操作    540 
17.1.2   剪贴板对位图操作    540 
17.2   创建你自己的剪贴板格式    541 
17.2.1   创建一个感知剪贴板的对象    541 
17.2.2   使用自定义的剪贴板格式    545 
17.3   总结    547 
第18章   多媒体编程    548 
18.1   创建一个简单的媒体播放器    548 
18.2   播放WAV文件    549 
18.3   播放视频    550 
18.3.1   显示第一帧    550 
18.3.2   使用Display属性    551 
18.3.3   使用DisplayRect属性    551 
18.3.4   理解TMediaPlayer事件    552 
18.3.5   DDGMPlay的源代码    552 
18.4   设备支持    553 
18.5   创建音频CD播放器    554 
18.5.1   显示闪屏    555 
18.5.2   开始编写CD播放器    555 
18.5.3   更新CD播放器的信息    557 
18.5.4   刷新CD播放器的方法    558 
18.5.5   CD播放器的源代码    559 
18.6   总结    565 
第19章   测试与调试    566 
19.1   常见的编程错误    567 
19.1.1   在类的实例创建之前使用了它    567 
19.1.2   确保类的实例被释放    567 
19.1.3   掌握指针    568 
19.1.4   使用未初始化的PChar类变量    568 
19.1.5   释放空指针    569 
19.2   使用内部集成调试器    569 
19.2.1   使用命令行参数    569 
19.2.2   断点    569 
19.2.3   逐行执行代码    571 
19.2.4   使用Watch窗口    572 
19.2.5  Debug Inspector    572 
19.2.6   计算和修改    572 
19.2.7   访问调用栈    572 
19.2.8   查看线程    573 
19.2.9   事件日志    573 
19.2.10   模块视图    574 
19.2.11   调试DLL    574 
19.2.12   CPU视图    575 
19.3   总结    575 
第三部分   基于组件的开发 
第20章   VCL元素和运行期类型信息    577 
20.1   什么是组件    577 
20.2   组件的类型    578 
20.2.1   标准控件    578 
20.2.2   自定义控件    578 
20.2.3   图形控件    578 
20.2.4   非可视组件    579 
20.3   组件的结构    579 
20.3.1   属性    579 
20.3.2   属性的类型    580 
20.3.3   方法    580 
20.3.4   事件    581 
20.3.5   流属性    582 
20.3.6   拥有关系    582 
20.3.7   父子关系    583 
20.4   可视组件的层次关系    583 
20.4.1   TPersistent类    584 
20.4.2   TComponent类    584 
20.4.3   TControl类    585 
20.4.4   TWinControl类    585 
20.4.5   TGraphicControl类    586 
20.4.6   TCustomControl类    586 
20.4.7   其他类    587 
20.5   运行期类型信息    589 
20.5.1   TypInfo.pas单元:定义运行类型 
             信息    589 
20.5.2   获取类型信息    591 
20.5.3   获取方法指针的类型信息    596 
20.5.4   获取有序类型的类型信息    600 
20.5.5   通过RTTI给属性赋值    604 
20.6   总结    606 
第21章   编写自定义组件    607 
21.1   组件设计基础    607 
21.1.1   确定是否需要编写组件    607 
21.1.2   编写组件的一般步骤    607 
21.1.3   确定一个祖先类    608 
21.1.4   创建一个组件单元    609 
21.1.5   添加属性    609 
21.1.6   加入事件    615 
21.1.7   创建自定义的方法    619 
21.1.8   构造器和析构器    619 
21.1.9   注册组件    620 
21.1.10   测试组件    621 
21.1.11   提供组件图标    623 
21.2   一个组件的示例    623 
21.2.1   扩展Win32组件外套功能    624 
21.2.2   TddgRunButton: 创建属性    631 
21.3   TddgButtonEdit:一个容器组件    636 
21.3.1   设计    636 
21.3.2   显现属性    637 
21.3.3   显现事件    637 
21.3.4   TddgDigitalClock:创建组件事 
             件    639 
21.3.5   把窗体加到组件面板上    642 
21.4   组件包    644 
21.4.1   为什么使用包    644 
21.4.2   什么情况下不使用包    645 
21.4.3   包的类型    645 
21.4.4   包文件    645 
21.4.5   在Delphi 5应用程序中使用包    645 
21.4.6   把包安装到IDE中    645 
21.4.7   设计自己的包    646 
21.4.8   包的版本    649 
21.4.9   包的编译指令    649 
21.4.10   关于{$WEAKPACKAGEUNIT} 
               指令    649 
21.4.11   包的命名约定    650 
21.5   附加包    650 
21.6   总结    655 
第22章   高级组件技术    656 
22.1   伪可视组件    656 
22.1.1   扩展提示功能    656 
22.1.2   创建一个THintWindow的派生 
             类    656 
22.1.3   椭圆型的窗口    658 
22.1.4   使派生的提示窗口有效    659 
22.1.5   放置TDDGHintWindow    659 
22.2   动态组件    659 
22.2.1   走马灯组件    659 
22.2.2   编写这个组件    659 
22.2.3   在内存中的位图上输出    659 
22.2.4   输出组件    661 
22.2.5   使组件动起来    661 
22.2.6   测试TddgMarquee组件    668 
22.3   编写属性编辑器    670 
22.3.1   派生出一个属性编辑器对象    670 
22.3.2   把属性当作文本来编辑    671 
22.3.3   注册新的属性编辑器    674 
22.3.4   用对话框来编辑属性    675 
22.4   组件编辑器    677 
22.4.1   TComponentEditor    677 
22.4.2   一个简单的组件    678 
22.4.3   一个简单的组件编辑器    679 
22.4.4   注册组件编辑器    679 
22.5   对非公开的组件数据进行流操作    681 
22.5.1   声明属性    681 
22.5.2   DefineProperty()的例子    682 
22.5.3   TddgWaveFile:调用Define- 
             BinaryProperty()的例子    684 
22.6   属性类别    690 
22.6.1   类别的类    690 
22.6.2   自定义类别    691 
22.7   组件列表:TCollection和 
       TCollectionItem    694 
22.7.1   声明TCollectionItem类: 
             TRunBtnItem    695 
22.7.2   声明TCollection类: 
             TRunButtons    696 
22.7.3   实现TddgLaunchPad、TRun- 
             BtnItem和TRunButtons    696 
22.7.4   用对话框属性编辑器编辑 
             TCollectionItem组件的列表    702 
22.8   总结    711 
第23章   COM和ActiveX    712 
23.1   COM基础    712 
23.1.1   COM:组件对象模型    712 
23.1.2   COM、ActiveX、OLE的异同    713 
23.1.3   术语    713 
23.1.4   ActiveX的伟大之处    713 
23.1.5   OLE 1和OLE 2    713 
23.1.6   结构化存储    714 
23.1.7   统一数据传输    714 
23.1.8   线程模式    714 
23.1.9   COM+    714 
23.2   COM与Object Pascal    714 
23.2.1   接口    715 
23.2.2   使用接口    716 
23.2.3   HResult返回类型    719 
23.3   COM对象和类工厂    720 
23.3.1   TComObject和TComObject- 
             Factory    720 
23.3.2   in-process COM服务器    721 
23.3.3   创建一个in-proc COM服务器实 
             例    722 
23.3.4   out-of-process COM服务器    723 
23.4   聚合    723 
23.5   分布式COM    723 
23.6   自动化    724 
23.6.1   IDispatch接口    724 
23.6.2   类型信息    725 
23.6.3   后期捆绑与前期捆绑    725 
23.6.4   注册    725 
23.6.5   创建自动化服务器    725 
23.6.6   创建自动化控制器    740 
23.7   高级自动化技术    745 
23.7.1   自动化事件    745 
23.7.2   自动化集合    754 
23.7.3   类型库中新的接口类型    760 
23.7.4   交换二进制数据    761 
23.7.5   COM的语言支持    763 
23.8   MTS    766 
23.8.1   为什么会出现MTS    767 
23.8.2   什么是MTS    767 
23.8.3   Delphi中的MTS    770 
23.9   TOleContainer    785 
23.9.1   一个简单的范例程序    785 
23.9.2   一个稍复杂的范例程序    787 
23.10   总结    794 
第24章   扩展Windows外壳    795 
24.1   托盘图标组件    795 
24.1.1   API    795 
24.1.2   处理消息    797 
24.1.3   图标及提示    797 
24.1.4   鼠标点击    798 
24.1.5   隐藏应用程序    799 
24.1.6   托盘图标应用程序举例    805 
24.2   应用程序桌面工具栏    807 
24.2.1   API    807 
24.2.2   TAppBar:AppBar的窗体    808 
24.2.3   使用TAppBar    815 
24.3   外壳链接    817 
24.3.1   获取一个IShellLink实例    818 
24.3.2   使用IShellLink    819 
24.3.3   创建一个外壳链接    820 
24.3.4   获取及设置链接信息    821 
24.3.5   一个例子程序    824 
24.4   外壳扩展    831 
24.4.1   COM对象向导    832 
24.4.2   复制钩子处理器    832 
24.4.3   上下文菜单处理器    836 
24.4.4   图标处理器    844 
24.5   总结    850 
第25章   创建ActiveX控件    851 
25.1   为什么要创建ActiveX控件    851 
25.2   创建一个ActiveX控件    851 
25.2.1   ActiveX控件向导    852 
25.2.2   ActiveX框架    875 
25.2.3   属性页    877 
25.3   ActiveForm    886 
25.4   在Web上的ActiveX    892 
25.4.1   与Web浏览器通信    892 
25.4.2   Web发布    901 
25.5   总结    903 
第26章   使用Delphi Open Tools API    904 
26.1   Open Tools API接口    904 
26.2   使用Open Tools API    905 
26.2.1   Dumb向导    905 
26.2.2   Wizard向导    908 
26.2.3   DDG Search    916 
26.3   窗体向导    925 
26.4   总结    931 
第27章   使用Delphi开发CORBA    932 
27.1   ORB    932 
27.2   接口    932 
27.3   Stub和Skeleton    933 
27.4   VisiBroker的ORB    933 
27.4.1   VisiBroker的运行时支持服务    933 
27.4.2   VisiBroker管理工具    934 
27.5   Delphi的CORBA支持    934 
27.5.1   CORBA的类支持    935 
27.5.2   CORBA对象向导    936 
27.5.3   Delphi的类型库编辑器    941 
27.6   在Delphi 5中创建CORBA解决方案    942 
27.6.1   建立一个CORBA服务器    942 
27.6.2   实现IQueryServer的方法    943 
27.6.3   编译一个静态绑定的CORBA 
             客户    956 
27.6.4   编译一个动态绑定的CORBA 
             客户    958 
27.6.5   跨语言的CORBA    960 
27.7   使用VisiBroker ORB    967 
27.8   总结    967 
第四部分   开发数据库 
第28章   编写桌面数据库应用程序    969 
28.1   使用数据集    969 
28.1.1   VCL的数据库体系结构    970 
28.1.2   BDE数据访问组件    970 
28.1.3   打开一个数据集    971 
28.1.4   浏览数据集    971 
28.1.5   对字段操作    975 
28.1.6   刷新数据集    985 
28.1.7   变化的状态    986 
28.1.8   过滤器    986 
28.2   使用TTable组件    988 
28.2.1   查找记录    988 
28.2.2   主/细表    990 
28.2.3   TTable的事件    990 
28.2.4   通过代码创建一个数据库表    991 
28.3   数据模块    992 
28.4   搜索、设置范围和过滤的示例    992 
28.4.1   数据模块    992 
28.4.2   主窗体    993 
28.4.3   Range窗体    995 
28.4.4   Key Search窗体    996 
28.4.5   Filter窗体    998 
28.5   TQuery和TStoredProc:其他数据 
          集    1000 
28.6   文本文件数据库表    1001 
28.6.1   概要文件    1001 
28.6.2   数据文件    1002 
28.6.3   使用文本数据库表    1002 
28.6.4   限制    1003 
28.6.5   从文本数据库表中引入数据    1003 
28.7   用ODBC连接    1004 
28.7.1   到哪儿找ODBC驱动程序    1004 
28.7.2   ODBC实例:连接MS Access    1004 
28.8   ActiveX Data Object    1007 
28.8.1   Microsoft 数据访问简介    1007 
28.8.2   ADOExpress组件    1008 
28.8.3   连接一个ADO数据存储    1008 
28.8.4   示例:通过ADO连接    1010 
28.8.5   ADO开发    1011 
28.9   总结    1011 
第29章   开发客户/服务器应用程序    1012 
29.1   为什么要采用客户/服务器结构    1012 
29.2   客户/服务器体系结构    1013 
29.2.1   客户    1013 
29.2.2   服务器    1013 
29.2.3   业务规则    1014 
29.2.4   胖客户、胖服务器、中间层:业 
             务规则属于哪一端    1014 
29.3   客户/服务器模型    1015 
29.3.1   两层模型    1015 
29.3.2   三层模型    1016 
29.4   客户/服务器与桌面数据库开发的比 
       较    1017 
29.4.1   面向集合与面向记录    1017 
29.4.2   数据安全    1017 
29.4.3   记录锁定方法    1017 
29.4.4   数据完整性    1018 
29.4.5   面向事务    1018 
29.5   SQL在客户/服务器开发中的角色    1018 
29.6   Delphi客户/服务器开发    1019 
29.7   服务器:后端设计    1019 
29.7.1   数据库对象    1019 
29.7.2   定义数据库表    1020 
29.7.3   使用域    1021 
29.7.4   用视图、存储过程和触发器定义 
             业务规则    1022 
29.7.5   数据库对象的访问权限    1027 
29.8   客户:前端开发    1028 
29.8.1   使用TDatabase组件    1028 
29.8.2   TTable还是TQuery    1034 
29.8.3   使用TQuery组件    1036 
29.8.4   执行存储过程    1041 
29.9   总结    1043 
第30章   扩展数据库VCL    1044 
30.1   使用BDE    1044 
30.1.1   BDE单元    1044 
30.1.2   Check()    1044 
30.1.3   指针和句柄    1045 
30.1.4   使指针同步    1045 
30.2   dBASE表    1045 
30.2.1   物理记录编号    1046 
30.2.2   显示被删除的记录    1047 
30.2.3   测试被软删除的记录    1047 
30.2.4   恢复被软删除的记录    1048 
30.2.5   紧缩表    1048 
30.3   Paradox表    1049 
30.3.1   记录序号    1049 
30.3.2   紧缩    1049 
30.3.3   限制查询结果    1055 
30.3.4   BDE杂项    1056 
30.3.5   编写数据感知VCL控件    1059 
30.4   扩展TDataSet    1063 
30.4.1   过去    1063 
30.4.2   现在    1063 
30.4.3   创建一个TDataSet派生类    1064 
30.5   总结    1083 
第31章   用WebBroker使应用程序具有 
         Internet功能    1084 
31.1   ISAPI、NSAPI和CGI—Web服务 
       器扩展    1085 
31.1.1   公共网关接口    1085 
31.1.2   ISAPI和NSAPI    1085 
31.2   用Delphi创建Web应用程序    1086 
31.2.1   TWebModule和TWeb- 
             Dispatcher    1086 
31.2.2   TWebRequest和TWeb- 
             Response    1088 
31.3   用HTML内容生成器建立动态网 
       页    1091 
31.3.1   TPageProducer    1091 
31.3.2   TDatasetTableProducer和 
             TQueryTableProducer    1092 
31.4   使用cookie保存状态    1097 
31.5   重定向到另一个Web站点    1099 
31.6   从HTML表单中获取信息    1099 
31.7   数据流    1101 
31.8  总结    1104 
第32章   MIDAS开发    1105 
32.1   多层应用程序的结构    1105 
32.2   多层体系结构的优点    1106 
32.3   典型的MIDAS体系结构    1107 
32.3.1   服务器    1107 
32.3.2   客户    1109 
32.4   用MIDAS建立应用程序    1110 
32.4.1   设置服务器    1110 
32.4.2   创建客户    1111 
32.5   增强应用程序的更多选择    1115 
32.5.1   客户优化技巧    1115 
32.5.2   服务器端的技巧    1116 
32.6   几个实例    1117 
32.6.1   连接    1117 
32.6.2   MIDAS的Web功能    1119 
32.7   客户数据集的更多功能    1125 
32.7.1   嵌套的数据集    1125 
32.7.2   客户主/细连接    1125 
32.7.3   两层应用程序    1130 
32.8   部署MIDAS应用程序    1131 
32.9   总结    1134 
第五部分   快速开发数据库应用程序 
第33章   货物管理程序:客户/服务器 
         开发    1135 
33.1   设计后端    1135 
33.1.1   定义域    1136 
33.1.2   定义表    1137 
33.1.3   定义生成器    1138 
33.1.4   定义触发器    1138 
33.1.5   定义存储过程    1139 
33.1.6   授权    1141 
33.2   集中数据库访问:业务规则    1141 
33.2.1   登录和退出方法    1150 
33.2.2   Customer表的方法    1151 
33.2.3   Part表的方法    1152 
33.2.4   Sales表的方法    1152 
33.2.5   临时表的方法    1153 
33.2.6   TDataModule操纵数据访问 
             组件的事件    1153 
33.3   设计用户界面    1153 
33.3.1   TMainForm:应用程序的主窗 
             体    1154 
33.3.2   TCustomerForm:客户输入    1158 
33.3.3   TPartsForm: 货物输入    1161 
33.3.4   TSalesForm: 销售浏览    1165 
33.3.5   TNewSalesForm: 销售输入    1165 
33.3.6   CustomerSearch对话框    1169 
33.4   总结    1173 
第34章   客户跟踪系统:MIDAS开发    1174 
34.1   设计服务器应用程序    1174 
34.2   设计客户应用程序    1176 
34.2.1  客户数据模块    1176 
34.2.2    客户主窗体    1184 
34.3   总结    1190 
第35章   错误报告工具:桌面数据库 
         开发    1191 
35.1   通用应用程序的需求    1191 
35.1.1   为WWW做准备    1191 
35.1.2   用户的数据输入和登录    1191 
35.1.3   错误处理、浏览和过滤    1191 
35.1.4   错误注解    1191 
35.1.5   用户界面的功能    1192 
35.2   数据模型    1192 
35.3   开发数据模块    1192 
35.3.1   应用程序初始化和登录    1201 
35.3.2   生成Paradox关键值    1202 
35.3.3   错误处理例程    1202 
35.3.4   浏览/过滤错误    1202 
35.3.5   增加用户    1202 
35.3.6   加入注解    1204 
35.4   开发用户界面    1205 
35.4.1   主窗体    1205 
35.4.2   用户界面的其他问题    1211 
35.5   使应用程序具有Web功能    1211 
35.6   总结    1211 
第36章   错误报告工具:使用 
         WebBroker    1212 
36.1   网页布局    1212 
36.2   修改数据模块    1213 
36.3   配置TDataSetTableProducer组件: 
       dstpBugs    1213 
36.4   配置TWebDispatcher组件: 
       wbdpBugs    1213 
36.5   配置TPageProducer组件: 
       pprdBugs    1214 
36.6   编写DDGWebBugs ISAPI服务器: 
      增加TActionItem实例    1214 
36.6.1   辅助例程    1214 
36.6.2   介绍网页    1215 
36.6.3   获取并校验用户登录名字    1216 
36.7   浏览错误信息    1219 
36.7.1   浏览所有错误信息    1219 
36.7.2   浏览用户自己的错误信息    1221 
36.7.3   格式化表格单元并显示错误细 
             节    1222 
36.8   增加新的错误信息    1223 
36.8.1   获取错误信息    1223 
36.8.2   校验插入的错误信息    1225
Delphi 的知识体系的更多相关文章
- web前端知识体系总结
		1. 前言 大约在几个月之前,让我看完了<webkit技术内幕>这本书的时候,突然有了一个想法.想把整个web前端开发所需要的知识都之中在一个视图中,形成一个完整的web前端知识体系,目的 ... 
- 关于.NET知识体系结构图总结
		转载:关于.NET知识体系结构图总结-零度http://www.xcode.me/book/net-framework-maps 最近对.NET框架方面的知识进行了概要的总结,整理了一些知识体系结构图 ... 
- Canvas 知识体系简单总结
		Canvas 知识体系简单总结 标签(空格分隔): HTML5 Canvas 本文原创,如需转载,请注明出处 前言 知识点零零散散,一个上午整理了一下,内容不多,方便记忆. 本文不是教程,如需教程移步 ... 
- Atitit 图像处理知识点  知识体系 知识图谱v2
		Atitit 图像处理知识点 知识体系 知识图谱v2 霍夫变换(Hough Transform) 霍夫变换是图像处理中从图像中识别几何形状的基本方法之一,应用很广泛,也有很多改进算法.主要用来从图像 ... 
- Atitit 图像处理知识点  知识体系 知识图谱
		Atitit 图像处理知识点 知识体系 知识图谱 图像处理知识点 图像处理知识点体系 v2 qb24.xlsx 基本知识图像金字塔op膨胀叠加混合变暗识别与检测分类肤色检测other验证码生成 基本 ... 
- Atitit 知识图谱解决方案:提供完整知识体系架构的搜索与知识结果overview
		Atitit 知识图谱解决方案:提供完整知识体系架构的搜索与知识结果overview 知识图谱的表示和在搜索中的展1 提升Google搜索效果3 1.找到最想要的信息.3 2.提供最全面的摘要.4 ... 
- Java知识体系
		Java知识体系 java知识结构.jpg web框架.jpg 计算机课程体系.png 2016-08-19_090929.png 流行的哈希算法生存状况.jpg "JAVA之父" ... 
- 自己总结的web前端知识体系大全【欢迎补充】
		1. 前言 大约在几个月之前,让我看完了<webkit技术内幕>这本书的时候,突然有了一个想法.想把整个web前端开发所需要的知识都之中在一个视图中,形成一个完整的web前端知识体系,目的 ... 
- github上最全的资源教程-前端涉及的所有知识体系
		前面分享了前端入门资源汇总,今天分享下前端所有的知识体系. 个人站长对个人综合素质要求还是比较高的,要想打造多拉斯自媒体网站,不花点心血是很难成功的,学习前端是必不可少的一个环节, 当然你不一定要成为 ... 
随机推荐
- 30秒攻破任意密码保护的PC:深入了解5美元黑客神器PoisonTap
			近日,著名硬件黑客Samy Kamkar利用5美元设备打造的黑客工具PoisonTap,只需30秒,就可以攻破设置有任意密码的电脑系统,并实现长期后门安装.PoisonTap不是暴力破解密码,而是绕过 ... 
- String封装——读时共享,写时复制
			碰到过一位一直怀疑C++标准库(STL)效率的人,他说STL效率太低,企业开发根本不会用.我是持反对意见的. 说这话的人,肯定没有做过大量的调查.没有调查就没有发言权. STL的效率是不低的,足够满足 ... 
- Linux查看文件编码格式及文件编码转换
			Linux查看文件编码格式及文件编码转换 如果你需要在Linux 中操作windows下的文件,那么你可能会经常遇到文件编码转换的问题.Windows中默认的文件格式是GBK(gb2312),而L ... 
- PHP: How to print a debug log?
			file_put_contents('php://stderr', print_r("hello ", TRUE)); 转自: http://stackoverflow.com/q ... 
- CLR via C# 随记
			使用C# 编译器的方法: 1.csc.exe位于C:\Windows\Microsoft.NET\Framework\vxxxxx下面,将对应版本的路径配置到环境变量path中,如将";C: ... 
- Nodejs 及 NPM 的安装
			Nodejs 及 NPM 的安装,有两种方式: 方式1.Nodejs 及 NPM 一起安装 https://nodejs.org/en/download/ 下载 Windows Installe ... 
- Ebase Xi   The world's best RAD platform.
			Ebase Xi : http://www.ebasetech.com/ The world's best RAD platform. Xi combines browser and mobile a ... 
- 【leetcode】Surrounded Regions
			Surrounded Regions Given a 2D board containing 'X' and 'O', capture all regions surrounded by 'X'. A ... 
- 【leetcode】Multiply Strings
			Multiply Strings Given two numbers represented as strings, return multiplication of the numbers as a ... 
- centos 7 python2.7.5升级到3.5.2
			centos 7 python2.7.5升级到3.5.2 下载python3.5.2 wget https://www.python.org/ftp/python/3.5.2/Python-3.5.2 ... 
