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

Материал из ИСУ-ВУЗ помощя
Версия от 15:40, 24 февраля 2012; Diknik (обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

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

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

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) соответствующими значениями основной коннекции проекта и идентификатора текущей сессии.

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

Функции АРМов могут быть доступны или недоступны текущей сессии. Для автоматизации назначения доступа к функциям используются следующие процедуры модуля 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.

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

Для вызова любой процедуры соответствующей функции АРМа (если она назначена) используется функция 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; ...

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

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

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

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

V. Описание процедур 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.

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

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

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

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

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