信息化 频道

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

例子:

请参见\SAMPLES\NO6\API\Client\PerformBackupSaveForDocumentEntity代码。

{....................................................................................}

Procedure Command_PerformBackupSaveForDocumentEntity(Window : TServerWindow; Parameters : PChar);

var

EntityHandle : TObjectHandle;

Begin

EntityHandle := ClientAPI_FindEntityByDataHandle(MessageRouter_GetState_CurrentEditorWindow);

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

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

If MessageRouter_GetState_WindowKind(SchAPI_GetCurrentEditorWindow) <> 'Text' Then

begin

Showinfo('当前文件不是文本文件');

Exit;

end

else

showinfo('当前文件是文本文件,输出文件在当前DLL服务器所在的文件夹下,名称名称为File.Txt');

//如果当前文档实体的类型不是文本则退出。

ClientApi_PerformBackupSaveForDocumentEntity(EntityHandle,'File.txt');//保存文件。

End;

{....................................................................................}

如果您有一个文本文档打开在设计资源管理器中,在此文档上运行此代码例子,此文本文档的内容将被保持在文本文件中。

  4.3.20 ClientApi_PerformLoadForDocumentEntity过程

声明(来自ClientProcs单元):

Procedure ClientApi_PerformLoadForDocumentEntity(ADocumentEntity : TObjectHandle);

描述:

ClientApi_PerformLoadForDocumentEntity过程打开一个适当的编辑器窗体并且从一个设计数据库中加载一个文档的内容。

例子:

...

ClientApi_PerformLoadForDocumentEntity(TextEntity.Handle);

ClientApi_SetAsCurrentDocument(TextEntity.Handle);

...

此代码片段打开一个文本编辑器窗体并且加载一个文本文档内容到此文本窗体中,再设置成为当前文档。

参见其它:

ClientApi_PerformSaveForDocumentEntity过程

  4.3.21 ClientApi_PerformSaveForDocumentEntity过程

声明(来自ClientProcs单元):

Procedure ClientApi_PerformSaveForDocumentEntity(ADocumentEntity : TObjectHandle);

描述:

ClientApi_PerformSaveForDocumentEntity过程使用文档实体的句柄作为参数来保存设计资源管理器的一个文档实体。

例子:

hModule := MessageRouter_Modulehandle(‘Sch’);

//MessageRouter_ModuleHandle函数返回指定名称模块的句柄,模块名称是Sch表示返回原理图编辑器模块句柄。

IfMessageRouter_SendGetStateDocumentHasChanged(hModule,Entity.Objecthandle) Then

ClientApi_PerformSaveForDocumentEntity(Entity.Handle)

//MessageRouter_SendGetStateDocumentHasChanged判断文档对象Entity是否已被修改。

此代码片段示范只要一个文档被修改(例如被用户改变了内容),那么函数ClientApi_PerformSaveForDocumentEntity保存此新文档。hModule变量表示服务器模块的句柄。

参见其它:

ClientApi_PerformLoadForDocumentEntity过程

  4.3.22 ClientApi_QueryDocumentEntity过程

声明(来自ClientProcs单元):

Procedure ClientApi_QueryDocumentEntity(...);

描述:

ClientApi_QueryDocumentEntity过程依赖于查询模式(eGetState或eSetState)来设置或返回一个实体的值。当eGetState参数使用时,数据被从客户端内部服务器中传送到您的服务器中。当eSetState参数被使用时,您的服务器的数据被传送到客户端内部服务器中,在您的服务器从内部服务器数据库中提取了数据并进行了修改的情况下,使数据得到了同步。因而使用AModeQuery参数是必要的,确保从客户端数据库中提取出的数据和您的外部服务器的数据完全地同步。

参数

类型

描述

AnEntityHandle

TObjectHandle

表示当前实体。

AModeQuery

TQueryMode

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

AParentHandle

TObjecthandle

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

AnEntityId

TEntityId

表示实体的类型。

AOwnerDesign

TObjectHandle

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

AKind

TString

未使用。

AName

TString

表示实体名称。

AEditorKind

TString

表示编辑器种类。

ADBAttributes

Integer

表示此文档的属性。ADBAttributes属性实际上是一个字节字段,可与以下五个常量(cfaShortcut, cfaNoChildItem,cfaActiveDoc,cfaOLEDoc,cfaLinkedOLEDoc)来进行比较。更多信息,请参见Pprotel 99运行时间库中的ddb_address。

ADocumentDBID

Integer

表示此文档唯一的ID号。

FullAddress

TString

表示此文档实体的完整地址,是只读值。

AObjectHandle

TObjectHandle

表示窗体的句柄,如果它是非零值,表示一个窗体在设计资源管理器中被打开,并显示出此文档实体的内容。

 
0
相关文章