信息化 频道

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

例子:

Begin

EntityHandle :=

ClientAPI_FindEntityByDataHandle(MessageRouter_GetState_CurrentEditorWindow);

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

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

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

ClientApi_QueryDocumentEntity(EntityHandle,eGetState,AParentHandle,

AEntityId,AOwnerBinder,AKind,

AName,AEditorKind,ADBAttributes,

ADocumentDBId,FullAddress,AObjectHandle);

//用内部服务器数据同步外部服务器数据。

ShowInfo('Parenthandle = '+ IntToStr(AParenthandle)+ #13 +

'AEntityId = '+ IntToStr(Ord(AEntityId)) + #13 +

'AOwnerBinder = ' + IntToStr(AOwnerBinder)+ #13 +

'Kind = '+ AKind+ #13 +

'Name = '+ AName+ #13 +

'Editor Kind = '+ AEditorKind+ #13 +

'DBAttributes = '+ IntToStr(ADBAttributes)+ #13 +

'Document DB Id = ' + IntToStr(ADocumentDBId)+ #13 +

'full address = '+ FullAddress+ #13 +

'Object handle = '+ IntToStr(AObjectHandle));

End;

//显示实体的参数。

您需要在设计资源管理器中打开一个设计数据库并且运行此代码。如果此文档的编辑器种类是一个“workgroup”,在设计中它是项层的文件夹,对所有文档和文件夹来说,此文件夹是父文件夹,如果编辑器种类是一个文件夹并且EntityId值是2,它意味着此实体是设计本身。

参见其它:

TObjectHandle类型

TQueryMode类型

TEntityId类型

ClientApi_QueryDocumentEntity函数

TEntity类

TDocumentEntity类

  4.3.23 ClientApi_PostNetworkMessage过程

声明(来自ClientProcs单元):

Procedure ClientApi_PostNetworkMessage(Target : TString; MsgID : Word; MsgData : TString);

描述:

ClientApi_PostNetworkMessage过程跨越网络发送一个消息到设计数据库和设计资源管理器应用程序中。

参见其它:

在常量章节的消息部份内容

  4.3.24 ClientApi_RunDocumentPropertiesDialog过程

声明(来自ClientProcs单元):

Procedure ClientApi_RunDocumentPropertiesDialog(ADocumentEntity : TObjectHandle);

描述:

ClientApi_RunDocumentPropertiesDialog过程使用文档实体的句柄来显示此特定设计文档的属性,如文档的类型、文档的位置、字节大小、此文档的被创建、被修改和被访问的日期与时间属性等等。

  4.3.25 ClientApi_RepopulateDocumentEntity过程

声明(来自ClientProcs单元):

Procedure ClientApi_RepopulateDocumentEntity(ADocumentEntity : TObjectHandle; Recursive : TBoolean);

描述:

ClientApi_RepopulateDocumentEntity 过程在封装对象中刷新文档实体的内容,操作依赖于Recursive参数值,如果参数为False,当前实体被刷新,否则实体的封装对象被刷新。这在当文档被增加到一个封装对象后,您需要刷新封装对象来让设计资源管理器知道有新的文档加入的情况下很有用。

例子:

EntityHandle :=

ClientAPI_FindEntityByDataHandle(MessageRouter_GetState_CurrentEditorWindow);

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

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

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

BinderHandle := ClientApi_GetDocumentOwnerBinder(EntityHandle);

//得到当前实体所在的容器。

ClientApi_RepopulateDocumentEntity(BinderHandle,False);

  4.3.26 ClientApi_RegisterEntityIcon函数

声明(来自ClientProcs单元):

Function ClientApi_RegisterEntityIcon(AServerName, AnIconName : TString) : Integer;

描述:

ClientApi_RegisterEntityIcon函数在设计资源管理器的浏览器中分配和显示服务器的图标。在此函数成功地注册您的图标前,您需要服务器的名称和服务器使用的图标名称,当图标被注册后,它被增加到一个客户端的一个内部列表中,设计资源管理器使用此列表来在浏览器或导航器面板中管理图标的表现。

  4.3.27 ClientApi_SendCommandToModule函数

声明(来自ClientProcs单元):

Function ClientApi_SendCommandToModule(...) : TBoolean;

描述:

ClientApi_SendCommandToModule函数运行指定模块中的指定进程,如果成功返回真(True),否则返回假(False)。此函数允许一个服务器来运行其它服务器中的进程。目标窗体句柄为要运行的进程指定了目标文档对象的窗体句柄,如果没有文档被服务器所支持,参数应设置为cProcessWindow_DontCare,如果目标服务器没有启动,此函数将自动地启动目标服务器。

如果服务器模块标识符没有被应用在进程参数中,它默认为“Client”,举例来说,“CreateNewDocument”被此函数认为是“Client:CreateNewDocument”。

使用Parameters参数,进程能返回结果。例如,“Client:RunCommonDialog”进程运行一个对话框并且通过此参数返回结果,当参数被交付到目标服务器模块时,参数大小允许为64K,然而,当进程返回MaxParameterSize参数时,表示调用模块有多少个字节被拷贝返回到Parameters参数中。

参数

类型

描述

Process

TString

指定进程的完整名称,举例来说,“Macro:RunMacro”,此参数大小写不敏感。

Parameters

PChar

指定指向进程参数的内存指针(空null字符终止),此参数大小写不敏感。

MaxParameterSize

Integer

指定为Parameters参数分配的内存大小。

EditorWindow

HWnd

目标文档对象窗体句柄。

  4.3.28 ClientApi_SetAsCurrentDocument函数

声明(来自ClientProcs单元):

Function ClientApi_SetAsCurrentDocument(ADocumentEntity : TObjectHandle) : TObjectHandle;

描述:

ClientApi_SetAsCurrentDocument函数设置一个打开的文档实体作为当前焦点或成为在设计资源管理器中的活动文档。如果一个文档实体没有在一个窗体中被打开,函数返回零值,另外,如果文档实体不是一个文档或设计数据库,函数也返回零值,当您需要来让一个隐藏的文档窗体在其它设计资源管理器窗体的前面时,此函数常被使用。

参见其它:

ClientApi_OpenDocumentEntity函数

  4.3.29 ClientApi_ShowDocument过程

声明(来自ClientProcs单元):

Procedure ClientApi_ShowDocument(ADocumentEntity : TObjectHandle; Show : Boolean);

描述:

ClientApi_ShowDocument过程为您显示您所感兴趣的文档,ADocumentEntity是文档的句柄,Show参数控制文件是否被显示。

例子:

ClientApi_ShowDocument(EntityHandleOfADocument,True);

此代码片段使用ClientAPI_ShowDocument函数强制特定的文档来被显示。

0
相关文章