转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件使用 >> 常用软件 >> 正文
利用OLE开发多媒体前端程序         

利用OLE开发多媒体前端程序

作者:闵涛 文章来源:闵涛的学习笔记 点击数:831 更新时间:2009/4/24 21:44:53

  客户端/服务器(C/S)模式的广泛应用、多媒体技术的兴起,带动了以C/S模式为基础的多媒体前端数据库程序的研究和应用,为满足实际需要,比较好的方法仍然是利用现有的关系型数据库系统与多媒体技术的有机结合。PowerBuilder(以下简称PB)是全球最有代表性的数据库前端开发工具,在C/S模式的开发中占有40%的份额,但它不象Delphi、VB等开发工具具有开发多媒体的控件,那我们怎样用PB来开发多媒体前端程序,把服务器上的多媒体信息反映到客户端上来;数据库中多媒体信息的存放采用什么样的形式为最好?流行的多媒体做法是将这些多媒体信息作为二进制代码进行入库中的各个字段中,但这样将导致基本库庞大。如果我们独立存放具体数据,使用指针来和库连接,那么服务器上的文件目录指针如何反映到客户端来。基于以上问题因此我们考虑,在基本库中只存储多媒体信息文件的路经(指针),对于多媒体文件的播放我们考虑采用OLE技术或者WINDOWS的API(Application Program Interface应用程序接口)技术;对于服务器上的多媒体信息文件的路经(指针)则使用统一的路经,即用固定的路径加上局域网中服务器的识别标志来存取多媒体资源文件。如:\\nt40\jpg\dz1.jpg,其中nt40为服务器的识别标志,整个意思是指服务器中的jpg目 录下的dz1.jpg文件,指针方式存储既方便系统调入、连接资源文件,也便于用户对多媒体数据的及时更新,我们这里的例子以OLE为例。

  OLE简介

  应用程序间共享数据的能力是Windows操作系统的重要特征之一。Windows的早期版本使用剪贴板来传送数据,之后出现了动态数据交换(DDE),这样不仅可以交换数据,甚至可以传送命令,但是从某种意义上讲,DDE是一种奇异的、不平衡的交换方法,而且十分复杂。1993年初,微软公司推出了OLE 2.0,第一次引入了自动OLE概念,通过使用自动OLE,应用程序之间不仅可以传送 数据,还可以对其它应用程序所提供的连接与嵌入对象进行远程访问和操作,因而可以把支持自动OLE的若干彼此独立的应用软件集成在一起,取长补短协同工作,使软件开发的效率和质量能得到大幅度的提高,为应用程序间的集成与交互提供了迄今为止最为先进的手段。

  示例分析

  A、基本设计思路

  以关键码去检索一个数据库,如果它存在,就把这条记录显示出来,你可以修改这条记录的各个字段,如果双击多媒体信息字段,则会把多媒体信息显示出来,由于多媒体信息的不同,OLE会在客户端中找到不同的程序来显示它;如果不存在,就插入一条新记录,你可以输入一条新记录,如果双击多媒体信息字段,就会打开一个文件选择器,你可以通过网上邻居而选择服务器上的文件。当然修改、删除、插入一条记录都需保存。

  B、数据库的构成

  读者基本情况库(Dzk):编码(record)数字型字段、姓名(name)字符型字段、性别(sex)字符型字段、地址(address)字符型字段、工作单位(work)字符型字段、电话(telephone)字符型字段、邮编(postcode)字符型字段、年龄(age)数字型字段,相片(photo)字符型字段,录像(video)字符型字段,使用编码字段作为关键字段。相片与录像中存放相应的文件名字,在程序运行时再加上它相应的目录。

  C、程序的设计

  1、数据窗口的控件构成

  为了完成上面所提的功能,我们这里设一个数据窗口控件(DataWindow),三个命令按钮(CommandButton),一个单行编辑框控件(SingleLineEdit),一个静态文本框(StaticText),一个OLE控件。

  2、各控件的属性值

  整个窗口的name属性为W—main;

  三个命令按钮的text为“删除”,“保存”,“退出” ,name属性分别为cb—1、cb—2、cb—3; 数据窗口的name 属性为dw—1,其中datawindow object name属性填入d—1,d—1是一个数据窗(datawindow),在生成数据窗时我们选择新建一个数据窗,其数据源(datasource)为sql select,显示风格(presentation style)为freeform,选取的表为dzk,选取全部字段。

  3、静态文本框的name属性为st—1,其中的属性为 ″请输入关键码″。

  4、放一个OLE控件于窗口中,在选择OLE的Object Type时可以选择任一个,我们通过程序中的文件名的后缀来确定启用哪一个具有OLE功能的WINDOWS程序。

  D、各控件编程

  1、应用的SCRIPT编程

  //通过ODBC与数据库相连在这句话前面加上//sqlca.DBMS=ProfileString(startupfile,″database″,″dbms″,″″)

  sqlca.dbms = ″ODBC″
 sqlca.dbparm = ″Connectstring=′DSN=lpj;uid=guest;PWD=guest′ ″
  connect;
  open(w—main)//打开w—main窗口

  2、 sle—1的losefocus事件

  string ls—a
  ls—a=trim(sle—1.text)
  if retrieve(dw—1,ls—a)<>1 then
   gi—b=0

  //这里的gi—b为一个全局变量,如果没有检索到就让它为0,并传到dw—1的doubleclicked事件中去。
  else
  //如果检索到就让gi—b为1,并插入一条新记录。

   gi—b=1
  if ls—a<>″″ then
   insertrow(dw—1,0)
   setitem(dw—1,1,1,ls—a)
  end if
  end if

  3、dw—1窗口的 doubleclicked事件。

  string a,c //这里指如果双击的行为是第九行,也即相片行。
  if dw—1.getcolumn()=9 then //如果不是新记录,就把这个文件名与OLE连接起来。
  if gi—b=1 then
  if ole—1.insertfile(″\\nt40″+dw—1.getitemstring(1,″photo″))<>0 then
  messagebox(″错误″,″打开文件错误″)
  else
  ole—1.activate(inplace!)
  end if
  else

  //如果是新记录,会打开一个文件选择器,可以通过网上邻居而选择服务器上的文件文件格式为以jpg格式结尾的图形文件。

  getfileopenname(″selsect file to open″,a,c,″jpg文件(*.jpg),*.jpg″)

  //如果取的文件是服务器上就把它插入到相应的字段中去

  if c<>″″ and asc(c)=68 then
   dw—1.setitem(1,9,mid(a,7))
  else
   messagebox(″错误″,″您没有选择服务器上的文件″)
  end if
  end if
  end if
  //这里指如果双击的行为第十行,也即录像行。
  if dw—1.getcolumn()=10 then //如果不是新记录,就把这个文件名与OLE连接起来。
 if gi—b=1 then
  if ole—1.insertfile(″\\nt40″+dw—1.getitemstring(1,″video″))<>0 then
  messagebox(″错误″,″打开文件错误″)
  else
  ole—1.activate(inplace!)
  end if
  else

  //如果是新记录,会打开一个文件选择器,可以通过网上邻居而选择服务器上的文件文件格式为以avi格式结尾的图形文件。

  getfileopenname(″selsect file to open″,a,c,″avi文件(*.avi),*.avi″)
  //如果取的文件是服务器上就把它插入到相应的字段中去
  if c<>″″ and asc(c)=68 then
   dw—1.setitem(1,10,mid(a,7))
  else
   messagebox(″错误″,″您没有选择服务器上的文件″)
  end if
  end if
  end if

  PowerBuilder作为4GL开发环境,具有强大的功能。其主要特点在于:C/S的工作模式、可视化的编程方式和ODBC的数据库接口。此外,其开发思维方式、效率、程序使用维护方式等均非常出色。尤其在4.0及以后版本中,函数功能、OLE技术、GUI界面功能等得到了更大的改进,使用户开发更加迅速、方便,开发出的软件更具精美的风格。除了我们上面介绍的使用OLE开发多媒体数据库前端系统以外,我们还可以利用Windows的应用程序接口(API)来直接操纵Windows环境,从而利用Windows Api的函数,如播放wav文件的函数sndplaysounda()、播放avi文件的函数mcisendstringa()等来实现多媒体数据库前端的开发。


[办公软件]在sybase中插入图片、PDF、文本文件  [办公软件]安装Sybase ASE
[办公软件]linux指令大全(完整篇)  [办公软件]Linux新手入门常用命令大全
[办公软件]在RedHat Linux 9里安装gaim0.80  [办公软件]浅谈Linux 下Java 1.5 汉字方块问题解决方法
[办公软件]Linux程序员必读:中文化与GB18030标准  [办公软件]linux指令大全
[办公软件]制作Linux启动盘的四种方法  [办公软件]Linux文件系统的反删除方法
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · 办公软件  · 系统软件
    · 常用软件  · 聊天工具
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台