⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 moduleintf.pas

📁 ACL权限控制软件
💻 PAS
字号:
unit ModuleIntf;

{------------------------------------------------------------------------------}
{
{   --> ModuleIntf.pas
{     本单元定义模块与控制台的交互接口。
{     对于控制台:
{         .通过调用getProcAddress(dllInst, GetModIntfFuncName)来取得这个接口
{
{     对于模块(DLL)
{         .工程文件中的Exports部分需要定义: getModInterface;
{         .需要实现IModuleIntf接口并在以上定义的函数中输出
{
{
{     注:. 模块中如果不需要某函数功能,则用一个空过程即可,但必须定义
{         . ExecuteCommand用于特殊情况,即需要与模块进行信息交换时候用。
{
{     @version : 1.1
{     @history
{          1.0 : 2005-03-25,final
{          1.1 : 2005-03-25, Modify.
{                    修改原因 : 思路正确,但有点过度设计,丧失了易用性,这种
{                               形式使得需要写新控件来实现接口。不利于R&D开发。
{                    修改方向 : 使用VCL中已存在的控件作为参数,无需实现接口    
{
{------------------------------------------------------------------------------}

{.$DEFINE VER10}
{$DEFINE VER11}

{$IFDEF VER11}
  {$UNDEF VER10}
{$ENDIF}

{$IFDEF VER10}
  {$Message Warn '使用1.0版需要自己实现接口。'}
{$ENDIF}

interface

uses Classes
     {$IFDEF VER11}
     ,ExtCtrls
     {$ENDIF}
     ,XMLDOM
     ;

type
  { 模块实例状态 }
  TModuleInstanceState = (msSingle, msMulti, msDontFree);

  { 提供给模块用于向控制台进行提示信息输出 }
  IMessageAreaIntf = interface
      { 显示提示信息 }
      procedure ShowMessage(Msg : String);
  end;

  {$IFDEF VER10}
  { 用于模块界面集成到控制台的接口 }
  IUIControlIntf = interface
      { 指定当前控件的父容器 }
      procedure setParent(parent : TComponent);
  end;
  {$ENDIF}

  { 模块接口 }
  IModuleIntf = interface
     {-- UI部分 ---------------------------------------------------------------} 
     { 取得工作区域 }
     function getWorkArea : {$IFDEF VER10}IUIControlIntf{$ELSE}TPanel{$ENDIF};
     { 取得工具栏区域 }
     function getToolArea : {$IFDEF VER10}IUIControlIntf{$ELSE}TPanel{$ENDIF};
     { 设置消息提示用的控件 }
     procedure setMessageArea(IArea : IMessageAreaIntf);

     {-- Functions ------------------------------------------------------------}
     { 取得模块名称 }
     function getModuleName: String;
     { 设置模块需要使用的参数 }
     procedure setParamToModule(paramName, value : String);
     { 取得实例状态:单,多,不允许释放 }{<<---:: 控制不需要由DLL实现,而是由控制台的ModuleManager实现 }
     function getInstanceState: TModuleInstanceState ;

     {- 其他函数无法解决时使用此函数 -}
     function ExecuteCommand(Command : String) : String;
     function GetRoleId(FileName: DOMString;UserId: String): TStrings;   //取得用户的相应角色
     function GetReadPermission(FileName: DOMString;RoleId: String): TStrings; //取得角色的可读权限
     function GetWritePermission(FileName: DOMString;RoleId: String): TStrings; //取得角色的可写权限
  end;

  {- 接口函数定义 -}
  TGetModInterfaceFunc = function : IModuleIntf;  stdcall;

const
  GetModIntfFuncName = 'getModInterface';

implementation



end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -