启
启明星
Unregistered / Unconfirmed
GUEST, unregistred user!
---- 数 据 网 格 是 非 常 流 行 的 数 据 输 入 和 显 示 形 式, 像 大 家 熟 悉 的Excel97、VFP 中 的 功 能 强 大 的BROWS 等, 为 广 大 程 序 员 乐 于 采 用。 在 用Delphi3 开 发 数 据 库 应 用 系 统 时, 利 用 数 据 网 格DBGrid 输 入 数 据 时, 有 些 字 段 只 允 许 某 几 个 固 定 的 字 符 串, 像 档 案 案 卷 的 保 管 期 限, 只 有“ 永 久”、“ 长 期” 和“ 短 期” 三 种, 可 否 从 一 个 下 拉 列 表 中 进 行 选 择, 从 而 方 便 输 入 和 避 免 输 入 错 误 呢 ? 还 有 一 些 字 段, 例 如 职 工 信 息 库 中 的 单 位 编 号( 在 另 外 的 单 位 库 中 保 存 着 单 位 的 详 细 信 息), 在 输 入 和 显 示 职 工 数 据 时, 能 否 不 对 单 位 编 号 进 行 操 作, 而 代 之 于 更 加 直 观 的 单 位 库 中 的 单 位 名 称 呢 ? 答 案 是 肯 定 的,Delphi3 的 数 据 网 格 控 件DBGrid, 支 持 下 拉 列 表 和 查 找 字 段 的 编 程, 而 且, 编 程 的 过 程 都 是 可 视 化 的, 不 需 要 写 一 行 语 句。
一、DBGrid 中 的 下 拉 列 表
---- 在DBGrid 网 格 中 实 现 下 拉 列 表, 设 置 好DBGrid 中 该 字 段 的PickList 字 符 串 列 表、 初 始 的 序 号 值DropDownRows 即 可。 以 职 工 信 息 库 中 的 籍 贯 字 段( 字 符 串 类 型) 为 例, 具 体 设 计 步 骤 如 下:
---- 1、 在 窗 体 上 放 置Table1、DataSource1、DBGrid1、DBNavigator1 等 控 件 对 象, 按 下 表 设 置 各 个 对 象 的 属 性:
---------------------------------------
对象 属性 设定值
---------------------------------------
Table1 DataBase sy1
Table zgk.dbf //职工信息库
DataSource1 DataSet Table1
DbGrid1 DataSource DataSource1
DBNavigator1 DataSource Datasource1
-------------------------------------------
---- 2、 双 击Table1, 在 弹 出 的Form1.Table1 窗 口 中, 用 右 键 弹 出 快 捷 菜 单, 单 击Add Fields 菜 单 项; 选 择 所 有 的 字 段 后, 按OK 按 钮。
---- 3、 修 改 第2 步 新 增 字 段 的DisplayLabel 属 性。 以Table1ZGBH 字 段 为 例, 在Object Inspector 窗 口 中 选 择Table1ZGBH, 修 改 属 性DisplayLabel= 职 工 编 号, 其 余 字 段 类 似。
---- 4、 双 击DBGrid1, 在 弹 出 的Editing DBGrid1.Columns 窗 口 中, 单 击Add all Fields 按 钮, 增 加Table1 的 所 有 字 段。
---- 5、 在Editing DBGrid1.Columns 窗 口, 选 择jg 这 一 行, 切 换 到Object Inspector 窗 口, 修 改 它 的PickList.Strings 为“ 湖 北 枝 江 市( 换 行) 北 京 市( 换 行) 河 南 平 顶 山 市( 换 行) 浙 江 德 清 市”
---- 6、 在Form1.Oncreate 事 件 中 写 入 语 句:
---- Table1.Open;
---- 7、F9 运 行, 用 鼠 标 点 击 某 个 记 录 的 籍 贯 字 段, 右 边 即 出 现 一 个 按 钮, 点 击 这 个 按 钮, 可 出 现 一 个 下 拉 列 表, 包 含 第5 步 中 输 入 的 四 行 字 符 串, 可 用 鼠 标 进 行 选 择。 当 然 也 可 以 自 行 输 入 一 个 并 不 属 下 拉 列 表 中 的 字 符 串。
二、DBGrid 中 的 查 找 字 段
---- 所 谓 查 找 字 段(LookUp Field), 即DBGrid 中 的 某 个 关 键 字 段 的 数 值 来 源 于 另 外 一 个 数 据 库 的 相 应 字 段。 运 用 查 找 字 段 技 术, 不 仅 可 以 有 效 的 避 免 输 入 错 误, 而 且DBGrid 的 显 示 方 式 更 为 灵 活, 可 以 不 显 示 关 键 字 段, 而 显 示 源 数 据 库 中 相 对 应 的 另 外 一 个 字 段 的 数 据。
---- 例 如, 我 们 在DBGrid 中 显 示 和 编 辑 职 工 信 息, 包 括 职 工 编 号、 职 工 姓 名、 籍 贯、 所 在 单 位 编 号, 而 单 位 编 号 来 源 于 另 一 个 数 据 库 表 格 — — 单 位 库, 称“ 单 位 编 号” 为 关 键 字 段。 如 果 我 们 直 接 显 示 和 编 辑 单 位 编 号 的 话, 将 会 面 对1、2、3 等 非 常 不 直 观 的 数 字, 编 辑 时 极 易 出 错。 但 是 如 果 显 示 和 编 辑 的 是 单 位 库 中 对 应 的 单 位 名 称 话, 将 非 常 直 观。 这 就 是DBGrid 的 所 支 持 的 查 找 字 段 带 来 的 好 处。
---- 实 现DBGrid 的 查 找 字 段 同 样 不 需 要 任 何 语 句, 具 体 设 计 步 骤 如 下:
---- 1、 在 窗 体 上 放 置Table1、Table2、DataSource1、DBGrid1、DBNavigator1 等 控 件 对 象, 按 下 表 设 置 各 个 对 象 的 属 性:
---------------------------------------
对象 属性 设定值
---------------------------------------
Table1 DataBase sy1
Table zgk.dbf //职工信息库
Table2 DataBase sy1
Table dwk.dbf //单位信息库
DataSource1 DataSet Table1
DbGrid1 DataSource DataSource1
DBNavigator1 DataSource Datasource1
------------------------------------------
---- 2、 双 击Table1, 在 弹 出 的Form1.Table1 窗 口 中, 用 右 键 弹 出 快 捷 菜 单, 单 击Add Fields 菜 单 项; 选 择 所 有 的 字 段 后, 按OK 按 钮。
---- 3、 修 改 第2 步 新 增 字 段 的DisplayLabel 属 性。 以Table1ZGBH 字 段 为 例, 在Object Inspector 窗 口 中 选 择Table1ZGBH, 修 改 属 性DisplayLabel= 职 工 编 号, 其 余 字 段 类 似。
---- 4、 设 置Table1DWBH.Visible=False。
---- 5、 在Form1.Table1 窗 口, 用 右 键 弹 出 快 捷 菜 单, 单 击New Field 菜 单 项, 新 增 一 个 查 找 字 段DWMC, 在 弹 出 的 窗 口 设 置 相 应 的 属 性, 按OK 按 钮 确 认; 在Object Inspector 窗 口, 设 置Table1DWMC.DisplayLabel= 单 位 名 称。
---- 6、 在Form1.Oncreate 事 件 中 写 入 语 句:
---- Table1.Open;
---- 7、 按F9 运 行, 当 光 标 移 至 某 个 记 录 的 单 位 名 称 字 段 时, 用 鼠 标 点 击 该 字 段, 即 出 现 一 个 下 拉 列 表, 点 击 右 边 的 下 箭 头, 可 在 下 拉 列 表 中 进 行 选 择。 在 这 里 可 以 看 出, 下 拉 列 表 的 内 容 来 自 于 单 位 信 息 库, 并 且 不 能 输 入 其 他 内 容。
三、DBGrid 中 的 下 拉 列 表 和 查 找 字 段 的 区 别
---- 虽 然DBGrid 中 的 下 拉 列 表 和 查 找 字 段, 都 是 以 下 拉 列 表 的 形 式 出 现 的, 但 两 者 有 很 大 的 差 别。
---- 1、 用PickList 属 性 设 置 的 下 拉 列 表, 它 的 数 据 是 手 工 输 入 的, 虽 然 也 可 以 在 程 序 中 修 改, 但 动 态 特 性 显 然 不 如 直 接 由 另 外 数 据 库 表 格 提 取 数 据 的 查 找 字 段。
---- 2、 用PickList 属 性 设 置 的 下 拉 列 表, 允 许 输 入 不 属 于 下 拉 列 表 中 的 数 据, 但 查 找 字 段 中 只 能 输 入 源 数 据 库 中 关 键 字 段 中 的 数 据, 这 样 更 能 保 证 数 据 的 完 整 性。
---- 3、 用PickList 属 性 设 置 的 下 拉 列 表 设 计 较 为 简 单。
一、DBGrid 中 的 下 拉 列 表
---- 在DBGrid 网 格 中 实 现 下 拉 列 表, 设 置 好DBGrid 中 该 字 段 的PickList 字 符 串 列 表、 初 始 的 序 号 值DropDownRows 即 可。 以 职 工 信 息 库 中 的 籍 贯 字 段( 字 符 串 类 型) 为 例, 具 体 设 计 步 骤 如 下:
---- 1、 在 窗 体 上 放 置Table1、DataSource1、DBGrid1、DBNavigator1 等 控 件 对 象, 按 下 表 设 置 各 个 对 象 的 属 性:
---------------------------------------
对象 属性 设定值
---------------------------------------
Table1 DataBase sy1
Table zgk.dbf //职工信息库
DataSource1 DataSet Table1
DbGrid1 DataSource DataSource1
DBNavigator1 DataSource Datasource1
-------------------------------------------
---- 2、 双 击Table1, 在 弹 出 的Form1.Table1 窗 口 中, 用 右 键 弹 出 快 捷 菜 单, 单 击Add Fields 菜 单 项; 选 择 所 有 的 字 段 后, 按OK 按 钮。
---- 3、 修 改 第2 步 新 增 字 段 的DisplayLabel 属 性。 以Table1ZGBH 字 段 为 例, 在Object Inspector 窗 口 中 选 择Table1ZGBH, 修 改 属 性DisplayLabel= 职 工 编 号, 其 余 字 段 类 似。
---- 4、 双 击DBGrid1, 在 弹 出 的Editing DBGrid1.Columns 窗 口 中, 单 击Add all Fields 按 钮, 增 加Table1 的 所 有 字 段。
---- 5、 在Editing DBGrid1.Columns 窗 口, 选 择jg 这 一 行, 切 换 到Object Inspector 窗 口, 修 改 它 的PickList.Strings 为“ 湖 北 枝 江 市( 换 行) 北 京 市( 换 行) 河 南 平 顶 山 市( 换 行) 浙 江 德 清 市”
---- 6、 在Form1.Oncreate 事 件 中 写 入 语 句:
---- Table1.Open;
---- 7、F9 运 行, 用 鼠 标 点 击 某 个 记 录 的 籍 贯 字 段, 右 边 即 出 现 一 个 按 钮, 点 击 这 个 按 钮, 可 出 现 一 个 下 拉 列 表, 包 含 第5 步 中 输 入 的 四 行 字 符 串, 可 用 鼠 标 进 行 选 择。 当 然 也 可 以 自 行 输 入 一 个 并 不 属 下 拉 列 表 中 的 字 符 串。
二、DBGrid 中 的 查 找 字 段
---- 所 谓 查 找 字 段(LookUp Field), 即DBGrid 中 的 某 个 关 键 字 段 的 数 值 来 源 于 另 外 一 个 数 据 库 的 相 应 字 段。 运 用 查 找 字 段 技 术, 不 仅 可 以 有 效 的 避 免 输 入 错 误, 而 且DBGrid 的 显 示 方 式 更 为 灵 活, 可 以 不 显 示 关 键 字 段, 而 显 示 源 数 据 库 中 相 对 应 的 另 外 一 个 字 段 的 数 据。
---- 例 如, 我 们 在DBGrid 中 显 示 和 编 辑 职 工 信 息, 包 括 职 工 编 号、 职 工 姓 名、 籍 贯、 所 在 单 位 编 号, 而 单 位 编 号 来 源 于 另 一 个 数 据 库 表 格 — — 单 位 库, 称“ 单 位 编 号” 为 关 键 字 段。 如 果 我 们 直 接 显 示 和 编 辑 单 位 编 号 的 话, 将 会 面 对1、2、3 等 非 常 不 直 观 的 数 字, 编 辑 时 极 易 出 错。 但 是 如 果 显 示 和 编 辑 的 是 单 位 库 中 对 应 的 单 位 名 称 话, 将 非 常 直 观。 这 就 是DBGrid 的 所 支 持 的 查 找 字 段 带 来 的 好 处。
---- 实 现DBGrid 的 查 找 字 段 同 样 不 需 要 任 何 语 句, 具 体 设 计 步 骤 如 下:
---- 1、 在 窗 体 上 放 置Table1、Table2、DataSource1、DBGrid1、DBNavigator1 等 控 件 对 象, 按 下 表 设 置 各 个 对 象 的 属 性:
---------------------------------------
对象 属性 设定值
---------------------------------------
Table1 DataBase sy1
Table zgk.dbf //职工信息库
Table2 DataBase sy1
Table dwk.dbf //单位信息库
DataSource1 DataSet Table1
DbGrid1 DataSource DataSource1
DBNavigator1 DataSource Datasource1
------------------------------------------
---- 2、 双 击Table1, 在 弹 出 的Form1.Table1 窗 口 中, 用 右 键 弹 出 快 捷 菜 单, 单 击Add Fields 菜 单 项; 选 择 所 有 的 字 段 后, 按OK 按 钮。
---- 3、 修 改 第2 步 新 增 字 段 的DisplayLabel 属 性。 以Table1ZGBH 字 段 为 例, 在Object Inspector 窗 口 中 选 择Table1ZGBH, 修 改 属 性DisplayLabel= 职 工 编 号, 其 余 字 段 类 似。
---- 4、 设 置Table1DWBH.Visible=False。
---- 5、 在Form1.Table1 窗 口, 用 右 键 弹 出 快 捷 菜 单, 单 击New Field 菜 单 项, 新 增 一 个 查 找 字 段DWMC, 在 弹 出 的 窗 口 设 置 相 应 的 属 性, 按OK 按 钮 确 认; 在Object Inspector 窗 口, 设 置Table1DWMC.DisplayLabel= 单 位 名 称。
---- 6、 在Form1.Oncreate 事 件 中 写 入 语 句:
---- Table1.Open;
---- 7、 按F9 运 行, 当 光 标 移 至 某 个 记 录 的 单 位 名 称 字 段 时, 用 鼠 标 点 击 该 字 段, 即 出 现 一 个 下 拉 列 表, 点 击 右 边 的 下 箭 头, 可 在 下 拉 列 表 中 进 行 选 择。 在 这 里 可 以 看 出, 下 拉 列 表 的 内 容 来 自 于 单 位 信 息 库, 并 且 不 能 输 入 其 他 内 容。
三、DBGrid 中 的 下 拉 列 表 和 查 找 字 段 的 区 别
---- 虽 然DBGrid 中 的 下 拉 列 表 和 查 找 字 段, 都 是 以 下 拉 列 表 的 形 式 出 现 的, 但 两 者 有 很 大 的 差 别。
---- 1、 用PickList 属 性 设 置 的 下 拉 列 表, 它 的 数 据 是 手 工 输 入 的, 虽 然 也 可 以 在 程 序 中 修 改, 但 动 态 特 性 显 然 不 如 直 接 由 另 外 数 据 库 表 格 提 取 数 据 的 查 找 字 段。
---- 2、 用PickList 属 性 设 置 的 下 拉 列 表, 允 许 输 入 不 属 于 下 拉 列 表 中 的 数 据, 但 查 找 字 段 中 只 能 输 入 源 数 据 库 中 关 键 字 段 中 的 数 据, 这 样 更 能 保 证 数 据 的 完 整 性。
---- 3、 用PickList 属 性 设 置 的 下 拉 列 表 设 计 较 为 简 单。