Простейщая dll библиотека

Материал из ИСУ-ВУЗ помощя
Перейти к: навигация, поиск

Содержание

ОРГАНИЗАЦИЯ РАБОТЫ со стандартными функциями АРМов ИСУ ВУЗ из модулей Delphi

Подготовительные мероприятия для работы с функциями АРМов

1. Установить пакет компонентов SSAALib, расположенный в сетевом каталоге \\SQL-M01\DistEdu\Проекты ТИСБИ\Программный код\Delphi\CommonUtils, который рекомендуется для удобства подключить как сетевой диск U:

2. Подключить к проекту Delphi модули общего использования MainUtils.pas и unParentChildTypes.pas, расположенные в этом же каталоге:

 library OrderForms;
 
 uses
   ...
  MainUtils in 'U:\MainUtils.pas',
  unParentChildTypes in 'U:\unParentChildTypes.pas';

Примечание:

MainUtils – модуль, содержащий процедуры и функции для организации работы со стандартными функциями АРМов; unParentChildTypes – модуль, используемый модулем MainUtils для организации стандартного вызова функций из MDI-форм через посылку сообщения главной форме приложения. Кроме того, следует учесть, что модуль MainUtils использует статически прикомпилируемую процедуру вывода сообщений об ошибках из библиотеки General.dll

3. Для удобства обращения к процедурам и функциям модуля MainUtils желательно (но не обязательно) в блоке инициализации соединения проекта определить глобальные переменные ExecuteConnection (TADOConnection) и ARMSessionID (Integer) соответствующими значениями основной коннекции проекта и идентификатора текущей сессии.

Назначение функций АРМов компонентам форм

Функции АРМов могут быть доступны или недоступны текущей сессии. Для автоматизации назначения доступа к функциям используются следующие процедуры модуля MainUtils, который:

IsFuncAccessed функция, возвращающая True или False в зависимости от доступа текущей роли к указанной функции АРМа ... RealAddress: TMemo; ... RealAddress.Visible := IsFuncAccessed(552); { адрес прописки } ...

FuncAdjustment функция, настраивающая видимость указанного компонента (в зависимости от доступа), его заголовок, подсказка и графическое изображение в соответствии с настройками указанной функции АРМа ... N_StaffList: TMenuItem; B_StaffList: TSpeedButton; ... { настройка пункта меню по работе с сотрудниками } FuncAdjustment(69, N_StaffList); { настройка кнопки обращения к списку сотрудников

 без автоматической установки заголовка }

FuncAdjustment(69, B_StaffList, fa_NoCaption); ... Примечания: 1. В качестве аргумента допустимы компоненты следующих классов: TButton, TBitBtn, TSpeedButton, TToolButton, TMenuItem, TAction. 2. Идентификатор функции АРМа сохраняется в свойстве Tag. 3. Допускается отмена автоматического назначения заголовка, подсказки и графического изображения указанной функции АРМа соответствующими флагами fa_NoCaption, fa_NoHint, fa_NoImage.

Обращение к функциям АРМов

Для вызова любой процедуры соответствующей функции АРМа (если она назначена) используется функция FunctionCall, возвращающая True в случае удачного обращения к этой функции и в противном случае False с выводом в зависимости от значения переменной ShowErrorMode (Boolean = True) соответствующего сообщения об ошибке при попытке обращения к указанной функции АРМа. Текст сообщения об ошибке вызова функции сохраняется в переменной DLLError модуля SSAAUtils пакета компонентов SSAALib.

Вызов функций АРМов может быть осуществлен двумя способами:

 unit Unit1;
 
 interface
 
 uses ...
     SSAAUtils, MainUtils;
 
 type
   TStudentForm = class(TForm)
     A_StudPersData: TAction;
   public
     StudentID: Integer;
   end;
...
{ просмотр персональных данных студента }
  FuncAdjustment(49, A_StudPersData);
  ShowErrorMode := False;
...
{ 1. непосредственный вызов функции }
  FunctionCall(49, [StudentID]);
...
{ 2. вызов при действии над компонентом }
procedure TStudentForm. A_StudPersDataExecute(Sender: TObject);
begin
  if not FunctionCall(Sender, [StudentID]) then ShowMessage(DLLError);
end;
...

Дополнительные возможности при работе с функциями АРМов

1. При необходимости формирования собственных сообщений об ошибках либо для других целей могут использоваться следующие функции модуля MainUtils:

FunctionName – наименование функции АРМа FunctionDLLName – имя DLL-модуля функции АРМа FunctionProcName – название процедуры, вызываемой функцией АРМа FunctionBitmap – изображение, соответствующее функции АРМа

2. Для замены иконки формы, отображаемой при вызове функции АРМа, изображением, назначенным для этой функции, можно использовать процедуру FunctionIcon.

Описание процедур DLL-модуля

для использования в качестве функций АРМов

Образец 1 (без предзагрузки модуля):

library Module1;
...
procedure Procedure1(
  AppHandle: THandle; Con: TADOConnection;
  SessionID: Integer; Params: array of const); 
begin
  ...
end;
...
export Procedure1;
 
end.
 
Образец 2 (с предзагрузкой модуля):
 
library Module2;
...
 
{ инициализация библиотеки: Init – единое название для всех модулей }
function Init(
  App: TApplication; Scr: TScreen;
  SessionID: Integer; Con: TADOConnection): Boolean; stdcall;
begin
  ...
end;
...
procedure Procedure1(Params: array of const); stdcall;
begin
  ...
end;
...
{ освобождение библиотеки: Done – единое название для всех модулей }
procedure Done; stdcall;
begin
  ...
end;
 
export Init, Procedure1, Done;
 
end.

Режим разработчика

Нередко бывает необходимость административного вызова недоступных текущей сессии функций АРМов. Для этой цели в модуле MainUtils предусмотрен функционал по организации и работы в административном режиме (режиме разработчика).

В случае значения True глобальной переменной DeveloperMode (по умолчанию False) при открытии процедурой OpenFunctions набора функций АРМов ASPFunctions вышеупомянутые функции IsFuncAccessed и FuncAdjustment будут возвращать значение True независимо от настроек доступа для текущей сессии. Таким образом, в режиме разработчика доступны все функции, презентованные в текущий АРМ.

Кроме того, в модуле MainUtils имеется возможность проверки административной работы ИСУ ВУЗ при помощи функции IsDeveloper (Boolean) и принудительного включения режима разработчика (с запросом соответствующих учетных данных в случае IsDeveloper = False) при помощи ResetDeveloperMode, которая изменяет значение переменной DeveloperMode.

Личные инструменты
Пространства имён
Варианты
Действия
Навигация
ИСУ ВУЗ:WIN32
ИСУ ВУЗ:WEB
Инструменты