4.3 文档处理函数
4.3.1 ClientAPI_CreateDocumentLoader函数
声明(来自ClientProcs单元):
Function ClientAPI_CreateDocumentLoader : TObjectHandle;
描述:
ClientAPI_CreateDocumentLoader函数在设计资源管理器内创建一个内部的列表,将通过过程ClientAPI_LoadDocument来管理文档的加载。当您使用完文档时,您必须调用过程ClientApi_DestroyDocumentLoader或ClientApi_DestroyDocumentLoaderEx来销毁此内部列表。
参见其它:
|
ClientAPI_LoadDocument |
ClientApi_DestroyDocumentLoader |
|
ClientApi_DestroyDocumentLoaderEx |
4.3.2 ClientApi_DestroyDocumentLoader过程
声明(来自ClientProcs单元):
Procedure ClientApi_DestroyDocumentLoader(DocumentLoader : TObjectHandle);
描述:
ClientAPI_DestroyDocumentLoader过程销毁一个通过ClientAPI_CreateDocumentLoader过程创建的内部列表。
参见其它:
|
ClientAPI_CreateDocument过程 |
ClientApi_LoadDocument过程 |
|
ClientApi_DestroyDocumentLoaderEx过程 |
4.3.3 ClientApi_DestroyDocumentLoaderEx过程
声明(来自ClientProcs单元):
Procedure ClientApi_DestroyDocumentLoaderEx(DocumentLoader : TObjectHandle; Parameters : PChar);
描述:
ClientAPI_DestroyDocumentLoaderEx过程控制文档的工作情况,Parameter参数是以一个空(Null)终止字符串为结尾,此参数由一个名称和一个值组成,名称组成是“Action =”,其值有两个可能,View或Save来分别控制文档是查看还是保存。
例子:
...
GetMem(P,256);//申请一个内存。
SetState_Parameter(P,’Action’,’Save’);//动作为保存。
ClientAPI_DestroyDocumentLoaderEx(Loaderhandle,P);
FreeMem(P,256);//释放内存。
此代码片段在文档加载对象被销毁前保存文档,参数是一个空字符串结尾的字符串,因而,您需要从如“Action = View”或“Action = Save”来传递一个字符串,使用完参数后,需要释放为参数需分配的内存。
参见其它:
|
ClientAPI_CreateDocument过程 |
ClientApi_LoadDocument过程 |
|
ClientApi_DestroyDocumentLoader过程 |
4.3.4 ClientApi_FindChildDocumentInBinder函数
声明(来自ClientProcs单元):
Function ClientApi_FindChildDocumentInBinder(ADocumentEntity : TObjectHandle; DocName : TString): TObjectHandle;
描述:
ClientApi_FindChildDocumentInBinder过程返回一个名称为Docname参数的文档,ADocumentEntity是包含容器的句柄,此函数作用是在ADocumentEntity句柄所表示的实体中查找名称为Docname的文档。
参见其它:
|
ClientApi_GetDocumentOwnerBinder函数 |
ClientApi_FindBinderFromAnyDataHandle函数 |
4.3.5 ClientApi_FindDocumentByNameInSameFolder函数
声明(来自ClientProcs单元):
Function ClientApi_FindDocumentByNameInSameFolder(ADocumentEntity : TObjectHandle; DocName : TString): TObjectHandle;
描述:
ClientApi_FindDocumentByNameInSameFolder函数返回参考文件所在的相同文件夹中的文档实体的句柄,举个实际的例子,如果您知道一个文档存在于一个特定的文件夹中,且您需要在参考文件所在的相同文件夹内的其它文档的句柄,您需要调用此函数。
两个参数分别表示参考文档的句柄和想要查找的某个文档的名称。
例子:
Var
EntityHandle : TObjectHandle;//参照实体的句柄。
NewHandle: TOBjectHandle;//想要知道某文档的文档句柄。
Entity: TDocumentEntity;//临时文档实体对象。
Name: TString;//想要知道某文档句柄的文档名称。
Begin
EntityHandle :=
ClientAPI_FindEntityByDataHandle(MessageRouter_GetState_CurrentEditorWindow);
//MessageRouter_GetState_CurrentEditorWindow函数返回当前在项层的文档的窗体句柄。当前在项层在文档的窗体句柄。
//ClientApi_FindEntityByDataHandle 函数使用一个编辑器窗体句柄来返回查找返回一个实体的句柄。
If Entityhandle = 0 Then Exit;//如果当前无实体则退出。
Entity := TDocumentEntity.Create(EntityHandle);//创建一个文档实体。
Entity.Querydatabase(eGetState);//用内部服务器数据同步外部服务器数据。
ClientApi_FindDocumentByNameInSameFolder(Entityhandle,Entity.Name);//得到当前实体的文档句柄。
NewHandle := ClientApi_FindDocumentByNameInSameFolder(Entityhandle,'Documents.rep');
//得到文档“Documents.rep”的实体句柄。
ShowInfo(Entity.Name + ' 有 ' + '实体句柄= ' + IntToStr(entityhandle) + '新文档句柄= '+IntTostr(newhandle));
Entity.Free;//释放实体。
End;
如果您有一个叫作“documents.rep”名称的文本文档在设计数据库中,此代码被在实体上激活后,您将得到两个不同的句柄,Entityhandle是当前在设计数据库中激活的实体,newhandle变量是“documents.rep”文档的句柄,现在,如果您在当前激活文档“documents.rep”上运行此代码,那么实体文件和新文档句柄值是相同的,在您已有一个文档的名称和参考文档的实体的句柄情况下,想要知道此文档实体的句柄时特别有用。
4.3.6 ClientApi_FindDocumentInstanceAlreadyOpen函数
声明(来自ClientProcs单元):
Function ClientApi_FindDocumentInstanceAlreadyOpen(ADocumentEntity : TObjectHandle) : TObjectHandle;
描述:
ClientApi_FindDocumentInstanceAlreadyOpen函数查找已经在设计资源管理器中打开的设计文档,此函数检查文档窗体现在是否打开。此函数常在如果您有一个快捷键指向一个特定的文档,且您想要检查快捷键指向的文档是否已打开的情况下使用。然而,它能被使用在来检查一个特定的文档是否已被打开在一个窗体中,如果句柄返回值是零,意味着文档没有被打开。
4.3.7 ClientApi_FindBinderFromAnyDataHandle函数
声明(来自ClientProcs单元):
Function ClientApi_FindBinderFromAnyDataHandle(ADataHandle : TObjectHandle) : TObjectHandle;
描述:
ClientApi_FindBinderFromAnyDataHandle函数使用一个数据句柄(可能是一个设计文档窗体或文档本身等等)来返回容器(binder)的句柄。
例子:
BinderHandle := ClientApi_FindBinderFromAnyDataHandle(DocumentWindowHandle);
ClientApi_RepopulateDocumentEntity(BinderHandle, False);
ClientApi_FindBinderFromAnyDataHandle函数从一个在设计资源管理器中的文档窗体句柄得到其容器的句柄,然后把容器的句柄传递到ClientApi_RepopulateDocumentEntity函数来刷新容器(binder)内容。
4.3.8 ClientApi_FindEntityByStorageName函数
声明(来自ClientProcs单元):
Function ClientApi_FindEntityByStorageName(AAddress: TString; AFilter : SetOfEntityId) : TObjectHandle;
描述:
ClientApi_FindEntityByStorageName函数使用一个实体的抽象地址和实体种类参数返回一个实体的句柄。
例子:
AbsAddress := DocumentEntity.GetAbsoluteAddress;//得到文档抽象地址。
...
EntityHandle := ClientApi_FindEntityByStorageName(AbsAddress, [eDocument]);
//根据抽象地址和文档种类查找实体。
If EntityHandle <> 0 Then //有实体
Begin
ClientApi_OpenDocumentEntity(EntityHandle, False);//打开实体。
ClientApi_SetAsCurrentDocument(EntityHandle);//设置为当前文档。
End;
这代码片段检索一个文档实体的句柄并且打开它,设置它是设计资源管理器中当前激活文档。