CBA

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

2019-09-10 17:13:57来源:励志吧0次阅读

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

查看本文来源

小孩流鼻血是什么原因
小孩中暑的症状
小孩突然流鼻血是什么原因
工作常备要带些什么药
分享到: