Простейщая dll библиотека
Diknik (обсуждение | вклад) (Новая страница: «ОРГАНИЗАЦИЯ РАБОТЫ со стандартными функциями АРМов ИСУ ВУЗ из модулей Delphi I. Подготовит...») |
Diknik (обсуждение | вклад) |
||
(не показаны 7 промежуточных версий 1 участника) | |||
Строка 1: | Строка 1: | ||
+ | __TOC__ | ||
ОРГАНИЗАЦИЯ РАБОТЫ | ОРГАНИЗАЦИЯ РАБОТЫ | ||
со стандартными функциями АРМов ИСУ ВУЗ | со стандартными функциями АРМов ИСУ ВУЗ | ||
из модулей Delphi | из модулей Delphi | ||
− | + | ==Подготовительные мероприятия для работы с функциями АРМов== | |
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="delphi"> | ||
+ | library OrderForms; | ||
− | + | uses | |
− | + | ... | |
− | uses | + | |
− | + | ||
MainUtils in 'U:\MainUtils.pas', | MainUtils in 'U:\MainUtils.pas', | ||
unParentChildTypes in 'U:\unParentChildTypes.pas'; | unParentChildTypes in 'U:\unParentChildTypes.pas'; | ||
+ | </syntaxhighlight> | ||
Примечание: | Примечание: | ||
Строка 26: | Строка 28: | ||
3. Для удобства обращения к процедурам и функциям модуля MainUtils желательно (но не обязательно) в блоке инициализации соединения проекта определить глобальные переменные ExecuteConnection (TADOConnection) и ARMSessionID (Integer) соответствующими значениями основной коннекции проекта и идентификатора текущей сессии. | 3. Для удобства обращения к процедурам и функциям модуля MainUtils желательно (но не обязательно) в блоке инициализации соединения проекта определить глобальные переменные ExecuteConnection (TADOConnection) и ARMSessionID (Integer) соответствующими значениями основной коннекции проекта и идентификатора текущей сессии. | ||
− | + | ==Назначение функций АРМов компонентам форм== | |
Функции АРМов могут быть доступны или недоступны текущей сессии. Для автоматизации назначения доступа к функциям используются следующие процедуры модуля MainUtils, который: | Функции АРМов могут быть доступны или недоступны текущей сессии. Для автоматизации назначения доступа к функциям используются следующие процедуры модуля MainUtils, который: | ||
Строка 53: | Строка 55: | ||
3. Допускается отмена автоматического назначения заголовка, подсказки и графического изображения указанной функции АРМа соответствующими флагами fa_NoCaption, fa_NoHint, fa_NoImage. | 3. Допускается отмена автоматического назначения заголовка, подсказки и графического изображения указанной функции АРМа соответствующими флагами fa_NoCaption, fa_NoHint, fa_NoImage. | ||
− | + | ==Обращение к функциям АРМов== | |
Для вызова любой процедуры соответствующей функции АРМа (если она назначена) используется функция FunctionCall, возвращающая True в случае удачного обращения к этой функции и в противном случае False с выводом в зависимости от значения переменной ShowErrorMode (Boolean = True) соответствующего сообщения об ошибке при попытке обращения к указанной функции АРМа. Текст сообщения об ошибке вызова функции сохраняется в переменной DLLError модуля SSAAUtils пакета компонентов SSAALib. | Для вызова любой процедуры соответствующей функции АРМа (если она назначена) используется функция FunctionCall, возвращающая True в случае удачного обращения к этой функции и в противном случае False с выводом в зависимости от значения переменной ShowErrorMode (Boolean = True) соответствующего сообщения об ошибке при попытке обращения к указанной функции АРМа. Текст сообщения об ошибке вызова функции сохраняется в переменной DLLError модуля SSAAUtils пакета компонентов SSAALib. | ||
Вызов функций АРМов может быть осуществлен двумя способами: | Вызов функций АРМов может быть осуществлен двумя способами: | ||
− | unit Unit1; | + | <syntaxhighlight lang="delphi"> |
+ | unit Unit1; | ||
− | interface | + | interface |
− | uses ... | + | uses ... |
SSAAUtils, MainUtils; | SSAAUtils, MainUtils; | ||
− | type | + | type |
− | + | TStudentForm = class(TForm) | |
− | + | A_StudPersData: TAction; | |
− | + | public | |
− | + | StudentID: Integer; | |
− | + | end; | |
... | ... | ||
{ просмотр персональных данных студента } | { просмотр персональных данных студента } | ||
Строка 85: | Строка 88: | ||
end; | end; | ||
... | ... | ||
− | + | </syntaxhighlight> | |
− | + | ==Дополнительные возможности при работе с функциями АРМов== | |
1. При необходимости формирования собственных сообщений об ошибках либо для других целей могут использоваться следующие функции модуля MainUtils: | 1. При необходимости формирования собственных сообщений об ошибках либо для других целей могут использоваться следующие функции модуля MainUtils: | ||
Строка 97: | Строка 100: | ||
2. Для замены иконки формы, отображаемой при вызове функции АРМа, изображением, назначенным для этой функции, можно использовать процедуру FunctionIcon. | 2. Для замены иконки формы, отображаемой при вызове функции АРМа, изображением, назначенным для этой функции, можно использовать процедуру FunctionIcon. | ||
− | + | ==Описание процедур DLL-модуля== | |
для использования в качестве функций АРМов | для использования в качестве функций АРМов | ||
Образец 1 (без предзагрузки модуля): | Образец 1 (без предзагрузки модуля): | ||
− | + | <syntaxhighlight lang="delphi"> | |
library Module1; | library Module1; | ||
... | ... | ||
Строка 142: | Строка 145: | ||
end. | end. | ||
− | + | </syntaxhighlight> | |
− | + | ==Режим разработчика== | |
Нередко бывает необходимость административного вызова недоступных текущей сессии функций АРМов. Для этой цели в модуле 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.