Простейщая dll библиотека
Содержание[<hidetoc>] |
ОРГАНИЗАЦИЯ РАБОТЫ со стандартными функциями АРМов ИСУ ВУЗ из модулей 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.