信息化 频道

<连载>Protel二次开发从入门到精通

  4.1.4 ClientApi_GetNextEntity函数

声明(来自ClientProcs单元):

Function ClientApi_GetNextEntity(AnIterator : TObjectHandle) : TObjectHandle;

描述:

ClientApi_GetNextEntity函数通过给定的迭代程序句柄返回下一个查找到的对象句柄。

参见其它:

TObjectHandle类型

ClientApi_CreateIterator函数

ClientApi_GetFirstObject函数

ClientApi_DestroyIterator函数

  4.2 实体处理函数
  4.2.1 ClientApi_AddEntity过程

声明(来自ClientProcs单元):

Procedure ClientApi_AddEntity(AParent, AEntity : TObjectHandle; AnIconIndex : Integer);

描述:

ClientApi_AddEntity过程通过父(parent)句柄增加一个实体到设计数据库中,并显示在设计资源管理器的导航器面板中。AnIconIndex参数表示此实体对象图标的内部索引,设计资源管理器有一个按图标索引分类的图标列表。

例子:

Var

BinderHandle : TObjectHandle;//当前实体所在的容器的句柄。

EntityHandle : TObjectHandle;//当前实体句柄。

DesignEntity : TDocumentEntity;//程序临时所用文档实体。

ParentEntity : TObjectHandle;//父实体。

EntityId: TEntityID;//实体文档的类型。

Begin

EntityHandle :=

ClientAPI_FindEntityByDataHandle(MessageRouter_GetState_CurrentEditorWindow);

//MessageRouter_GetState_CurrentEditorWindow函数返回当前在项层的文档的窗体句柄。当前在项层在文档的窗体句柄。

//ClientApi_FindEntityByDataHandle 函数使用一个编辑器窗体句柄来返回查找返回一个实体的句柄。

If Entityhandle = 0 Then Exit;//如果当前无实体则退出。

Binderhandle := ClientApi_GetDocumentOwnerBinder(EntityHandle);

//ClientApi_GetDocumentOwnerBinder函数获得在其内部存有文档的封装对象的句柄,一个封装对象表现为包含实体的容器,一个实体可为一个设计文档或文件来。

ParentEntity := BinderHandle;//和到当前实体所在容器的句柄,赋予ParentEntity句柄。

EntityId:= eDocument;//实体的类型是文档型eDocument。

EntityHandle := ClientApi_CreateEntity(EntityId);//建立一个文档型实体。

DesignEntity := TDocumentEntity.Create(EntityHandle);//建立实体对象。

DesignEntity.Querydatabase(eGetState);//用内部服务器同步外部服务器数据,即对新建的文档对象初始化。

DesignEntity.EditorKind := 'Text';//文档为文本文件。

DesignEntity.Name := 'MyText';//名称名称为MyText。

DesignEntity.Querydatabase(eSetState);//用外部服务器新建的外部文档来同步内部服务器。

ClientApi_AddEntity(ParentEntity,EntityHandle,-1);//把新建的文档增加到设计数据库中,加到当前文档所在的容器中。

DesignEntity.Free;//释放文档

ClientApi_RepopulateDocumentEntity(EntityHandle,False);//刷新当前文档所在的容器。

End;

当您使用此代码例子时,实体被放置的位置与您在设计数据库中打开的是哪一层文档相关,实体将会被放置在当前实体所在的容器对象中,例如,如果文档文件夹被打开,那么此实体将被连同其它实体一起增加到文档文件夹中。

在您能传递要增加的实体对象的句柄给ClientAPI_AddEntity过程前,您需要创建一个实体对象并且分配编辑器种类和名称,如果您不想要指定一个图标,传递-1值,设计资源管理器将分配一个默认的图标。如果您想要使用您的服务器的图标,您需要调用能返回您的图标索引的函数ClientApi_RegisterEntityIcon。

当新的实体被加入后,ClientApi_RepopulateDocumentEntity被调用来刷新设计资源管理器的内容。

参见其它:

ClientApi_RegisterEntityIcon函数

ClientApi_Create 过程

ClientApi_DestroyEntity过程

  4.2.2 ClientApi_CreateEntity函数

声明(来自ClientProcs单元):

Function ClientApi_CreateEntity(AEntityID : TEntityId) : TObjectHandle;

描述:

ClientApi_AddEntity函数创建一个AEntityID参数所指定类型的实体对象,并返回实体对象的句柄。这里有两个实体类型,您可以创建并使用在设计资源管理器中,如果一个使用eNoEntity或eItem参数,那么一个抽象的实体被创建,如果使用一个eDocument参数,那么文档对象被创建。如果AEntityID参数是此三个值以外的其它值,ClientAPI_AddEntity将返回一个空值(nil)。

参见其它:

ClientApi_AddEntity过程

ClientApi_DestroyEntity过程

  4.2.3 ClientApi_DestroyEntity过程

声明(来自ClientProcs单元):

Procedure ClientApi_DestroyEntity(AEntityHandle : TObjectHandle);

描述:

ClientApi_DestroyEntity过程销毁实体对象。

参见其它:

ClientApi_CreateEntity过程

ClientApi_AddEntity过程

  4.2.4 ClientApi_QueryEntity过程

声明(来自ClientProcs单元):

Procedure ClientApi_QueryEntity(...);

描述:

ClientApi_QueryEntity过程依赖于查询模式(eGetState或eSetState)为实体返回或设置值,参见下表的过程的参数。当eGetState参数被传入,数据集被传出客户端到您的服务器中。当eSetState参数被传入,数据集从您的服务器被传入到客户端中。结果在您的服务器抽取了客户端服务器数据并修改后情况下,使您的服务器和客户端之间的数据完整性得到了保证,因而AModeQuery参数对确保从客户端到您的服务器的数据集同步得到了保证。

参数

类型

描述

AnEntityHandle

TObjectHandle

表示当前实体。

AModeQuery

TQueryMode

表示查询模式,对一个实体要么是eGetState取值或eSetState设置值。

AParentHandle

TObjecthandle

表示一个实体的上一层实体句柄。

AnEntityId

TEntityId

表示实体类型。

AOwnerDesign

TObjectHandle

表示到一个binder的句柄(是一个包含实体的容器)。

AKind

TString

表示编辑器种类。

AName

TString

表示实体名称。

AObjectHandle

TObjectHandle

表示窗体句柄。

参见其它:

TObjectHandle,TQueryMode和TEntityId类型

TEntity和TDocumentEntity类

0
相关文章