OLE在PB数据窗口中的实现

转载 2006年05月18日 20:25:00
OLE在PB数据窗口中的实现


---- OLE(Object linking and Embedding), 即 对 象 连 接 与 嵌 入 简 称, 是 在Windows 环 境 下 实 现不 同Windows 实 用 程 序 之 间 共 享 数 据 和 程 序 功 能 的 一 种 方法。 在PowerBuilder( 简 称PB) 的 应 用 中 实 现OLE, PB 作 为OLE Container, 在 其 中 调 用OLE Server, 利 用OLE Server 提 供 的 功 能 来 显示 和 操 纵OLE 对 象。


---- PB 的 数 据 窗 口(DataWindow) 支 持OLE2.0。 在 其 中 可 建 立Blob(Binary Large Object 二 进 制 大 型 对象) 或image 类 型 的 字 段, 这 种 字 段 的 数 据 为 一OLE 对 象。 由于 数 据 窗 口 支 持OLE2.0, 因 此 在 使 用 时 你 需 要 保 证 你 要 用到 的OLE Server 也 要 支 持OLE2.0 对 象。 用 户 或 程 序 可 以 激 活 该OLE 字 段, 并 且 可 以 向OLE Server 发 送 简 单 的 命 令, 在PB 的 数 据窗 口 中, 你 可 以 建 立OLE 字 段。 一 个OLE 字 段 可 以 完 成 如 下功 能:

  • 在 数 据 库 中 存 储OLE 对 象, 比 如Excel 电子 表 格 或Word for Windows 的 文 本 文 件。
  • 把OLE 对 象 从 数 据 库 中 提 取 到 数 据 窗口。
  • 使 用OLE Server, 比 如Excel 或Word for Windows 来 修改 数 据。
  • 将 修 改 过 的 数 据 存 入 数 据 库。

---- 下 文 将 结 合 一个 例 子 解 释 如 何 完 成 上 述 功 能。 在 数 据 库 中, 建 一 个表 中, 该 表 有 一 个image 类 型 的 字 段, 用 于 存 放Windows Paintbrush 编 辑 的bmp 图, PB 可 在 数 据 窗 口 中 提 取 该 表 的 记录, 并 把image 字 段 中 的bmp 图 显 示 在 窗 口 中, 然 后 通 过 在数 据 窗 中 双 点(Double Click) 该 图, 自 动 打 开Paintbrush 并 调 出bmp 图, 用 户 可 对 它 进 行 一 些 修 改 和 保 存 修 改 结 果。


---- 具 体 实 现 步 骤如 下:


---- 一. 建 立OLE 字 段


---- 在 本 例 中, 我 们就 建 立 一 个 表Paint, 内 含2 个 字 段, 一 个 字 段 名 为ID, 另 一个 字 段 名 称 作File。 进 入PB 的Database 画 笔 来 建 此 表。ID 字 段取type 为integer, 不 许 为 空;File 字 段type 为 Image, 可 为 空, 并 选ID 为 主 键. 注:File 字 段 的 数 据 类 型 即 为 所 谓Blob 类 型, 但 不 同DBMS 中 取 的 名 字 不 同, 如watcom SQL 称 为long birary, 而SQL Server 为Image 或Text。


---- 二. 设 置 Autocommit


---- 在 使 用SYBASE SQL Server 数 据 库 时, 含 有OLE 字 段 的DataWindow 所 使 用 的Transaction Object( 事 务 对 象) 中 的AutoCommit 项 必 须 置 为TRUE, 在 设 计DataWindow 前, 可 通 过Preference 画 笔, 选 择Database 图 标, 将 其 中 的Autocommit 项赋 值 为1.


---- 三. 设 计 数 据 窗口


---- 在DataWindow 画 笔中, 打 开 建 好 的Paint 表, 但 此 时 只 选 择ID 字 段 进 行 显 示, 而先 不 要 选 择file 字 段( 我 们 将 在 设 计 窗 口 中 再 添 加 此 字段)。DataWindow 的 设 计 窗 口, 从Objects 菜 单 中 选 择OLE Database Blob 项, 然 后 在 设 计 窗 口 中 适 当 位 置 点 鼠 标 左 键, 此 时Database Birary/Text Large Object 对 话 窗 显 示 出 来。 逐 项 填 写 对 话 窗:


---- 在Name 项, 填 入 适当 名 字, 此 项 可 选, 但 起 了 名 字 后, 可 使 你 在 程 序 中 引用。


---- 在Client Class 中 填入DataWindow, 可 选 。


---- 在Client Name 中 填入 当 前DataWindow 的 名 字, 可 选 。


---- 在Table 中 选 择Paint 表 。


---- 在Large Binary/Text Columns 中, 选 择file 字 段 。


---- 在Key Clause 中, 选id=:id, 该 项 用 于 构 造where 子 句, 即where id=:id, 用 于 定 位 相 应 记 录。


---- 在File template 中, 填 入 一 个bmp 文 件 名, 或 通 过Browse 键 来 查 找 一 个 文 件, 比 如我 们 选 择arcade.bmp。


