本书对Visual Basic做了全方位的介绍,深入浅出地讲述Visual Basic各种编程诀窍,以高屋建瓴的眼光看待VB编程的诀窍和思想,力图将最全面最实用的技术展现给读者。本书以其翔实知识面的覆盖、大量实例的示例和作者自身丰富的编程经验,详细介绍了Visual Basic语言的基本概念、输入与输出、流程控制、控件、数据库应用、报表、ActiveX及其在Web和网络方面的应用开发等等。全书面向实例进行阐述,讲解透彻独到。本书既可作为初学者和大专院校师生的自学参考书,也可作为计算机软件开发人员的技术参考书。
译者序\r\n\r\n1 编程介绍\r\n2 Visual Basic如何保持源程序的文件\r\n3 创建可执行程序\r\n4 从“新建工程”对话框开始\r\n5 使用新建应用程序向导\r\n6 认识界面类型\r\n7 使用“VB应用程序向导”来创建一个工程框架\r\n8 在“VB应用程序向导”中选择界面类型\r\n9 认识单选钮\r\n10 在应用程序向导上选择菜单\r\n11 使用应用程序向导创建工具栏\r\n12 使用应用向导来添加资源文件\r\n13 使用向导来添加Internet连接\r\n14 理解控件\r\n15 标准窗体\r\n16 使用向导连接数据库\r\n17 完成新向导的创建——生成工程\r\n18 阅读“VB应用程序向导”的总结报告\r\n19 保存新向导——生成工程\r\n20 不键入任何代码来创建完全可执行文件\r\n21 认识编辑窗口\r\n22 认识工具箱\r\n23 认识属性窗口\r\n24 认识工程资源管理器\r\n25 认识窗体布局窗口\r\n26 认识编辑显示窗口\r\n27 认识工具栏上的图标\r\n28 介绍Visual Basic的菜单栏\r\n29 使用“文件”菜单\r\n30 使用“编辑”菜单\r\n31 使用“视图”菜单\r\n32 使用“工程”菜单\r\n33 使用“格式”菜单\r\n34 使用“调试”菜单\r\n35 使用“运行”菜单\r\n36 使用“工具”菜单\r\n37 使用“外接程序”菜单\r\n38 创建窗体\r\n39 窗体命名\r\n40 创建代码\r\n41 理解End语句\r\n42 运行Visual Basic程序\r\n43 更改窗体标题\r\n44 使用Me对象\r\n45 创建一个实例代码的可执行程序\r\n46 理解语法错误\r\n47 一个Visual Basic程序的结构\r\n48 编写第二个程序\r\n49 更改自动保存选项\r\n50 定义即时编译(分步编译)\r\n51 保存工程文件\r\n52 理解过程\r\n53 在程序中增加语句\r\n54 换行显示输出\r\n55 使用Visual Basic常量\r\n56 Visual Basic不需要考虑大小写\r\n57 理解逻辑错误(Bug)\r\n58 捕获程序中的错误\r\n59 发生错误时中断\r\n60 理解程序开发过程\r\n61 在程序中添加注释\r\n62 增强程序的可读性\r\n63 使用注释来取消程序语句的执行\r\n64 开始理解作用域\r\n65 理解如何处理Windows消息\r\n66 保持界面的严格控制\r\n67 理解变量\r\n68 使用DIM语句\r\n69 声明模块和窗体级的变量\r\n70 声明过程变量\r\n71 协调变量名冲突\r\n72 使用Public关键字定义变量\r\n73 为变量赋值\r\n74 理解变量类型\r\n75 声明同样类型的多个变量\r\n76 在声明中注释变量\r\n77 使用有意义的变量名\r\n78 理解Visual Basic的关键字\r\n79 理解Option Explict语句\r\n80 理解Option Base语句\r\n81 理解Integer类型变量\r\n82 理解Long类型变量\r\n83 理解String类型变量\r\n84 理解固定长度String类型变量\r\n85 理解Single类型变量\r\n86 理解Boolean类型变量\r\n87 理解Byte变量类型\r\n88 理解Currency类型变量\r\n89 理解Date类型变量\r\n90 理解Double类型变量\r\n91 理解Object类型变量\r\n92 理解Variant类型变量\r\n93 理解控件类型\r\n94 为什么Visual Basic没有使用指针\r\n95 给浮点变量赋值\r\n96 给Integer和Long类型的变量赋值\r\n97 给String类型变量赋值\r\n98 给固定长度String类型变量赋值\r\n99 给Single和Double类型变量赋值\r\n100 给Boolean类型变量赋值\r\n101 给Byte类型变量赋值\r\n102 给Currency类型的变量赋值\r\n103 理解Object类型的变量\r\n104 给Date类型的变量赋值\r\n105 理解溢出\r\n106 理解精度\r\n107 引号和其他字符的赋值\r\n108 使用Chr函数\r\n109 使用Debug.Print来输出信息\r\n110 使用Str函数将数字转换成字符串\r\n111 使用Format函数将数字转换成字符串\r\n112 使用Format函数将日期转换成字符串\r\n113 Visual Basic的基本数学操作\r\n114 理解按模运算\r\n115 理解运算符的优先级\r\n116 强行改变运算符的运算顺序\r\n117 数值的加法和减法\r\n118 理解按位操作的Or运算\r\n119 理解Xor运算\r\n120 理解按位操作的And运算\r\n121 理解按位操作的Eqv运算\r\n122 理解按位操作的Imp运算\r\n123 介绍条件处理\r\n124 介绍循环处理\r\n125 理解Visual Basic如何表示True和False\r\n126 测试If-Then的条件\r\n127 理解圆括号在条件语句中的用途\r\n128 理解Simple语句和Compound语句\r\n129 等式判断\r\n130 执行相关判断\r\n131 执行逻辑And运算对两个条件进行判断\r\n132 执行逻辑Or运算来两个条件进行判断\r\n133 执行逻辑Not运算\r\n134 执行逻辑Xor运算\r\n135 执行逻辑Eqv运算\r\n136 执行逻辑Imp运算\r\n137 将判断条件的结果赋值给变量\r\n138 在复合语句中声明变量\r\n139 使用缩进格式来提高可读性\r\n140 测试浮点值\r\n141 不间断循环\r\n142 定义常量\r\n143 谨慎使用If-If-Else\r\n144 在限定次数内执行语句\r\n145 For语句的可选部分\r\n146 在For-Next语句中使变量递减\r\n147 控制For-Next循环的步长\r\n148 For-Next循环不仅仅适用于Integer变量\r\n149 理解Null循环\r\n150 理解DoEvents循环\r\n151 无限(InfinitC)循环的危险\r\n152 使用For-Next的嵌套循环\r\n153 改变控制变量的值\r\n154 在条件语句中使用Next\r\n155 使用Exit For语句终止循环\r\n156 使用Do循环重复执行一条或者多条语句\r\n157 理解Do循环的组成部分\r\n158 使用While-Wend创建循环\r\n159 总是使用Do循环执行一条或多条语句\r\n160 使用Do Until Loop重复执行一条或者多条语句\r\n161 使用Exit Do结束循环\r\n162 GOTO分支\r\n163 测试多个条件\r\n164 理解Case Else语句\r\n165 可视化Visual Basic字符串\r\n166 Visual Basic如何保存字符串\r\n167 Visual Basic如何保存可变长度的字符串\r\n168 理解零结尾字符串\r\n169 如何区分A和a\r\n170 使用Option Compare Text开关\r\n171 确定字符串的长度\r\n172 将String变量的字符复制到另外一个String变量中\r\n173 将String变量的内容添加到另一个String变量中\r\n174 在String变量中添加N个字符\r\n175 处理超长字符\r\n176 在确定字符串是否相等时忽略大小写\r\n177 捕获String变量中的第一个出现的字符\r\n178 寻找字符串中最后一个出现的字符\r\n179 计算String变量中出现同一字符的次数\r\n180 逆向显示String变量的内容\r\n181 两个字符串的比较\r\n182 两个字符串前N个字符的比较\r\n183 将字符串转换为数字表示\r\n184 在字符串中定位子字符串\r\n185 从字符串的一个位置返回n个字符\r\n186 计算子字符串出现的次数\r\n187 使用TextBox控件\r\n188 使用RichTextBox控件\r\n189 使用RichTextBox控件的Find方法\r\n190 理解方法\r\n191 理解焦点\r\n192 获得最右边子字符串的位置\r\n193 在字符串中删除某个子字符串\r\n194 用另一个子字符串替换某个子字符串\r\n195 在RichTextBox控件里删除文本\r\n196 在RichTextBox控件里使用其他文本替换控件里的文本\r\n197 判断一个字符是否是字母表中的字符\r\n198 判断一个字符是否是数字\r\n199 判断一个字符是否是大写或者小写\r\n200 判断字符串是否是Date\r\n201 将一个字符转换为大写或小写字母\r\n202 对ASCII字符进行操作\r\n203 格式化字符串变量\r\n204 对字符串使用Select Case\r\n205 使用换行变量\r\n206 使用函数返回值\r\n207 指定参数类型\r\n208 理解局部变量\r\n209 理解函数的系统开销\r\n210 通过声明参数类型来减少系统开销\r\n211 Visual Basic放置局部变量的地方\r\n212 声明全局变量\r\n213 使用Public来代替Global \r\n214 为什么在程序中应该避免全局变量\r\n215 解决全局变量和局部变量名的冲突 \r\n216 更好地定义变量的作用域\r\n217 定义过程\r\n218 定义函数\r\n219 理解传值调用\r\n220 为什么传值调用可以防止参数值的改变\r\n221 理解传值调用\r\n222 改变参数值\r\n223 只改变指定参数\r\n224 使用栈以进行引用调用\r\n225 可记忆的函数变量\r\n226 可记忆的过程\r\n227 Visual Basic如何初始化静态变量\r\n228 使用关键字Static可能引起的错误\r\n229 理解全局与局部过程\r\n230 过程的重用\r\n231 理解形参和实参\r\n232 理解作用域\r\n233 使用Variant参数来接收未知值\r\n234 使用Variant函数来返回未知类型的值\r\n235 使用具有Variant参数的VarType成员函数\r\n236 使用TypeName成员函数\r\n237 在返回值中使用VarType或者TypeName\r\n238 在函数中更新全局变量\r\n239 使用函数更改算术表达式中的变量\r\n240 在窗体上创建Private过程\r\n241 从过程中调用过程\r\n242 理解递归\r\n243 理解递归Factorial函数\r\n244 另一个递归的例子\r\n245 通过显示值来更好地理解递归\r\n246 直接递归和间接递归\r\n247 是否使用递归\r\n248 对Date进行处理\r\n249 为什么递归过程会慢一些\r\n250 如何消除违归\r\n251 将常量作为参数来传递\r\n252 子程序是不返回值的过程\r\n253 子程序可以是返回多个值的过程\r\n254 使用不带有参数的过程\r\n255 理解Visual Basic的作用域分类\r\n256 理解名称空间和标识符\r\n257 理解标识符的可见性\r\n258 理解生存时间\r\n259 支持参数数目可变的函数\r\n260 支持可变数目的参数\r\n261 创建一个支持多类型、多参数的函数\r\n262 使用关键字Optional\r\n263 理解IsMissing成员函数\r\n264 使用缓冲输入\r\n265 使用输入框来接收输入\r\n266 使用TextBox控件来执行缓冲输入\r\n267 使用直接I/O读取字符\r\n268 清除屏幕上的所有域\r\n269 更新面体的显示\r\n270 使用SetFocus方法定位光标\r\n271 使用TabIndex定位光标\r\n272 使用彩色输出\r\n273 控制屏幕的色彩\r\n274 分配背景颜色\r\n275 创建一个可重用的数学模块\r\n276 使用Abs函数\r\n277 使用余弦/正切\r\n278 使用正弦/余切\r\n279 使用反正切\r\n280 对浮点值进位\r\n281 对指数进行处理\r\n282 计算自然数的对数\r\n283 计算以10为底数的对数\r\n284 确定最大和最小值\r\n285 将浮点值分割成小数部分和整数部分\r\n286 计算一个数的N次方\r\n287 生成随机数\r\n288 将随机值映射到指定范围\r\n289 启动随机数生成器\r\n290 计算一个值的平方根\r\n291 计算角的正切\r\n292 执行现存净价值计算\r\n293 执行Rate计算\r\n294 创建一个自定义的数学错误处理程序\r\n295 理解数组\r\n296 声明一个数组\r\n297 数组的可视化\r\n298 理解数组的存储要求\r\n299 数组的初始化\r\n300 数组元素的访问\r\n301 通过数组元素进行循环\r\n302 使用常量来定义数组\r\n303 向函数中传递数组\r\n304 再次阐述数组和函数\r\n305 向过程传递数组\r\n306 决定一个数组能够保留多少元素\r\n307 数组的动态分配\r\n308 从分隔字符串中创建一个数组\r\n309 理解多维数组\r\n310 理解行和列\r\n311 在二维数组中访问元素\r\n312 在二维数组中初始化元素\r\n313 判断多位数组消耗的内存数量\r\n314 二维数组的遍历\r\n315 遍历一个三维数组\r\n316 向函数传递二维数组\r\n317 理解Visual Basic如何存储多维数组\r\n318 结构数组的数组\r\n319 在一个数组中寻找一个指定的值\r\n320 理解二元查找\r\n321 使用二元查找\r\n322 数组的排序\r\n323 理解冒泡排序\r\n324 使用冒泡排序\r\n325 理解选择排序\r\n326 使用选择排序\r\n327 理解Shell排序\r\n328 使用Shell排序\r\n329 理解快速排序\r\n330 使用快速排序\r\n331 前述排序解决方案的问题\r\n332 排序字符串数组\r\n333 通过Quick_Sort函数排序数组\r\n334 用Seq_One_Find搜索数组\r\n335 使用TypeName成员函数\r\n336 用Bin_Search搜索一个已排序数组\r\n337 确定数组元素的个数\r\n338 循环遍历字符串数组\r\n339 为数组设定可选择的范围\r\n340 理解结构\r\n341 结构是一个变量声明的模板\r\n342 结构标识符是结构的名字\r\n343 声明一个结构变量\r\n344 在结构中使用Public和Private关键字\r\n345 理解结构成员\r\n346 形象化一个结构\r\n347 使用结构\r\n348 向函数传递结构\r\n349 改变函数内部的结构\r\n350 结构定义的作用域\r\n351 初始化结构\r\n352 执行结构的输入/输出操作\r\n353 使用嵌套的结构\r\n354 包含数组的结构\r\n355 创建一个结构数组\r\n356 使用文件、目录和磁盘——简洁和复杂的方式\r\n357 使用DriveListBox控件\r\n358 使用DriveListBox控件改变驱动器\r\n359 DirectoryListBox控件\r\n360 改变默认的目录\r\n361 使用FileListBox控件\r\n362 只显示清单中的部分文件\r\n363 理解CommonDialog控件\r\n364 使用CommonDialog控件模式\r\n365 为CommonDialog控件设置默认路径\r\n366 返回选中的文件和路径\r\n367 保存文本文件\r\n368 通过Cancel选项取消Open或Save AS\r\n369 理解Windows API\r\n370 使用API浏览器\r\n371 使用GetCurrentDirectory API函数\r\n372 编写Wrapper函数\r\n373 使用SetCurrentDirectory API函数\r\n374 使用GetDiskFreeSpace API函数\r\n375 使用GetVolumeInformation API函数\r\n376 使用GetDriveType API函数\r\n377 捕捉未准备好的驱动器\r\n378 在程序中更改文件名\r\n379 在程序中删除文件\r\n380 在程序中删除目录\r\n381 设置文件访问模式\r\n382 获取文件大小\r\n383 使用Open语句\r\n384 使用Close语句\r\n385 使用文件的读连续访问\r\n386 读文件时使用EOF函数\r\n387 使用文件的写连续访问\r\n388 使用LOF和Loc来读Binary文件\r\n389 用Input和Input#来读取文件\r\n390 使用Write#对连续文件输出\r\n391 重新考虑结构和文件I/O\r\n392 使用Put对一个随机访问文件写入数据\r\n393 使用Get从随机访问文件中检索记录\r\n394 使用Seek语句遍历随机访问文件\r\n395 建立临时文件\r\n396 获取Windows路径\r\n397 获取系统路径\r\n398 将文件的I/O操作最小化\r\n399 使用ChDrive和ChDir语句\r\n400 创建目录\r\n401 删除目录\r\n402 用递归删除目录树\r\n403 解析PathName\r\n404 获取文件的日期和时间标签\r\n405 使用Dir定位目录和文件\r\n406 将Dir返回的文件和目录值进行排序\r\n407 使用Dir定位文件\r\n408 在程序中复制文件\r\n409 在程序中移动文件\r\n410 搜索文件\r\n411 使用FindFirstFile函数\r\n412 使用FindNextFile在剩下部分查找\r\n413 搜索整个目录树\r\n414 使用由Find操作返回的文件建立用户界面\r\n415 使用Findxxx函数定位目录\r\n416 使用Find函数递归列出一个树内的所有目录\r\n417 使用递归删除目录树\r\n418 获取当前系统日期\r\n419 获取当前系统时间\r\n420 返回一个代表当前日期和时间的Date值\r\n421 延迟特定毫秒数\r\n422 延迟一个大约的毫秒数\r\n423 Sleep和DoEvents的限制\r\n424 检测程序的处理时间\r\n425 将两个时间作比较\r\n426 使用DoEvents来延迟具体的秒数\r\n427 Date型数据与String型数据的转换\r\n428 验证一个String型数据是否符合转化为Date型数据所需的格式类型\r\n429 设置系统日期和时间\r\n430 利用整型值设置日期和时间\r\n431 向日期中添加时间\r\n432 将日期分割为各组成部分\r\n433 理解单文档界面(SDI)\r\n434 理解SDI窗体\r\n435 理解Show方法\r\n436 理解Load语句\r\n437 理解Unload和Hide\r\n438 良好窗体的设计基础\r\n439 窗体的命名\r\n440 窗体布局的变化\r\n441 理解控件数组\r\n442 创建控件数组\r\n443 命名控件数组\r\n444 理解窗体数组\r\n445 理解MDI界面的创建\r\n446 建立一个窗体数组\r\n447 用布尔型数组来处理窗体数组\r\n448 用控件数组在运行时建立对象\r\n449 在运行时删除控件数组内的对象\r\n450 理解菜单\r\n451 使用菜单编辑器\r\n452 创建菜单\r\n453 向菜单添加功能\r\n454 使用菜单的Enabled属性\r\n455 使用菜单的Checked属性\r\n456 建立Windowlist\r\n457 理解加速键\r\n458 使用Tile和Cascade命令\r\n459 理解菜单数组\r\n460 创建菜单数组\r\n461 正确理解菜单与弹出式菜单的区别\r\n462 创建弹出式菜单\r\n463 向弹出式菜单的选项中加入代码\r\n464 使用弹出式菜单\r\n465 创建智能化上下文相关菜单\r\n466 使用Boldcommand属性\r\n467 菜单由子窗体的转换为父窗体的\r\n468 在菜单内使用Negotiation\r\n469 显示多个模态窗体\r\n470 显示完模态窗体后显示非模态窗体\r\n471 窗体内过程的作用域\r\n472 向外部实体输出一个值\r\n473 在外部实体里使用公共事件\r\n474 理解ActiveForm属性\r\n475 理解载入、初始化和激活窗体事件\r\n476 理解重设尺寸事件\r\n477 理解QueryUnload事件和Unload事件\r\n478 理解Deactivate和LostFocus窗体事件\r\n479 理解Terminate事件\r\n480 Refresh方法\r\n481 控制窗体的Height和Width\r\n482 理解容器\r\n483 理解Frame\r\n484 使用容器管理窗体\r\n485 使用GetSystemMetrics API函数\r\n486 结合使用GetSystemMetrics和Resize\r\n487 使用Hide方法的SDI窗体\r\n488 理解MouseMove事件\r\n489 MousePointer属性\r\n490 使用MouseIcon属性\r\n491 使用窗体的Icon属性\r\n492 使用Toolbar控件\r\n493 理解对象和集合\r\n494 使用Button集合和Button对象\r\n495 创建文本型按钮的工具条\r\n496 理解ImageList控件\r\n497 结合使用ImageList和Toolbar控件\r\n498 在MDI程序中使用工具条\r\n499 子窗体和父窗体的工具条\r\n500 仅在父窗体上放置工具条\r\n501 工具条和ActiveForm\r\n502 同时使用工具条和菜单\r\n503 维持常量图像尺寸\r\n504 设计定制的图标\r\n505 程序内分配图标\r\n506 理解StatusBar控件\r\n507 理解Panel对象和Panels集合\r\n508 建立StatusBar控件\r\n509 编写UpdateStatusBar子程序\r\n510 状态栏的分区\r\n511 同时使用MouseMove和StatusBar\r\n512 使用多个StatusBar\r\n513 重新考虑公共与私有函数\r\n514 向过程传递Object变量\r\n515 向过程传递控件数组\r\n516 介绍公共控件\r\n517 使用KeyPress事件识别击键\r\n518 在TextBox中使用KeyPress接受用户口令\r\n519 理解KeyDown事件和KeyUp事件\r\n520 设置窗体的WindowState属性\r\n521 控制窗体的标题\r\n522 建立IsDirty属性\r\n523 重新考虑窗体\r\n524 高级控件\r\n525 重新考虑CommonDialog控件\r\n526 使用CommonDialog控件进行打印\r\n527 打印文档至默认打印机\r\n528 理解Printer对象和Printers集合\r\n529 使用For Each-Next结构\r\n530 理解EndDoc方法\r\n531 用CommonDialog控件设置Fonts\r\n532 使用CommonDialog设置RichTextBox中的字体\r\n533 使用编辑字段的Change事件\r\n534 理解库和可重用对象代码\r\n535 理解ActiveX DLL\r\n536 创建和使用工程组\r\n537 显示预定义的错误信息\r\n538 理解可移植性\r\n539 过程中的分支和返回\r\n540 使用结构变量代替常量\r\n541 Visual Basic的预定义常量\r\n542 使用枚举类型\r\n543 使用枚举类型\r\n544 理解枚举类型的值\r\n545 给枚举类型赋具体的值\r\n546 理解子进程\r\n547 使用Shell函数\r\n548 使用临时文件向子进程传递数据\r\n549 使用AppActivate来激活子进程\r\n550 使用Shell函数来顺序运行程序\r\n551 使用断点来调试程序\r\n552 增加监视\r\n553 监视窗口\r\n554 逐语句执行程序代码\r\n555 跳过过程的代码\r\n556 跳出\r\n557 重新启动程序\r\n558 在程序中设置断点\r\n559 理解标记\r\n560 为错误陷阶子程序使用标记\r\n561 使用标记来进行GoTo循环\r\n562 理解致命错误\r\n563 使用计时器事件来自动保存信息\r\n564 理解Timer控件\r\n565 理解不变代码\r\n566 理解代码压缩\r\n567 理解循环压缩\r\n568 使用公共子表达式消除\r\n569 掌握Visual Basic的基本类型\r\n570 理解衍生类型\r\n571 使用初始化值的规则\r\n572 对比声明和定义\r\n573 在需要的地方才定义变量\r\n574 重新考虑Optional关键字\r\n575 重新考虑ParamArray关键字\r\n576 对Optional参数使用默认值\r\n577 使用默认类型\r\n578 理解松散(或简化)计算\r\n579 使用New运算符来创建对象实例\r\n580 在结构中将函数作为成员使用\r\n581 不同结构中的同名成员\r\n582 理解对象\r\n583 理解面向对象编程\r\n584 理解为什么Visual Basic不是真正的面向对象语言\r\n585 理解Visual Basic的类\r\n586 使类概念化\r\n587 使用类生成器实用程序来创建类\r\n588 理解Public标签\r\n589 理解信息隐藏\r\n590 在类中使用Private关键字\r\n591 使用公共和私有数据\r\n592 公共方法经常被称作接口函数\r\n593 定义类的函数\r\n594 使用Property Let和Propert Get方法\r\n595 理解对象实例\r\n596 创建对象实例\r\n597 理解类的作用域\r\n598 创建类变量的数组\r\n599 使用With-End With\r\n600 理解封装\r\n601 重新考虑库\r\n602 为Public和Private成员排序\r\n603 理解类模块的默认作用域\r\n604 理解静态存储\r\n605 理解ActiveX\r\n606 理解ActiveX与OLE 2.0之间的不同之处\r\n607 在Dimension语句中使用WithEvents属性\r\n608 使用Visual Basic提供的ActiveX控件\r\n609 使用Change事件\r\n610 理解ComboBox控件\r\n611 在ComboBox中使用Change和Clik事件\r\n612 使用ComboBox改变窗体中的信息\r\n613 决定ComboBox和ListBox的选用\r\n614 理解MaskEdBox控件\r\n615 使用MaskEdBox控件来检验数据\r\n616 重新考虑可重用的对象\r\n617 过程的放置\r\n618 使用控件事件触发其他事件\r\n619 使用带ListIndex的LostFocus来启动相关的窗体\r\n620 理解将窗体当作类\r\n621 理解完全基于对话框的应用程序\r\n622 改变程序的开始位置\r\n623 理解初始化子程序\r\n624 在多个位置放置全局变量和过程\r\n625 使用函数返回用户自定义的类或结构\r\n626 理解PictureBox控件\r\n627 使用PictureBox控件\r\n628 理解Image控件\r\n629 在窗体上显示图片\r\n630 使用Shape控件\r\n631 使用Line控件\r\n632 使用CheckBox获得Boolean值\r\n633 在单个窗体上使用多组OptionButton\r\n634 使用水平和垂直滚动条\r\n635 理解Timer控件\r\n636 理解自定义控件\r\n637 使用自定义控件\r\n638 重新考虑RichTextBox\r\n639 创建基础的界面\r\n640 为MDN程序加入功能\r\n641 加入Find对话框\r\n642 改进多文档记事本应用程序\r\n643 重新考虑Query_Unload事件\r\n644 理解RichTextBox和CommonDialog之间的关系\r\n645 理解ProgressBar\r\n646 使用ProgressBar控件\r\n647 应用沙漏鼠标指针\r\n648 使用其他鼠标指针属性\r\n649 使用全局变量保护中断\r\n650 介绍数据库\r\n651 理解数据库访问\r\n652 数据库设计的一些基本规则\r\n653 理解关系型数据库\r\n654 理解标准化\r\n655 最小化数据库存储需求\r\n656 保护数据库\r\n657 理解System.MDW文件\r\n658 介绍SQL\r\n659 理解Access SQL与ANSI SQL的差异\r\n660 开始使用可视化数据管理器\r\n661 理解DAO和ODBC\r\n662 使用DAO对象\r\n663 使用SQL Create Table语句\r\n664 理解和格式化SQL的Create Table语句\r\n665 理解Execute方法\r\n666 使用约束创建索引\r\n667 使用SQL的Create Index语句\r\n668 确定索引哪个字段\r\n669 理解主关键字\r\n670 理解Workspace对象\r\n671 使用OpenDatabase方法\r\n672 创建新的数据库\r\n673 理解数据库对象\r\n674 理解Recordset对象\r\n675 使用OpenRecordset方法\r\n676 理解SQL的Select语句\r\n677 检索Recordset\r\n678 理解Order By从句\r\n679 理解Where从句\r\n680 理解Inner Join\r\n681 理解Left Join和Right Join\r\n682 理解数据库的设置\r\n683 理解QueryDef对象\r\n684 使用RecordCount属性\r\n685 理解Move方法\r\n686 使用BOF和EOF属性\r\n687 确定Recordset是否为空\r\n688 使用FIND方法\r\n689 使用Seek方法\r\n690 理解书签\r\n691 使用书签\r\n692 使用Scratch Recordset\r\n693 理解Recordset Creation错误\r\n694 理解组集(Groups)\r\n695 理解Users\r\n696 理解许可权限\r\n697 理解DAO文档和容器\r\n698 加入新的记录\r\n699 使用Update和Edit方法\r\n700 使用Requery方法\r\n701 验证数据\r\n702 理解事务处理\r\n703 使用BeginTrans和CommitTrans\r\n704 使用Rollback方法\r\n705 理解Data控件\r\n706 使用带有存储查询的Data控件\r\n707 使用Data控件操作BOF和EOF\r\n708 理解RecordSource属性\r\n709 理解Data绑定控件\r\n710 使用多个Data控件\r\n711 理解Data绑定Grid控件\r\n712 使用Data绑定Grid控件\r\n713 调整Data绑定Grid的宽度\r\n714 给Data控件加上RecordCount标题\r\n715 使用Grid控件改变RecordCount标题\r\n716 理解Data绑定ListBox控件\r\n717 使用Data绑定列表控件\r\n718 把DBList控件连接到另外一个控件\r\n719 理解Data绑定ComboBox控件\r\n720 使用Data绑定ComboBox控件\r\n721 理解Clone方法\r\n722 使用Clone方法\r\n723 使用DataChanged属性\r\n724 理解SQL-Transact语句\r\n725 理解Update查询\r\n726 使用Update查询\r\n727 理解Delete查询\r\n728 理解Union查询\r\n729 理解Group By语句\r\n730 使用Group By语句\r\n731 理解SQL聚集函数\r\n732 使用Sum语句\r\n733 理解Having语句\r\n734 在查询中使用变量\r\n735 使用查询结果创建新的查询\r\n736 和SQL查询一起使用On Error-Resume\r\n737 通过检查值防止发生错误\r\n738 创建数据库的备份\r\n739 理解客户机/服务器数据库\r\n740 理解远程数据对象\r\n741 理解RemoteData控件\r\n742 使用RemoteData控件创建Recordset\r\n743 理解RemoteData常量\r\n744 理解rdoEnvironment对象\r\n745 建立远程数据连接\r\n746 维护有关打开连接的信息\r\n747 理解字段对象\r\n748 确定集合中何时使用序数编号\r\n749 使用字段名管理数据库\r\n750 理解记录锁定\r\n751 保存无绑定控件的记录\r\n752 更新无绑定控件的记录\r\n753 重新考虑数据库的重要性\r\n754 理解TreeView控件\r\n755 理解节点对象\r\n756 使用TreeView控件\r\n757 理解Nodes集合的Add方法\r\n758 把图像加到TreeView控件\r\n759 在填充TreeView控件的时候使用进度条\r\n760 从Recordset中填充TreeView控件\r\n761 理解Visual Basic和Internet\r\n762 理解MSComm控件\r\n763 理解CommEvent属性\r\n764 使用MSComm控件\r\n765 理解OnComm事件\r\n766 使用OnComm事件\r\n767 理解RThreshold和Sthreshold属性\r\n768 使用MSComm控件发送数据\r\n769 使用MSComm控件接收数据\r\n770 创建一个简单的终端处理程序\r\n771 创建自动发送事件\r\n772 理解Winsock控件\r\n773 使用Winsock控件\r\n774 理解GetData方法\r\n775 理解SendComplete和SendProgress事件\r\n776 从Winsock控件中返回一个句柄\r\n777 在服务器机器上使用Winsock控件\r\n778 返回Winsock控件的当前状态\r\n779 理解Internet传输控件\r\n780 理解Execute方法\r\n781 在Execute方法中使用HTTP命令\r\n782 在Execute方法中使用FTP命令\r\n783 确信保存了用户名和密码\r\n784 连接到Internet\r\n785 浏览FTP服务器\r\n786 使用Get从FTP服务器获取一个文件\r\n787 对FTP服务器做写操作\r\n788 编写一个自动的FTP上载和下载程序\r\n789 编写FTP浏览器\r\n790 理解WebBrowser控件\r\n791 使用WebBrowser控件\r\n792 理解Navigate方法\r\n793 理解NavigateComplete事件\r\n794 使用LocationURL属性\r\n795 使用ProgressChange事件\r\n796 使用LocationName属性\r\n797 理解DownloadBegin和DownloadComplete事件\r\n798 停止网页下载\r\n799 在WebBrowser控件中访问FTP\r\n800 创建多个Web浏览器\r\n801 设置主页\r\n802 后退与前进\r\n803 编写Visual Basic的Internet浏览器\r\n804 重新考虑ActiveX\r\n805 理解ActiveX的不同类型\r\n806 确定是否应用ActiveX控件、EXE或DLL\r\n807 理解UserControl对象\r\n808 运用Visual Basic来创建控件\r\n809 理解Visual Basic Control Creation Edition\r\n810 理解ActiveX的安全性\r\n811 签名ActiveX控件\r\n812 打包ActiveX控件\r\n813 打包一个简单的ActiveX控件\r\n814 使用向导创建一个ActiveX控件\r\n815 理解“创建自定义接口成员”对话框\r\n816 功能映射\r\n817 设置属性\r\n818 完成向导\r\n819 开始创建ActiveX控件\r\n820 增强控件的功能\r\n821 测试控件\r\n822 理解ActiveX控件事件\r\n823 理解ActiveX控件的生命周期\r\n824 对非生命周期事件的响应\r\n825 理解RaiseEvent语句\r\n826 使用Event语句\r\n827 给控件添加功能\r\n828 执行ColorfulCmdButton控件的容器\r\n829 理解属性页向导\r\n830 使用属性页向导\r\n831 理解ActiveX文档\r\n832 创建一个ActiveX文档\r\n833 为自己的ActiveX文档指定容器\r\n834 发现目标应用程序的对象模型\r\n835 理解对象模型中的变化\r\n836 理解UserDocument对象\r\n837 使用UserDocument对象\r\n838 测试ActiveX文档\r\n839 调试FirstACXDoc的ActiveX文档\r\n840 向工程中添加第二个ActiveX文档\r\n841 运行两文档工程\r\n842 理解ActiveX DLL文件\r\n843 为ActiveX DLL文件创建类\r\n844 为MyTest类创建属性和方法\r\n845 初始化类\r\n846 创建TestMyTest工程\r\n847 实例化MyTest类\r\n848 执行MyTestDemo工程\r\n849 理解对象的生命周期\r\n850 向MyTest类中添加SelfAbsorbed属性\r\n851 理解循环引用\r\n852 理解AtiveX组件的命名原则\r\n853 理解行为良好的组件\r\n854 理解VBScript\r\n855 理解VBScript的好处\r\n856 在HTML中使用VBScript\r\n857 对VBScript中事件的响应\r\n858 执行Hello.HTML文件\r\n859 对VBScript进行注释\r\n860 在VBScript中执行数学函数\r\n861 执行事件和操作\r\n862 使用VBScript的Option Explicit\r\n863 使用VBScript的Dim\r\n864 使用ActiveX控件的VBScript\r\n865 从VBScript访问ActiveX控件\r\n866 在一个HTML页中使用Label控件和Timer控件\r\n867 引用ActiveX控件\r\n868 理解PARAM NAME标签\r\n869 注册ActiveX控件\r\n870 使用注册表编辑器来寻找Class ID\r\n871 在HTML文件中使用WebBrowser控件\r\n872 Active Server Pages\r\n873 在ASP中响应和请求\r\n874 使用Querystring参数\r\n875 格式化的一个捷径\r\n876 回退\r\n877 理解.INI文件\r\n878 使用文件的WritePrivateProfileString API\r\n879 使用.ini文件的GetPrivateProfileString API\r\n880 使用.ini文件的GetPrivateProfileInt API\r\n881 在分布式程序中使用.ini文件\r\n882 理解.ini文件的局限性\r\n883 理解System Registry\r\n884 理解SaveSetting函数\r\n885 理解GetSetting成员函数\r\n886 使用SaveSetting和GetSetting语句\r\n887 在注册表中保存窗体的大小和位置\r\n888 在注册表中进行程序之间的变量传递\r\n889 使用DeleteSetting函数\r\n890 使用GetAllSettingS函数\r\n891 使用注册表的API函数\r\n892 理解RegOpenKeyEx API函数\r\n893 理解RegQueryValueEx函数\r\n894 理解RegCloseKey函数\r\n895 当打开窗体时使用API函数\r\n896 理解RegCreateKeyEx函数\r\n897 理解RegSetValueEx函数\r\n898 使用RegSetValueEx和RegCreateValueEx\r\n899 捕获注册表错误\r\n900 使用API函数删除键和值\r\n901 访问注册表\r\n902 理解条件编译\r\n903 理解#Const语句\r\n904 理解#If-Then-#Else\r\n905 使用条件编译\r\n906 理解GetWindowsDirectory API函数\r\n907 理解GetSystemDirectory API函数\r\n908 使用GetWindow函数\r\n909 得到窗口的名字\r\n910 导出应用程序\r\n911 理解Visual Basic的安装向导\r\n912 选择要发布的工程文件\r\n913 选择发布媒介\r\n914 确保所有文件都包含在发布列表中\r\n915 保存安装模板\r\n916 产生发布媒体\r\n917 在用户的计算机上安装程序\r\n918 创建Internet发布\r\n919 重新考虑应用程序向导\r\n920 使用应用程序向导产生标准窗体\r\n921 理解Splash Screen\r\n922 理解About对话框\r\n923 使用向导添加数据库窗体\r\n924 理解Crystal Reports\r\n925 使用Crystal Reports\r\n926 为报表选择数据源\r\n927 在报表中添加字段\r\n928 报表中的记录分组\r\n929 Totaling and Counting分组字段\r\n930 选择记录及风格化报表\r\n931 修改报表\r\n932 移动、改变大小、格式化以及删除字段\r\n933 改变报表中数据的排列顺序\r\n934 校正排列和分组次序\r\n935 创建定制组\r\n936 使用Summarized和Totaled字段\r\n937 插入小结\r\n938 插入几总\r\n939 插入总结\r\n940 选择记录\r\n941 返回组中前N个记录\r\n942 创建公式\r\n943 在报表中加入图形/图表\r\n944 在报表中插入OLE或ActiveX对象\r\n945 添加或修改表头\r\n946 理解Crystal Report引擎\r\n947 理解Crystal ActiveX控件\r\n948 使用Crystal ActiveX控件\r\n949 理解Crystal窗口上的图标\r\n950 Crystal Reports控件的局限性\r\n951 扩展Visual Basic\r\n952 重新考虑对象模型\r\n953 理解外接程序\r\n954 创建一个外接程序\r\n955 访问扩展模型\r\n956 创建工程的组件\r\n957 理解IDTExtensibility接口\r\n958 理解OnConnection函数\r\n959 深入浅出OnConnection代码\r\n960 理解AddToAddInCommandBar函数\r\n961 自定义Connect模块\r\n962 添加最后的组件\r\n963 完成外接程序设计\r\n964 添加外接程序到.ini文件\r\n965 装载外接程序\r\n966 外接程序的疑难解答\r\n967 理解ActiveX EXE\r\n968 区分进程外和进程内组件\r\n969 理解线程\r\n970 理解异步处理\r\n971 理解使用事件的异步通知\r\n972 理解使用回调方法的异步通知\r\n973 在多客户中使用回调\r\n974 选择基于事件的通知还是基于回调的通知\r\n975 理解类型库\r\n976 理解默认接口\r\n977 重新考虑GUID\r\n978 理解版本兼容\r\n979 创建ActiveX EXE\r\n980 理解进程外组件的模态\r\n981 开始创建测试工程\r\n982 在测试工程中加入代码\r\n983 查看有模态的TestForm\r\n984 查看无模态的TestForm \r\n985 使用异步通知\r\n986 完成事件通知代码\r\n987 编写客户程序\r\n988 考虑如何处理多客户\r\n989 使用Connector对象\r\n990 认识到Connector中的错误\r\n991 使用异步回调方法\r\n992 创建LunchTimeMonitor可执行程序\r\n993 发布ActiveX EXE\r\n994 理解单线程\r\n995 有序开发ActiveX组件\r\n996 重新考虑多线程\r\n997 理解套间模式线程\r\n998 理解重进入\r\n999 理解二进制兼容性\r\n1000 避免版本树\r\n1001 避免版本兼容消息