4.3.9 ClientApi_FindEntityByDataHandle函数
声明(来自ClientProcs单元):
Function ClientApi_FindEntityByDataHandle(ADataHandle : TObjectHandle) : TObjectHandle;
描述:
ClientApi_FindEntityByDataHandle 函数使用一个编辑器窗体句柄来返回查找返回一个实体的句柄。此实体可为设计资源管理器编辑器窗体内的一个文档。您能通过使用ClientAPI_QueryEntity 或ClientAPI_QueryDocumentEntity 查询此实体来检查文档类型,名称等等。
例子:
EntityHandle :=
ClientAPI_FindEntityByDataHandle(MessageRouter_GetState_CurrentEditorWindow);
//MessageRouter_GetState_CurrentEditorWindow函数返回当前在项层的文档的窗体句柄。当前在项层在文档的窗体句柄。
//ClientApi_FindEntityByDataHandle 函数使用一个编辑器窗体句柄来返回查找返回一个实体的句柄。
MessageRouter_Getstate_CurrentEditorWindow函数从Protel 99运行时间库中获取在设计资源管理器中当前编辑器窗体的句柄。ClientAPI_FindEntityByDataHandle函数返回此窗体中打开的文档的句柄。
参见其它:
|
ClientApi_FindBinderFromAnyDataHandle函数 |
ClientApi_GetDocumentOwnerBinder函数 |
|
ClientApi_FindChildDocumentInBinder函数 |
4.3.10 ClientApi_GetCurrentUserID过程
声明(来自ClientProcs单元):
Procedure ClientApi_GetCurrentUserID(AEntityHandle : TObjectHandle; Var UserID : TString);
描述:
ClientApi_GetCurrentUserID过程使用实体参数句柄返回一个有效实体的用户ID号字符串。用户ID号字符串是在一个设计数据库中工作的用户成员(如系统管理员、普通访客或一个指定的项目组成员)。
4.3.11 ClientApi_GetDocumentEntityAbsoluteAddress过程
声明(来自ClientProcs单元):
Procedure ClientApi_GetDocumentEntityAbsoluteAddress(AEntity : TObjectHandle; Var AbsoluteStorageName : TString);
描述:
ClientApi_GetDocumentEntityAbsoluteAddress在关联的设计数据文档内获得一个文档实体的绝对地址。
一个绝对地址包含如下表按次序所显示的标识符。
|
标识符 |
备注 |
|
D> |
表示数据库存储类型,能为MSACCESS或MSSQL数据库格式。 |
|
$RP |
表示一个设计数据库的根路径。 |
|
$RN |
表示一个设计数据库的根文件名称。 |
|
$OP |
表示关于一个设计数据库的实体的偏移路径。 |
|
$ON |
表示一个实体的偏移名称。 |
|
$ID |
表示用户ID号(只读)。 |
|
$ATTR |
表示一个项目的属性。属性能表现为:Shortcut、NoChildItem 、ActiveDoc、OLEDoc、LinkedOLEDoc标记。 |
|
$E |
表示编辑器种类。 |
|
$STF |
表示到一个文件的快捷键(一个到外部文件的连接,举例来说如在设计数据库外部的文件) |
例子:
Entityhandle :=
ClientAPI_FindEntityByDataHandle(MessageRouter_GetState_CurrentEditorWindow);
//MessageRouter_GetState_CurrentEditorWindow函数返回当前在项层的文档的窗体句柄。当前在项层在文档的窗体句柄。
//ClientApi_FindEntityByDataHandle 函数使用一个编辑器窗体句柄来返回查找返回一个实体的句柄。
ClientAPI_GetDocumentEntityAbsoluteAddress(Entityhandle, ddBAddressString);
//ClientApi_GetDocumentEntityAbsoluteAddress在关联的设计数据文档内获得一个文档实体的绝对地址,并把绝对地址赋予字符串变量ddBAddressString。
ShowInfo(ddBAddressString);//显示绝对地址字符串。
一个典型的设计数据库地址字符串看起来这个样子:
D>MSACCCESS:$RP>D:\Program Files\Design Explorer 99 SE $RN>MyDesign.ddb$OP>Documents$ON>Control.pcb$ID>65$ATTR>0$E>PCB$STF>
这个“MyDesign.ddb”设计数据库放在硬盘或网络“D:\Program Files\Design Explorer 99 SE”目录下。“Control.pcb”PCB文档放在此设计数据库“MyDesign.ddb”中的一个“‘Documents”文件夹下。
注意,以下这段代码是给定一个DDB文件名,从DDB文件中得到一般文件对象的完整路径和文件名称(Fullname),即全路径名称
Function GetNormalFileNamefromDDBFileName(DDBFileName : TString) TString;
Var
Address : TDDBAddress;
Begin
Result := DDBFileName;
If DDB_IsDatabaseFileName(DDBFileName) Then
Begin
Address := TDDBAddress.Create(DDBFileName);
//根据DDB文件名称创建一个绝对地址对象。
Result := Address.Root.Path + ‘\’ + Address.OffSet.Name;
//从绝对地址中取出文件全路径名称。
Address.Free;//释放地址对象。
End;
End;
此代码片段从一个实体的绝对地址中提取出一般的文件名称(Fullname)。
4.3.12 ClientApi_GetDocumentKindDetails过程
声明(来自ClientProcs单元):
Procedure ClientApi_GetDocumentKindDetails(DocumentKind : PChar; Var IconName,ServeDLLPath : PChar);
描述:
ClientApi_GetDocumentKindDetails过程返回相关联的图标名称和特定文档种类的服务器DLL路径。
例子1:
请参见\SAMPLES\NO6\API\Client\GetDocumentKindDetails代码。
{....................................................................................}
Var
EntityHandle : TObjectHandle;
Entity : TDocumentEntity;
DocumentKind : PChar;
IconName: PChar;
ServeDLLPath : PChar;
DocumentName : TChar;//文档实体的编辑器种类即文档的类型字符串变量。
Begin
EntityHandle :=
ClientAPI_FindEntityByDataHandle(MessageRouter_GetState_CurrentEditorWindow);
//MessageRouter_GetState_CurrentEditorWindow函数返回当前在项层的文档的窗体句柄。当前在项层在文档的窗体句柄。
//ClientApi_FindEntityByDataHandle 函数使用一个编辑器窗体句柄来返回查找返回一个实体的句柄。
If Entityhandle = 0 Then Exit;//如果无实体则退出。
Entity := TDocumentEntity.Create(EntityHandle);//创建一个文档实体。
Entity.Querydatabase(eGetState);//用内部服务器数据同步外部服务器数据。
StrPCopy(DocumentName,Entity.EditorKind);//把文档实体的编辑器种类即文档的类型字符串赋予文档名称变量DocumentName。
GetMem(IconName ,255);//申请内存。
GetMem(ServeDllPath,255);
ClientApi_GetDocumentKindDetails(Documentname,IconName,ServeDLLPath);
ShowInfo(StrPas(IconName) + ' ' + StrPas(ServeDllPath));//显示编辑器的图标名称和DLL文件的完整路径。
FreeMem(IconName ,255);
FreeMem(ServeDllPath,255);
Entity.Free;//释放实体。
End;
此代码片段示范ClientApi_GetDocumentKindDetails处理来返回当前图标的图标和服务器的完整路径。例如,如果您有设计资源管理器在X:\Program Files\Design Explorer 99目录下并且容器文件夹被激活,此代码将显示图标名称为“FOLDER”和服务器完整路径与名称“X:\Program Files \Design Explorer 99\System\Binder.DLL”。