Глава 12. РАЗРАБОТКА ОКОННОГО ИНТЕРФЕЙСА
Встроенные специализированные процедуры и функции
В программе имеется ряд встроенных специализированных процедур и функций,
которые можно использовать в оконных модулях:
function CallDocument(var doc_type_id, doc_id, dir_id: integer;
const params: string): TModalResult;
//вызывает документ на экран, если у того имеется проект оконного интерфейса.
function CallDocumentEx(var doc_type_id, doc_id, dir_id: integer;
const params: string; parent_doc_type_id, parent_doc_id: integer): TModalResult;
//вызывает документ на экран, если у того имеется проект оконного интерфейса.
//имеет два дополнительных параметра для передачи информации
procedure MakeEntries(const MainTableName: string; doc_id: integer;
ATransaction: TIBTransaction);
//перепроводит документ в бухгалтерской системе
//с помощью вызова хранимой процедуры
//_CHANGED(doc_id) на сервере
procedure MakeRegEntries(const MainTableName: string;
doc_id, doc_n, reg_template_id: integer; ATransaction: TIBTransaction);
//перепроводит документ в регистрах с помощью вызова хранимой процедуры
//_R_CHANGE(doc_id, doc_n, reg_template_id) на сервере
procedure RefreshExplorer;
//освежает «Проводник документов», если тот на экране
procedure RefreshBalance;
//освежает «Баланс», если тот на экране
function SimpleEditDocument(doc_type_id: integer; var doc_id: integer): boolean;
// вызывает универсальное системное окно редактирования документов
function GetLayerMask(Layer_ID: integer): boolean;
//возвращает значение маски слоя
procedure SetLayerMask(Layer_ID: integer; Enabled: boolean);
//устанавливает новое значение маски слоя
procedure StatusBarDisplay(LedColor: TColor; ProgressPosition,
ProgressMin, ProgressMax: integer; const Text1, Text2, Text3: string);
//управляет статусной строкой в главном окне
procedure TestTemplateBalance(Template_Id: integer; ShowErrFormPrompt: boolean);
//запускает виртуальную операцию шаблона для проверки равенства дебета кредиту
function IsAllegroSystemObject(const Name: string): boolean;
//возвращает True, если Name является именем системного объекта ядра базы данных
function GetEditFormat(const DisplayFormat: string): string;
//возвращает переданную строку,
//исключая из нее любые символы кроме #, 0 и точки
function UpdateTurnovers(RefreshBalance: boolean): boolean;
//вызывает перепроведение всех бухгалтерских
//шаблонов, у которых установлен флаг IS_CHANGED
function DocTypeSelectDlg(EnableSysDocs: boolean; var Doc_Type_Id: integer): boolean;
//вызывает диалог выбора типа документа
function NameOfRefObject(Object_ID: integer; const NameType: string): string;
//возвращает отформатированное наименование объекта из таблицы OBJECT_NAMES
function NameOfDocument(const MainTableName: string; Doc_Id: integer;
ATransaction: TIBTransaction): string;
//возвращает наименование документа, получая его вызовом
//процедуры форматирования имени документа XXX_GET_NAMES
function UserHasGlobalPrivileges: boolean;
// Возвращает True, если пользователь SYSDBA или
// владелец (OWNER) текущей базы данных
function GetDocumentContext(Adoc_id: integer): TRunContext;
//возвращает контекст документа,
//если тот присуствует на экране и nil, если это не так.
function GetDocumentForm(Adoc_id: integer): TCustomForm;
//возвращает указатель на форму
//документа, если она присуствует на экране или nil, если это не так;
//позволяет получить доступ к объектам любого активного документа.
function AlgExpandRelativePath(const FileName: string): string;
//прибавляет к FileName путь к файлам текущей конфигурации
procedure PrepareToChangeConfiguration(OwnerRequired: boolean);
//проверяет готовность к внесению изменений в метаданные
function ExtractSubstring(const S: string; var p: Integer; Ch: Char): string;
//выделяет подстроку, начиная с позиции p и до того,
//как встретится символ Ch или конец строки
procedure ResetCurrentTime;
//сбрасывает счетчик времени, используется совместно с
//GetCurrentTimeStr
function GetCurrentTimeStr: string;
//отображает значение счетчика времени, используется для
// измерения времени SQL-запросов совместно с ResetCurrentTime
function GetLocalFilePath(const S: string): string;
//возвращает локальный путь (начиная с диска)
//к файлу на сервере, выделяя его из сетевого пути
function StrToVarcharFilter(const FieldName, CollateStr, S: string): string;
//преобразует строку слов, разделенных пробелами,
//в условие поиска «по одновременному вхождению», например
//StrToVarcharFilter('TABLE1.NAME','COLLATE PXW_CYRL','Вася Пупкин')
//вернет такой результат:
// 'UPPER(TABLE1.NAME COLLATE PXW_CYRL) LIKE %ВАСЯ% AND'#13'+
// 'UPPER(TABLE1.NAME COLLATE PXW_CYRL) LIKE %ПУПКИН%'
function FileVersion(const FileName: string): string;
//возвращает версию Allegro в виде строки.
procedure DeleteDocument(const TableName: string; Doc_Id: integer);
//удаляет документ и все его проводки из таблицы проводок и многомерных регистров.
function GetRowCount(const TableName: string): integer;
//возвращает количество строк в таблице.
function GetDbVersion(ADatabase: TIBDatabase): integer;
//возвращает номер версии ядра базы.
function ForceSaldoToReg(acc_id: integer): integer;
//возвращает счет регистра для счета развернутого
//сальдо и сам счет для обычного счета.
procedure ConnectAndCheckVersion(ADatabase: TIBDatabase; const DatabaseCaption: string);
//проверяет версию ядра базы данных и вызывает апдейт ядра до нужной версии.
//Следует всегда вызывать эту функцию прежде, чем работать
//с внешней базой данных формата Allegro.
function GetUserRole(ADatabase: TIBDatabase): string;
//возвращает роль текущего пользователя.
procedure ReconnectIfUserHasRole(ADatabase: TIBDatabase);
//если у пользователя имеется роль, переподключается к базе с этой ролью.
function CompatibleRoots(acc_id: integer): string;
//возвращает в виде строки перечисленные через
//запятую внутренние номера всех регистров счетов,
//не нарушающих баланс в корреспонденции со счетом acc_id.
function GetFilterExpression(Rubric_id: integer; ATransaction: TIBTransaction;
InitialValues: TStrings; var rubric_class_id: integer): string;
//возвращает условие фильтрации
//и идентификатор id класса по внутреннему идентификатору id рубрики.
function StoredProcedureExists(const AName: string): boolean;
//возвращает True, если хранимая процедура с именем AName
//существует в текущей базе данных
function TableIsEmpty(const TableName: string; ATransaction: TIBTransaction): boolean;
//возвращает True, если таблица с именем TableName пуста
//в контексте транзакции ATransaction
procedure ViewRelatedDocuments(const main_table_name: string; Adoc_id: integer);
//вызывает системное окно «Документов, ссылающихся на данный документ»
function ExecuteFile(const Operation, FileName, Parameters, Directory: string; ShowCmd: Integer): integer;
//запускает файл средствами операционной системы, (вызывает функцию ShellExecute).
|