---- 在OLE Class,Description (Only Class is Used) 中, 通 过 下 拉 菜 单 选 择Paintbrush。


---- 在Client Name Expression: 中, 填 入 某 一 字 符 串 表 达 式, 该 表 达 式 将 OLE Server 运 行 时, 显 示 在 其Title 处, 如 填 入".BMP File"+String(id)


---- 按OK 键 。


---- 此 时, PB 关 闭 该对 话 窗, 并 回 到DataWindow 的 设 计 窗 口,OLE 字 段 以 一 个 小 方 框的 形 式 显 示 出 来 。 一 般 情 况 当 你 运 行 该DataWindow 时, 上 述小 方 框 不 显 示 出 来。 因 此, 为 了 识 别 该OLE 字 段 在DataWindow 中 的 位 置, 我 们 可 以 在 该 小 方 框 后 摆 放 一 个 可 以 识 的东 西, 如 一 个 椭 圆 等 等, 因 此 在DataWindow 显 示 时, 我 们 只 要双 点 该 椭 圆, 即 可 激 活OLE Server。


---- 四. 预 浏 览(Preview)OLE 对 象


---- 在DataWindow 的 设计 窗 口 下, 点 按Preveiw 图 标, 然 后 点 按Insert 图 标, 在Paint 表 中添 加 一 行, 填 入id, 然 后 双 点 椭 圆, 此 时Paintbrush 被 激 活。 同时 打 开arcade.bmp, 做 一 些 修 改, 然 后 从Paintbrush 的File 菜 单 中选 择Update 项, 来 更 新 你 的 修 改, 此 时OLE Server 将 你 的 修 改 信息 送 回DataWindow, 然 后 通 过 选 择File 菜 单 中 的Close 项 关 闭Paintbrush 并 回 到DataWindow, 此 时 在 你 的DataWindow 中OLE 字 段 所 在 处 显 示出 了Paintbrush 所 画 的 图 标。 按Upd DB 图 标, 将OLE 数 据 存 入 数 据库 中. 以 后, 当 你 从 库 中 查 出Paint 表 中 的 记 录 时, 你 可 以通 过 双 点OLE 对 象 来 操 作 它, 方 法 同 上

解决 pb插入ole控件点击insert control时关闭他PB插入OCX控件程序崩溃问题

在PB里添加控件里面添加OLE控件时,当点击到第二标签或者第三标签程序直接崩溃 解决办法: 在运行里输入CMD ,进入DOS状态下,输入如下命令,可以批量注册*.DLL,*.ocx。 For %...
  • hfzsjz
  • hfzsjz
  • 2015年03月07日 22:09
  • 4666

在PowerBuilder中利用OLE技术调用Excel

 实现原理    OLE(对象链接与嵌入) 是一种Window程序之间实现共享数据与功能的面向对象技术,目前流行的Windows 和 Macintosh 操作系统平台都支持 OLE 对象。借助OLE不...
  • iko2008
  • iko2008
  • 2010年03月03日 15:45
  • 2552

【PB】TriggerEvent()/Event()/PostEvent()有什么不同

TriggerEvent()/Event()/PostEvent()有什么不同 在PB中经常要从一个事件中调用另外一个事件,常用的就是这几个函数 event把被调用事件放在最后面处理,可以带参数,...

在PB中用OLE存取blob类型数据

3、OLE存储   3.1 OLE存储(OLEstorage)的概念   OLE存储(OLEstorage)是OLE数据的一个仓库,存储就象磁盘上的目录结构,它可以是一个OLE对象,也可以包含...
  • tlammon
  • tlammon
  • 2015年01月18日 22:07
  • 420

在PB中用OLE存取blob类型数据

前言:在数据库的开发过程中,经常需要在数据库中存储一些备注信息,而这些备注信息的内容一般较大,格式多样—如有可能是语音文件、视频文件、图片文件、文本文件等,怎样在PB中实现这些格式不同的备注文件的存取...
  • linybo
  • linybo
  • 2014年04月13日 21:40
  • 969

PB实现数据窗口中checkbox的点选

数据窗口中checkbox有时候点了却不打勾,是因为数据窗口的taborder值的问题,解决办法就是修改为0,代码控制完成。 数据窗口clicked事件//在窗口的实例变量定义:long il_La...
  • tlammon
  • tlammon
  • 2015年07月10日 15:39
  • 2131

PB [Grid风格数据窗口改变线条颜色] 的变通实现方法(也可以成为 带表头的Grid数据窗口)

 PB [Grid风格数据窗口改变线条颜色] 的变通实现方法(也可以成为 带表头的Grid数据窗口)         PB中Grid类型的数据窗口是用的最广泛的一种类型,特点:创建...
  • tlammon
  • tlammon
  • 2015年06月17日 17:01
  • 734

PB中用数据窗口实现画图

  • 2011年04月26日 22:06
  • 2KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:OLE在PB数据窗口中的实现
举报原因:
原因补充:

(最多只允许输入30个字)