第 7章 电视节目脱机浏览器
将电视节目时间表下载到本地硬盘,再做一个
浏览器进行脱机浏览,可以大大提高查询速度、降
低费用。
本章涉及到的主要技术有:标签页、跟踪条、
进度条、数据存储对象的使用,下拉别表项的动态
更新,文本文件内容导入数据库,文件的设定与选
取,在一个窗口中对另一个窗口进行控制,多条件
查询,数据窗口对象的创造性应用等。
进入目录获奖证书
7.1 数据库与应用程序对象
7.2 w_tv窗口设计
7.3 将电视节目导入数据库
7.4 任意查询的实现
7.5 按时段查询各频道当前正在播出和即将播出的节

7.6 属性控制与数据删除
7.7 频道预置窗口和“关于”窗口的设计
返回
7.1 数据库与应用程序对象
建立一个 Access 2002数据库 tv_acc.mdb,在数据库中建立两
个表,tv_tab和 tv_cnl。
表 tv_tab用来存储一周中各频道电视节目的播出日期, 时间等
信息, 其结构如表 7.1所示 。
表 7.1 tv_tab表结构
字段名称 数据类型 宽度 含义
rq 日期 /时间 系统默认 播出日期
xq 文本 6 播出星期
pd 文本 16 频道名称
sj 文本 5 播出时间
jm 文本 80 节目名称
返回章目录
表结构建立之后, 再按 rq,pd,sj建立一个唯一索引,
取名为 tv_tab_x。
表 tv_cnl用来存储预置频道名称以及是否被选用的信
息, 其结构如表 7.2所示 。
表 7.2 tv_cnl表结构
字段名称 数据类型 宽度 含义
pd 文本 16 频道名称 ( 唯一索引字段 )
ck 整型数字 系统默认 0表示未被选用 (默认值 )1表示已被选用
对应用程序对象 tv_tab的 open事件编写代码 。
7.2 w_tv窗口设计
窗口 w_tv的 Title属性设置为, 电视节目脱机浏览器,, 窗口
类型为 main!,窗口初始状态为 normal!,大小为满屏, 图标为
Window!。
在窗口 w_tv的 open事件中编写代码:
cb_3命令按钮的 clicked事件代码为:
下面介绍数据窗口对象 d_cnl的设计方法 。
打开图例 关闭图例
返回章目录
单击 PowerBar工具栏上的, New”按钮, 在弹出的, New”对
话框中单击, DataWindow” 标签, 选择 Grid( 网格 ) 风格和
,SQL Select”方式 。 打开 tv_cnl表, 选择所有字段, 进行必
要的属性设置, 得到如图 7.2所示数据窗口对象布局和预览结
果 。
除了设置标题文本和细节区字段值的字体, 字号, 颜色等
属性外, 对 ck字段的属性还需做特殊设置 。 选中字段 ck,在
属性窗格单击 edit选项卡, 在, Style Type”下拉列表中选择
CheckBox,选中, 3D Look”复选标记, 设置, Data Value
for On”和, Data Value for Off”属性分别为 1和 0。 如图 7.2所
示 。
最后, 保存到对象库 tv_tab.pbl中, 命名为 d_cnl。打开图例 关闭图例
7.3 将电视节目导入数据库
下载的节目信息是一个 压缩文件, 解压后得到, 中
央 11套,,, 教育台, 和, 地方台, 三个文件夹 。
文件目录如图 7.3所示 。
每一个电视 节目文件 的内容都是 纯文本 。
单击窗口 w_tv的, 导入, 按钮, 产生 clicked事件, 通
过下面代码可在指定的文件夹中将预选频道的电视节
目信息导入数据库的表 tv_tab。
打开图例
关闭图例
返回章目录
7.4 任意查询的实现
电视节目导入数据库的 tv_tab表后, 可进行任意查询 。
1,针对表 tv_tab建立数据窗口对象 d_jmll(节目浏览 ),
网格式, 按 pd( 频道 ), rq( 日期 ), sj( 时间 ) 排
序 。 d_jmll的布局和预览结果如图 7.6所示 。
2,将窗口 w_tv第一个标签页上的数据窗口控件 dw_1与
d_jmll挂接 。
3,相关控件和代码 。
4,窗口的用户事件 u_serch 代码
在用户事件 u_serch 代码
打开图例
关闭图例
返回章目录
7.5 按时段查询各频道当前正
在播出和即将播出的节目
针对表 tv_tab建立一个数据窗口对象 d_sdcx(时段
查询 ),按 pd(频道 )分组, 组信息与细节带信息相
同, 即分组各项直接用字段名 。 将细节带向上拖,
使细节信息隐蔽起来, 而只显示出标题和组信息 。
第二, 三个标签页上的数据窗口空件 dw_2,dw_3
均与 d_sdcx挂接 。
返回章目录
与此相关的控件有下拉列表 ddlb_1(星期 )和
掩码编辑框 em_1(时间选择 )。
前面提到, 在用户事件 u_serch 代码 中, 如
果 Tab_1.SelectedTab不等于 1,即选中的是
第二, 三标签页, 则执行, 查询当前节目,
下一节目代码, 。 下面给出这段代码 ( 条
件表达式变量 jstj1和 jstj2已在前面定义 )
7.6 属性控制与数据删除
第一个标签页用来进行任意查询, 第二, 三
个标签页用来查询当前各频道正在播出的节
目和即将播出的下一个节目 。 选择不同的标
签页, 窗口的控件属性也要进行相应的修改 。
下面是标签控件 tab_1的 selectionchanged事件
代码 。
返回章目录
在窗口上安排了一个命令按钮, 清除,, 用来将
全部电视节目信息删除, 即删除 表 tv_tab的全部
记录 。, 清除, 按钮的 clicked事件代码为:
当确认要删除数据时, 用 SQL语句
DELETE FROM "tv_tab";
将 表 tv_tab的全部记录删除 。 然后刷新三个标签
页上的数据窗口控件内容, 并显示记录数 。
7.7 频道预置窗口和, 关于,
窗口的设计
前面在窗口 w_tv的 open事件和, 导入,
按钮的 clicked事件中都使用了表 tv_cnl中的
数据 。 为了便于对该表的数据进行维护管
理, 我们建立一个频道预置窗口 w_cnl,如
图 7.8所示 。
打开图例 关闭图例
返回章目录
该窗口上放置一个数据窗口控件 dw_1,与前面定义的
数据窗口对象 d_cnl连接 。 通过相应的按钮进行增删,
保存和记录翻阅 。
窗口及控件的编码与第 6章小型财务软件的收支类型数
据维护窗口基本相同, 不再复述 。
值得一提的是, 在, 保存, 按钮的代码中, 除了用函
数 Update()将 dw_1缓冲区中的数据保存到数据库以外,
还用代码
w_tv.TriggerEvent("open")
触发 w_tv窗口的 open事件, 使频道下拉列表内容立即
更新 。 返回本节
使用之前, 要为 Access数据库 tv_acc.mdb配置
ODBC。 驱动程序为 Microsoft Access Driver (*.mdb),
数据源名为 tv_acc,UserId和 Password省略 。
运行应用程序后,可通过“节目下载”超级链
接,到中央电视台网站下载节目时间表,将其保存
到本地硬盘的任意一个文件夹并解压缩。单击“清
除”按钮,删除 tv_tab表中原有记录。单击“设置”
按钮,打开频道预置窗口,增删频道名,设置选用
状态,注意频道名要与电视节目表的文本文件名一
致。单击“导入”按钮,将选定频道的节目信息导
入数据库 。
返回本节
选择, 任意查询, 标签页, 可按频道, 星期,
节目名称和时间范围进行查询, 选择, 当前节目,
或, 下个节目, 标签页, 可查看指定时间正在播出
或即将播出的节目 。
,全部, 按钮的作用是清除查询条件并将时间
范围设置为最大 。 以显示全部记录 。
,此时, 按钮用来将当前时间设置到 em_1,使
htb_1跟踪条按当前时间定位, 并将当前星期作为
ddlb_1.text的值 。 也就是要按现在时刻进行查询 。
查询结果如图 7.10,7.11和 7.12所示 。
返回本节图例 10 图例 11 图例 12
当在, 频道预值, 窗口选用如图
7.13所示的几个频道后, 单击, 保
存, 按钮, 再单击, 频道, 下拉列
表框右边的三角符号, 会看到如图
7.14所示的列表项 。
打开图例 关闭图例 返回本节