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

(Различия между версиями)
Перейти к: навигация, поиск
Строка 8: Строка 8:
  
 
2. Подключить к проекту Delphi модули общего использования MainUtils.pas и unParentChildTypes.pas, расположенные в этом же каталоге:
 
2. Подключить к проекту Delphi модули общего использования MainUtils.pas и unParentChildTypes.pas, расположенные в этом же каталоге:
<syntaxhighlight lang="delphi">
+
<syntaxhighlight lang="pascal">
  
 
library OrderForms;
 
library OrderForms;
Строка 59: Строка 59:
  
 
Вызов функций АРМов может быть осуществлен двумя способами:
 
Вызов функций АРМов может быть осуществлен двумя способами:
<syntaxhighlight lang="delphi">
+
<syntaxhighlight lang="pascal">
 
unit Unit1;
 
unit Unit1;
  
Строка 103: Строка 103:
  
 
Образец 1 (без предзагрузки модуля):
 
Образец 1 (без предзагрузки модуля):
<source lang=delphi>
+
<syntaxhighlight lang="pascal">
 
library Module1;
 
library Module1;
 
...
 
...
Строка 144: Строка 144:
  
 
end.
 
end.
</source>
+
</syntaxhighlight>
 
VI. Режим разработчика
 
VI. Режим разработчика
  

Версия 12:50, 28 февраля 2012

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