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

Материал из ИСУ-ВУЗ помощя
(Различия между версиями)
Перейти к: навигация, поиск
 
(не показаны 4 промежуточные версии 1 участника)
Строка 1: Строка 1:
 +
__TOC__
 
ОРГАНИЗАЦИЯ РАБОТЫ
 
ОРГАНИЗАЦИЯ РАБОТЫ
 
со стандартными функциями АРМов ИСУ ВУЗ
 
со стандартными функциями АРМов ИСУ ВУЗ
 
из модулей Delphi
 
из модулей Delphi
  
I. Подготовительные мероприятия для работы с функциями АРМов
+
==Подготовительные мероприятия для работы с функциями АРМов==
  
 
1. Установить пакет компонентов SSAALib, расположенный в сетевом каталоге \\SQL-M01\DistEdu\Проекты ТИСБИ\Программный код\Delphi\CommonUtils, который рекомендуется для удобства подключить как сетевой диск U:
 
1. Установить пакет компонентов SSAALib, расположенный в сетевом каталоге \\SQL-M01\DistEdu\Проекты ТИСБИ\Программный код\Delphi\CommonUtils, который рекомендуется для удобства подключить как сетевой диск U:
  
 
2. Подключить к проекту Delphi модули общего использования MainUtils.pas и unParentChildTypes.pas, расположенные в этом же каталоге:
 
2. Подключить к проекту Delphi модули общего использования MainUtils.pas и unParentChildTypes.pas, расположенные в этом же каталоге:
<syntaxhighlight lang="pascal">
+
<syntaxhighlight lang="delphi">
  
library OrderForms;
+
library OrderForms;
  
uses
+
uses
  ...
+
  ...
 
   MainUtils in 'U:\MainUtils.pas',
 
   MainUtils in 'U:\MainUtils.pas',
 
   unParentChildTypes in 'U:\unParentChildTypes.pas';
 
   unParentChildTypes in 'U:\unParentChildTypes.pas';
Строка 27: Строка 28:
 
3. Для удобства обращения к процедурам и функциям модуля MainUtils желательно (но не обязательно) в блоке инициализации соединения проекта определить глобальные переменные ExecuteConnection (TADOConnection) и ARMSessionID (Integer) соответствующими значениями основной коннекции проекта и идентификатора текущей сессии.
 
3. Для удобства обращения к процедурам и функциям модуля MainUtils желательно (но не обязательно) в блоке инициализации соединения проекта определить глобальные переменные ExecuteConnection (TADOConnection) и ARMSessionID (Integer) соответствующими значениями основной коннекции проекта и идентификатора текущей сессии.
  
II. Назначение функций АРМов компонентам форм
+
==Назначение функций АРМов компонентам форм==
  
 
Функции АРМов могут быть доступны или недоступны текущей сессии. Для автоматизации назначения доступа к функциям используются следующие процедуры модуля MainUtils, который:
 
Функции АРМов могут быть доступны или недоступны текущей сессии. Для автоматизации назначения доступа к функциям используются следующие процедуры модуля MainUtils, который:
Строка 54: Строка 55:
 
3. Допускается отмена автоматического назначения заголовка, подсказки и графического изображения указанной функции АРМа соответствующими флагами fa_NoCaption, fa_NoHint, fa_NoImage.
 
3. Допускается отмена автоматического назначения заголовка, подсказки и графического изображения указанной функции АРМа соответствующими флагами fa_NoCaption, fa_NoHint, fa_NoImage.
  
III. Обращение к функциям АРМов
+
==Обращение к функциям АРМов==
  
 
Для вызова любой процедуры соответствующей функции АРМа (если она назначена) используется функция FunctionCall, возвращающая True в случае удачного обращения к этой функции и в противном случае False с выводом в зависимости от значения переменной ShowErrorMode (Boolean = True) соответствующего сообщения об ошибке при попытке обращения к указанной функции АРМа. Текст сообщения об ошибке вызова функции сохраняется в переменной DLLError модуля SSAAUtils пакета компонентов SSAALib.
 
Для вызова любой процедуры соответствующей функции АРМа (если она назначена) используется функция FunctionCall, возвращающая True в случае удачного обращения к этой функции и в противном случае False с выводом в зависимости от значения переменной ShowErrorMode (Boolean = True) соответствующего сообщения об ошибке при попытке обращения к указанной функции АРМа. Текст сообщения об ошибке вызова функции сохраняется в переменной DLLError модуля SSAAUtils пакета компонентов SSAALib.
  
 
Вызов функций АРМов может быть осуществлен двумя способами:
 
Вызов функций АРМов может быть осуществлен двумя способами:
<syntaxhighlight lang="pascal">
+
<syntaxhighlight lang="delphi">
unit Unit1;
+
unit Unit1;
  
interface
+
interface
  
uses ...
+
uses ...
 
     SSAAUtils, MainUtils;
 
     SSAAUtils, MainUtils;
  
type
+
type
  TStudentForm = class(TForm)
+
  TStudentForm = class(TForm)
    A_StudPersData: TAction;
+
    A_StudPersData: TAction;
  public
+
  public
    StudentID: Integer;
+
    StudentID: Integer;
  end;
+
  end;
 
...
 
...
 
{ просмотр персональных данных студента }
 
{ просмотр персональных данных студента }
Строка 88: Строка 89:
 
...
 
...
 
</syntaxhighlight>
 
</syntaxhighlight>
IV. Дополнительные возможности при работе с функциями АРМов
+
==Дополнительные возможности при работе с функциями АРМов==
  
 
1. При необходимости формирования собственных сообщений об ошибках либо для других целей могут использоваться следующие функции модуля MainUtils:
 
1. При необходимости формирования собственных сообщений об ошибках либо для других целей могут использоваться следующие функции модуля MainUtils:
Строка 99: Строка 100:
 
2. Для замены иконки формы, отображаемой при вызове функции АРМа, изображением, назначенным для этой функции, можно использовать процедуру FunctionIcon.
 
2. Для замены иконки формы, отображаемой при вызове функции АРМа, изображением, назначенным для этой функции, можно использовать процедуру FunctionIcon.
  
V. Описание процедур DLL-модуля
+
==Описание процедур DLL-модуля==
 
для использования в качестве функций АРМов
 
для использования в качестве функций АРМов
  
 
Образец 1 (без предзагрузки модуля):
 
Образец 1 (без предзагрузки модуля):
<syntaxhighlight lang="pascal">
+
<syntaxhighlight lang="delphi">
 
library Module1;
 
library Module1;
 
...
 
...
Строка 145: Строка 146:
 
end.
 
end.
 
</syntaxhighlight>
 
</syntaxhighlight>
VI. Режим разработчика
+
==Режим разработчика==
  
 
Нередко бывает необходимость административного вызова недоступных текущей сессии функций АРМов. Для этой цели в модуле MainUtils предусмотрен функционал по организации и работы в административном режиме (режиме разработчика).
 
Нередко бывает необходимость административного вызова недоступных текущей сессии функций АРМов. Для этой цели в модуле MainUtils предусмотрен функционал по организации и работы в административном режиме (режиме разработчика).

Текущая версия на 16:13, 13 марта 2012

Содержание

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