如何在域用户的桌面上创建一个快捷方式
和普通用户的快捷方式创建方法相同。
创建方法有很多,具体操作步骤如下:
一、复制粘贴快捷方式;
右击需要用来创建快捷方式的文件选择复制;
在桌面上粘贴快捷方式。
快捷方式即可在桌面上生成。
二、发送桌面快捷方式;
右击需要用来创建快捷方式的文件选择发送;
继续选择桌面快捷方式;
快捷方式即可在桌面上生成。
三、创建快捷方式
右击桌面选择新建;
点击快捷方式;
输入源文件的路径地址;
按确定后快捷方式即可在桌面上生成。
很多时候Access的内容并不是用MS Access软件直接添加的,而是使用其他应用程序通过SQL语言来对Access进行存取。这样存取的内容中的OLE对象(长二进制数据)直接通过MS Access软件是无法读取的(而其他类型的字段可以查看到)。当你通过MS Access软件读取OLE对象时会出现你所描述的错误,这并不是因为你的服务没有开启。如果你要读取这类型的数据,需要使用原上传的应用程序。
OLE 控件(现在称为ActiveX 控件)OLE(发音为“oh—Lay”)的全称是:Object Linking and Embedding(对象链接与嵌入)。可以在 Windows 应用程序的对话框中使用,或在万维网的 HTML 页中使用。
即为对象的链接与嵌入
也可以指把提供嵌入及链接对象的应用程序,称为服务器应用程序(Servers),在VB中也称为"对象应用程序"。
把接受嵌入及链接对象的应用程序,称为客户(Clients)应用程序,在VB中也称为"控制应用程序"。
名词解释:
VB:
Visual Basic是一种由微软公司开发的包含协助开发环境的事件驱动编程语言。从任何标准来说,VB都是世界上使用人数最多的语言——不仅是盛赞VB的开发者还是抱怨VB的开发者的数量。它源自于BASIC编程语言。VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件。程序员可以轻松的使用VB提供的组件快速建立一个应用程序。
语言特性
VB 的中心思想就是要便于程序员使用,无论是新手或者专家。VB使用了可以简单建立应用程序的 GUI 系统,但是又可以开发相当复杂的程序。VB 的程序是一种基于窗体的可视化组件安排的联合,并且增加代码来指定组件的属性和方法。因为默认的属性和方法已经有一部分定义在了组件内,所以程序员不用写多少代码就可以完成一个简单的程序。过去的版本里面 VB 程序的性能问题一直被放在了桌面上,但是随着计算机速度的飞速增加,关于性能的争论已经越来越少。
窗体控件的增加和改变可以用拖放技术实现。一个排列满控件的工具箱用来显示可用控件(比如文本框或者按钮)。每个控件都有自己的属性和事件。默认的属性值会在控件创建的时候提供,但是程序员也可以进行更改。很多的属性值可以在运行时候随着用户的动作和修改进行改动,这样就形成了一个动态的程序。举个例子来说:窗体的大小改变事件中加入了可以改变控件位置的代码,在运行时候每当用户更改窗口大小,控件也会随之改变位置。在文本框中的文字改变事件中加入相应的代码,程序就能够在文字输入的时候自动翻译或者阻止某些字符的输入。
VB 的程序可以包含一个或多个窗体,或者是一个主窗体和多个子窗体,类似于操作系统的样子。有很少功能的对话框窗口(比如没有最大化和最小化按钮的窗体)可以用来提供弹出功能。
VB 的组件既可以拥有用户界面,也可以没有。这样一来服务器端程序就可以处理增加的模块。
VB 使用参数计算的方法来进行垃圾收集,这个方法中包含有大量的对象,提供基本的面向对象支持。因为越来越多组件的出现,程序员可以选用自己需要的扩展库。和有些语言不一样,VB 对大小写不敏感,但是能自动转换关键词到标准的大小写状态,以及强制使得符号表入口的实体的变量名称遵循书写规则。默认情况下字符串的比较是对大小写敏感的,但是可以关闭这个功能。
VB 使得大量的外界控件有了自己的生存空间。大量的第三方控件针对 VB 提供。VB 也提供了建立、使用和重用这些控件的方法,但是由于语言问题,从一个应用程序创建另外一个并不简单。
BLOB字段与文本
Delphi BLOB字段中增加了大型文本的处理能力 可以在TBlobField和Strings中自由地交换数据
procedure TBlobField LoadFromStrings(Strings: TStrings)
var
BlobStream: TBlobStream;
begin
BlobStream := TBlobStream Create(Self bmWrite)
try
Strings SaveToStream(BlobStream)
finally
BlobStream Free;
end;
end;
procedure TBlobField SaveToStrings(Strings: TStrings)
var
BlobStream: TBlobStream;
begin
BlobStream := TBlobStream Create(Self bmRead)
try
Strings LoadFromStream(BlobStream)
finally
BlobStream Free;
end;
end;
BLOB字段与Stream对象
因为Delphi中 BLOB字段是通过BLOB流来访问的 所以可以很容易地在BLOB字段和Stream对象之间传递数据 为此 TBlobField对象提供了LoadFromStream和SaveToStream方法
procedure TBlobField LoadFromStream(Stream: TStream)
var
BlobStream: TBlobStream;
begin
BlobStream := TBlobStream Create(Self bmWrite)
try
BlobStream CopyFrom(Stream )
finally
BlobStream Free;
end;
end;
procedure TBlobField SaveToStream(Stream: TStream)
var
BlobStream: TBlobStream;
begin
BlobStream := TBlobStream Create(Self bmRead)
try
Stream CopyFrom(BlobStream )
finally
BlobStream Free;
end;
end;
存取嵌入在OleContainer对象中的OLE服务器的数据
对象链接和嵌入(Object Linking and Embedding 简称OLE) 是一组服务功能 它提供了一种用来源于不同应用程序的信息创建复合文档的强有力方法
通过把图像 图形 表格 声音 注解 文件和其它表示手段描述成对象 用它能在不同软件厂家提供的应用程序中更为容易地交换合成和处理数据它是应用程序的集成更为容易 OLE 支持直观编辑 用户不需切换到不同窗口就能在文档中直接对对象进行操作 改进了操作环境 用户不用再关注应用程序和操作环境 只需关注于使用对象技术的数据和文件 便能完成全部工作
OLE已成为操作系统功能上的一大标准 各大软商纷纷在开发工具中支持OLE 规范 Delphi 提供了OleContainer对象支持OLE窗户应用程序的开发
尽管通过OLE可以用来源于不同应用程序的信息创建复合文档 充分体现以任务 以文档为中心的思想 但是很难分解来自其它应用程序中的嵌入数据 以进行特殊的处理
例如 一套多媒体电子文档管理系统 系统需要数据库管理功能文档编辑功能 全文检索功能等 在文档编辑功能的实现上 如果能利用中文Word 或写字板之类的强大的编辑排版功能 就可以省却重新开发一个文档编辑的费用 使用具有直观编辑的OLE复合文档嵌入Word的DOC数据或RTF数据当然是最佳的选择 但问题在于全文检索系统要求能直接在文档中搜索关键字 因此要求将文档数据从OLE嵌入数据或文档中的本地数据中分离出来
Delphi 的OleContainer部件支持存储OLE对象数据 OLE对象数据包括两部分 OLE类描述信息和OLE服务器嵌入数据 一般说来 OLE服务器嵌入数据是以服务器支持的数据格式存储的 比方说 中文Word 的嵌入数据的格式就是Word 文档的格式 因此 要将文档数据从OLE 嵌入式文档中分离出来就是要访问第二部分数据
我们分析了Delphi 的OleContainer对象存取复合文档的程序 得到分离数据的方法
让我们来看一段OleContainer对象存储数据的程序
procedure TOleContainer SaveToStream(Stream: TStream)
var
DataHandle: HGlobal;
Buffer: Pointer;
Header: TStreamHeader;
R: TRect;
……
begin
……
try
……
if FOldStreamFormat then
begin
R := BoundsRect;
Header PartRect Left := R Left;
Header PartRect Top := R Top;
Header PartRect Right := R Right;
Header PartRect Bottom := R Bottom;
end else
begin
Header Signature := StreamSignature;
Header DrawAspect := FDrawAspect;
end;
Header DataSize := GlobalSize(DataHandle)
Stream WriteBuffer(Header SizeOf(Header))
Buffer := GlobalLock(DataHandle)
try
Stream WriteBuffer(Buffer^ Header DataSize)
finally
GlobalUnlock(DataHandle)
end;
finally
ReleaseObject(TempStorage)
ReleaseObject(TempLockBytes)
end;
end;
程序中 OleContainer对象执行了两次往流中写数据的操作
Stream WriteBuffer(Header Size(Header))
Stream WriteBuffer(Buffer^ Header DataSize)
前一语句是写入OLE类描述信息 后一句语句是写入OLE服务器的嵌入数据 Header是TStreamHeader记录类型的变量 TStreamHeader记录的定义如下
TStreamHeader = record
case Integer of
: ( { 新版OLE对象 }
Signature: Integer;
DrawAspect: Integer;
DataSize: Integer)
: ( { 旧版OLE对象 }
PartRect: TSmallRect)
end;
因此读OLE服务器嵌入数据时 要跳过文件头的TStreamHeader记录 下面就是如何分离OLE服务器嵌入数据的程序
var
Stream : TMemoryStream;
FileStream : TFileStream;
begin
Stream := TMemoryStream Create;
FileStream := TFileStream Create( TEST DOC fmCreate) ;
with OleContainer do
if (State <> osEmpty) then
SaveToStream(Stream)
Stream Seek(Sizeof(TStreamHeader) )
FileStream CopyFrom(Stream Stream Size SizeOf(TStreamHeader))
Stream Free;
FileStream Free;
end;
OleContainer 包含的服务器对象是中文Word 程序中将分离出的数据存储在磁盘文件 TEST DOC 上 如果希望存储在不同的媒介上 可以使用相应的Stream对象 分离的方法类似 但是 这种方法并非对所有的OLE服务器数据都适用 如Windows 附件中的写字板(WordPad)就不行
返回目录 DELPHI基础教程
编辑推荐
Java程序设计培训视频教程
J EE高级框架实战培训视频教程
Visual C++音频/视频技术开发与实战
Oracle索引技术
ORACLE G数据库开发优化指南
Java程序性能优化 让你的Java程序更快 更稳定
C嵌入式编程设计模式
Android游戏开发实践指南
lishixinzhi/Article/program/Delphi/201311/25091
点‘开始’--‘运行’--输入‘regsvr32exe’
当使用 Regsvr32exe 时,它会尝试加载该组件并调用它的 DLLSelfRegister 函数。如果此尝试成功,Regsvr32exe 会显示一个指示成功的对话框。如果此尝试失败,Regsvr32exe 会返回一条错误消息,其中可能会包括一个 Win32 错误代码。
以下列表介绍了 RegSvr32 错误消息和可能的原因。
Unrecognized flag:/invalid_flag
键入的标志或开关组合无效(请参阅本文中的“Regsvr32exe 的用法”一节)。
No DLL name specified
未包括 dll 文件名(请参阅本文中的“Regsvr32exe 的用法”一节)。
Dllname was loaded, but the DllRegisterServer or DllUnregisterServer entry point was not found
Dllname不是dll 或ocx 文件。例如,键入 regsvr32 wjviewexe 就会生成该错误消息。
例如,键入regsvr32 icwdialdll 后就会返回该错误消息,因为 Icwdialdll 文件不能自行注册。如果您怀疑内存中有损坏的Dllname 版本,请尝试重新启动计算机,或重新提取该文件的原始版本。如果您运行的是 Windows NT,可能需要使用 Microsoft Windows NT Server 40 资源工具包 中的 Kill 或 Pview 工具。有关其他信息,请单击以查看以下 Microsoft 知识库文章:197155 如何终止孤立进程OleInitialize failed (or OleUninitialize failed)
Regsvr32 必须先初始化 COM 库,然后才能调用所需的 COM 库函数并在关闭时撤消对该库的初始化。
处理blob类型数据
对于大二进制数据 在PB Script中是用blob数据类型表示并加以处理 标准SQL语句中的select insert和update语句无法直接查询blob类型的数据 在PB中操作blob类型的数据只能用专用的语句 从数据库中查询blob类型的数据的命令是
selectblob restofselectstatement {using transactionobject}
更新数据库中blob类型数据的格式是
updateblob tablename set blobcolumn = blobvarible restofupatestatement {using transctionobject}
如连接的数据库是sybase或者Sql 则selectblob和updateblob语句要求数据库的自动提交方式为true 所以在在每次调用selectblob和updateblob语句以前必须用命令 Sqlca automit=true 把数据库的自动提交方式设置为true 在updateblob语句的结束后 再用命令Sqlca automit = false 把自动提交方式设置为false 索数据的参数(如flag) 然后在可修改列的Protect后的框中输入(user_name是该DataWindow中的一列 代表输入者的名称)
数据窗口的blob列
数据窗口blob列的功能
在PB 的datawindow画板中DBOLE控件允许用户利用这个控件浏览和操作数据库中的大二进制数据 即通过DBOLE控件可以作如下操作
往数据库中存储大二进制数据 如 excel工作表 word文档 视频文件 文件等各种格式的文件
从数据库中检索数据到datawindow对象
使用OLE服务器程序察看修改数据
将修改后的数据保存回数据库
在数据窗口中添加blob列的的步骤
)选择具有二进制字段的数据表作为数据源建立一新的数据窗口(该窗口可以至少需要包含非数据库表的标识列)
)选择insert control OLE database blob 菜单 在数据窗口的detail节中要插入blob列的位置单击鼠标 这时将显示如图 所示的对话框
下面解释这些属性的具体含义
)client class 客户类名 默认为datawindow
)client name 客户名 默认为untitled
)table: 选择含有blob列的数据库表 所选表的字段将出现在右侧的large binary/text column列表框中
)large binary/text column 选择一个blob类型的字段列
)key clause 检索和更新blob数据的关键字表达式其中使用带冒号前缀的变量指出是数据窗口对象的列 如 表达式 id=:id id是数据库表中的列 变量指出数据窗口对象的列
)filetemplate 如果需要OLE应用服务器每次打开相同的文件 则在filetemplate框中输入文件名
)OLE class 如果不需要OLE应用服务器每次打开相同的文件 则在OLE class框中选择一个OLE类 如Pbrush
)Client name expression 显示在OLE服务器应用程序窗口标题的文字 可以输入为 对应记录的id号是 +id
单击ok按钮关闭对话框 将dbole列添加到适当的位置 保存数据窗口
lishixinzhi/Article/program/SQL/201311/16229
前言
在数据库的开发过程中 经常需要在数据库中存储一些备注信息 而这些备注信息的内容一般较大 格式多样 如有可能是语音文件 视频文件 文件 文本文件等 怎样在PB中实现这些格式不同的备注文件的存取及预览 一直是PB开发人员比较关心的一个问题 本文系统的介绍了三种存取备注二进制信息的方法
对备注二进制信息的存储可以采用以下三种方式
方法一 文件保存在固定的路径下 数据库中存取文件路径和名称
方法二 数据库中用blob类型或者varbinary类型字段存储备注文件
方法三 在本地用OLE存储结构存储备注文件
OLE的基本概念
OLE是Object Linking Embedding(对象链结与嵌入)的缩写 它可以使windows应用程序共享数据和程序
OLE控件
在PB中OLE控件是一个OLE对象的包容器 可以使用服务器应用程序提供的功能和命令来编辑对象 也可以使用自动化OLE交互 在程序中激活对象和向服务器应用程序发送命令 在PB 的window画板中的OLE控件允许用户从多个应用程序嵌入和链结组件
建立和设置OLE控件
从window画板中选择OLE控件插入window
当建立一个OLE控件并且插入一个对象时 PB将激活服务器应用程序以允许对对象进行编辑和修改 在使OLE中的对象称为非活动状态后 可以使用控件属性选项卡来设置控件的属性
激活修改window画板中的OLE对象
在OLE控件的弹出菜单中选择open可以激活画板中OLE对象
使用服务器应用程序修改OLE对象
结束修改 使对象恢复为非活动状态 只要单击服务器应用对象之外的任何区域即可 也可以直接关闭服务器应用程序的窗口
嵌入和链结OLE控件
可以将OLE对象嵌入或者链结到自己的应用程序中 嵌入对象的数据放在应用程序中 在开发过程中这些数据放在应用程序的PBl库中 当生成应用后 这些数据将存放在exe或PBd文件中 虽然在程序的运行过程中可以修改 但修改的数据不会保存 链结对象的数据存放在PB应用程序以外 当链结一个对象时 在PB应用程序中不存放数据文件 而是存放引用数据的指针 使用链结的数据 对数据的管理和保存都由服务器应用程序负责 这样可以用服务器应用程序修改处理数据 处理后的数据可以保存回原文件中 链结方式应用于需要多个应用程序共享的数据文件 任何一个应用程序修改了数据文件 都将影响到所有链结该文件的应用程序
OLE控件的激活方式
OLE控件的激活方式有offsite和in place两种激活方式 offsite激活方式是指在PB应用程序的界面以外单独打开OLE对象 in place激活方式是指PB应用程序的界面的原位置打开OLE对象 在数据窗口中的dbOLE默认的是offsite激活方式 而window中的OLE默认的激活方式是in place
在PB应用程序中可以用命令
OLE_control active(offsite) 或者OLE_control active(in place)设置OLE对象的以何种方式打开
设置和插入OLE对象
在程序运行时可以用函数
OLE_control insertfile(soucefile) 插入对象
OLE_control objectdata = blobvar 设置对象
OLE存储
OLE存储(OLEstorage)的概念
OLE存储(OLEstorage)是OLE数据的一个仓库 存储就象磁盘上的目录结构 它可以是一个OLE对象 也可以包含在OLE对象中 每个对象都包含在OLE存储或者存储内的子存储内 保存在OLE存储中数据称作OLE流(OLE stream) OLE流同OLE对象的关系就象文件同目录的关系 含有OLE对象的存储或子存储可以看做是属于特殊服务器的信息 在该层次之下的各部分都可以被相应的服务器程序操作 OLE存储对象是类用户对象 可以说明相应类型的变量 建立与之相应的实例和打开存储等 在使用完存储后需要关闭存储 释放分配的内存
OLE存储的打开和保存
OLE存储可以用open函数打开 open函数的格式为
Olecontrol Open(OLEsourcefile)
此函数在OLEsourcefile不存在时 自动创建该文件 所以创建OLE文件也用该函数 OLE存储可以用save函数保存 save函数的格式为
OLEcontrol save() // 保存OLE控件
lishixinzhi/Article/program/SQL/201311/16230
0条评论