681450766 1 Руководство пользователя GArchive Введение Программа создана для ведения архива геодезических работ. Программа работает на Windows-98 и Windows-XP и не требует наличия дополнительных системных компонент. Архив ведется как база MSAccess Основными записями базы являются Договора, Организации, Обьекты, Заказчики. Удобные формы поиска/фильтрации записей. Конфигуратор позволяет создавать/удалять поля записей, определять новые атрибуты поиска/выборки договоров из базы, а также расширять базу путем создания новых типов записей. Установка программы Установка производится при запуске GArchiveSetup.exe и осуществляется по умолчанию в следующую директорию: После установки на рабочем столе создается ярлык . При переустановке программы все программные модули и файлы шаблонов перезаписываются новыми, последними версиями. 681450766 2 Запуск программы При запуске программы через ярлык программа запрашивает имя проекта (GArchive – это умалчиваемое имя проекта): Данные проекта находятся в директории <Директория Установки>\Data\<Имя Проекта> и состоят из Access базы <Имя Проекта>.mdb. Эта база создается путем копирования из баз шаблонов <Директория Установки>\Template\*.mdb. Шаблон rus_template.mdb содержит русский, а ukr_template.mdb вариант базы. Контекстное меню формы содержит следующие сервисные команды: Отладка Сбросить пользовтеля Опция дампирования SQL команд установки Сброс настроек программы к умалчиваемым значениям Установить настройки Установка настроек программы из файла Очистить данные Удалить файл проекта Удаление все данных проекта (Настройки при этом остаются) Удалить файл ранее созданного проекта. При этом база проекта вновь создается из шаблона При запуске программа проверяет наличие ключа активации и в случае его отсутствия работает в демо-режиме. В демо-режиме, только первые 20 записей договаров добавляются нормально. После регистрации (путем получеиии у автора кода активации) ограничения деморежима исчезают. 681450766 3 Как работать Интерфейс Garchive является списочной формой по Договорам и имеет следующий вид: Кроме списочных форм (немодальных), программа поддерживает формы единичных объектов. 681450766 4 Списочные формы Для обзора объектов базы предназначены списочные формы. Списочная форма состоит из командной панели находящейся в верхней части формы. Командная панель состоит из инструмента редактирования, инструмента фильтра поиска и дополнительных команд. В средней части формы находится таблица списка объектов, а в нижней строка состояния. Фильтр поиска работает по выбранной колонке списка. Колонка выбирается щелчком по заголовку. Выбор можно изменить щелчком по заголовку другой колонки. Для выполнения операции поиска активируйте поле поиска и наберите начальные символы искомой строки. Список автоматически обновляется после каждого символа введенного в строку поиска. Также щелчок по заголовку колонки меняет его цвет на синий. Это значит, что список группируется по алфавиту (возрастанию) указанных данных в выбранной колонке. Повторний щелчок по заголовку колонки перекрашивает название в коричневый цвет и размещает записи в обратном порядке. Допускает ввод/корректировку прямо в поля формы. Кроме того можно использовать команды инструмента редактирования, и затем заполнить поля единичной формы. Чтобы вывести форму на экран щелкните на иконку (для новой записи) или выделить нужную строку и щелкнуть на (для корректировки существующей). Такого же результата можно добиться при двойном щелчке по элементу списочной формы. Кроме того возможно прямо вводить данные в ячейки таблицы (a’la Excel). Чтобы вводить данные прямо в ячейки таблицы выделите нужную ячейку кликом мыши или стрелками клавиатуры, затем введите данные. Для перемещения выделения влево по строке используйте клавишу клавиатуры Tab (вправо Shift+Tab). Добавить строку можно кнопкой Insert. Пустая строка появится над выделенной. Также строка с пустыми ячейками образуется снизу в случае перемещения выделительной строки ниже последней строки. Текущий элемент удаляется комбинацией клавиш Ctrl/Del. С помощью всплывающего меню, которое вызывается, правой кнопкой мыши, вы можете посмотреть статистику столбцов, настроить колонки и вставить таблицу в Microsoft Excel. Еще можно перемещать колонки мышкой, как значки на рабочем столе. Удерживать нужно за название колонки. Над элементами списочной формы допустимы групповые операции (например удаление). Для выбора нужно использовать стандартные Window комбинации Ctrl/<Левая кнопка мыши>-одиночный выбор, Alt/<Левая кнопка мыши>-выбор диапазона, Ctrl/A-выбор всех. Расположение формы, порядок и ширина колонок, а также порядок сортировки запоминаются программой. 681450766 5 Формы для единичных объектов Такая форма появляется при использовании инструмента редактирования или при двойном щелчке по элементу списочной формы (режим редактирования). Видимостью полей на форме, а также порядком их размещения, можно управлять пользуясь конфигуратором версией программы. Расположение формы запоминается программой. 681450766 6 Типы полей данных База данных состоит из записей, которые состоят из полей следующих типов: Тип Координата Высота Угол Родительский тип Double Double Double Длина Строка Вещественное Целое Логическое Дата Ссылка Double String Double Integer Boolean Date Integer Папка String Blob Blob Примечание Значения углов вводятся в одно поле, отделяя градусы от следующих минут и последующих секунд пробелом. Поля типа Ссылка имеют вид <Название ссылки> где кнопка справа служит для получения списка возможных значений. Кроме того, этот список можно получить комбинацией клавиш Alt/<Стрелка вниз>. Клавишей <Стрелка вниз><Стрелка вверх> можно менять значение ссылки. При двойном щелчке по полю активируется форма для изменения значения ссылаемого поля. Директория на диске вида С:\DATA\Drawing1\1. При двойном щелчке по полю активируется настреный на данную деректорию Explorer. Текст с разделителями Формат отображения полей можно изменять командой Сервис- Настройки настроив поля следующей формы: 681450766 7 Конфигуратор Это задача Kdesign.exe которая запускается ярлыком для настройки следющую схему базы данных: и визиализирует Слева на форме понель с деревом типов. Можно расширять схему базы путем создания новых типов. Справа вверху командные кнопки для добавления/удаления/изменения порядка полей, а также название поля для идентификации данного типа записи(для записи DOGOVORY это NAME). Ниже справа панель со списком полей данного типа(закладка Поля). Можно изменять поля типа при добавлении/удалении/изменении характеристик поля. При переключении на закладку Скрипты становится доступной страница VB скриптов модифицирующих поведение программы: 681450766 8 Сам обьект является умалчиваемым для скрипта. Пример: value("DATA_DOGOVORA")=now Для именования полей можно пользоваться не английскими именами. Пример: value("Дата работ")=now Кроме него скрипту известен обьект-коннектор ocon(интерфейс Iproject). Функция OnLoad вызывается при загрузке единичной формы. Параметр pc0 это панель на которой размещаются поля единичной формы. Функция AfterInsert вызывается пoсле создания новой записи. Функция BeforePost вызывается перед записью в таблицу. Функция BeforDelete вызывается перед удалением записи из таблицы. Для создания собственных кнопок-обработчиков нужно определить функцию с именем Кнопка_заголовок_кнопки. Внизу справа список записей базы данного типа. 681450766 9 Обьектная модель Ниже приведена обьектая модель системы достаточноя для создания собственных скриптов. Обьект интерфейса IProject Обьект-коннектор к базе данных. property ACatalog:variant Возвращает обьект каталог типов записей(Icatalog) property Log:variant Возвращает обьект выполняющий логирование сообщений(IMessWindow) property AdoCon:variant Возвращает обьект типа AdoDb.Connection для базы Function GetBaseVal (aSql: BSTR;aDef:varinat;): variant; Возвращает результат выполнения запроса aSql или aDef при его отсутсвии(см. скрипт Договара) Function GetBaseValPar (aSql: BSTR;aParams:variant;aDef:varinat;): variant; Возвращает результат выполнения запроса aSql с параметрами aParams или aDef при его отсутсвии(см. скрипт Договара) Обьект интерфейса IMessWindow Обьект выполняющий логирование сообщений procedure LogEvent(acap:string;atext:string;aElevel:integer) Выдает в окне логирования с заголовком acap, текст atext, где aElevel урвень сообщений. Обьект DELOKX.Catalog Основой системы является обьект DELOKX.Catalog, который существует в единственном экземпляре. Обьект имеет следующие методы и свойства: property Connection:variant Подключение к базе. property Tables:variant Возвращает обьект-перечислитель таблиц базы. Элементами его будут обьекты интерфейса типа IDTable. property Fields[apronum:variant]:variant Список описаний полей для типа apronum. Описания полей представлены как TClientDataSet, а данная функция возвращает ее свойство Data. Function getTypes(afather: Integer): variant; Возвращает список пар propnum=имя таблицы property.Types[aname: variant]: variant; Возвращает обьект интерфейса типа IDObjects (см. ниже) Пример: oorgs:=ocat.types['Организации']; или oorgs:=ocat.types[41]; property MySReport:variant Обьект генератора простых отчетов. Function Execute(const CommandText: WideString): OleVariant; 681450766 10 Аналог Connection.Execute Procedure Refresh; Обновить property ActiveConnection:variant Синоним Connection подключения к базе function myTypeInfo(apropnum: OleVariant): TDTypeRec; Возвращает подробное описание типа apropnum, где TDTypeRec = class propnum: integer; //номер типа pfather:integer; //номер родительского типа rusname : shortString; //имя engname : shortString; //english имя tablename:shortstring; //имя таблицы Proptip: integer; //номер типа haspropnum:boolean; //наличие поля PROPNUM в табдице propnumix:integer; //индекс поля PROPNUM в табдице cdsfields: TClientDataSet; //описание всех полей end; Обьект интерфейса IDObjects Представляет список обьектов некоторого типа. property Fields:variant Возвращает обьект-перечислитель описания полей. Доступ к полю возможен по номеру поля и по его русскому или английскому имени. Поскольку описания полей представлены как TClientDataSet, то сначала ищется нужная запись, а затем возвращается ее значение в виде Array(Array(‘Название’,…),Array(‘Тип’,…)…, Array(‘Видимое’,…)) property Objects:variant Возвращает динамический перечислитель (DynaCollection) обьектов. Доступ к обьекту возможен по номеру в коллекции и по ключу. function.Locate(avalues: OleVariant; const afields: WideString): OleVariant; Если удалось найти обьект у которого поля afields имеют значения avalues возвращается обьект интерфейса типа IDObject (см. ниже) иначе Unassigned property Name: OleVariant Возвращает название типа property.Value[aname: OleVariant]: OleVariant; Возвращает результат скриптовой функции aname. Обьект интерфейса IDObject Представляет обьект некоторого типа. property Fields:variant Возвращает обьект-перечислитель полей. Поля представлены как обьекты интерфейса IField. 681450766 11 procedure Post; Фиксирует в базе состояние обьекта. property.Value[aname: OleVariant]: OleVariant; Возвращает/устанавливает значение поля или скриптовой функции aname. Вместо этого свойства можно иметь доступ к полям/скриптовым функциям следующим образом: professia=oIspolnitel.Профессия Причем значения ссылочных полей при выборке заменяется на строку идентифицирующую соответствующую запись, а при вставке строка вносится в базу и заменяется корректной ссылкой. Обьект DELOKX.RecordsetProps Является оболочкой для обычного Adodb.Recordset и кроме свойств последнего имеет следующую обьектную начинку: property DataSet:long; Связывает даный обьект с его Delphi TAdoRecordset собратом. procedure Def4Defs; Устанавливает умалчиваемые значения для DataSet. property Fields:variant Возвращает обьект-перечислитель полей. Поля представлены как обьекты интерфейса IField. function IsReference(afname: OleVariant): WordBool; Определяет является ли поле afname ссылкой (ftReference) на другой обьект. procedure SetNewKey; Устанавливает значение ключа для новой записи DataSet. property FilterExpr: WideString Возвращает строку типа Ключ=Значение для данной записи. property keyNames: WideString Возвращает имена ключевых полей. property KeyValues: OleVariant Возвращает значения ключевых полей. property RusKeyNamesWideString Возвращает имена ключевых полей по русски. procedure SetVisibility; Устанавливает видимость полей записи DataSet в соответствии с описанием. function delete1: Integer; Удаляет текущую запись из базы. property Parent: OleVariant 681450766 12 Возвращает обьект типа DELOKX.Catalog. property OrderNames:WideString Возвращает имена полей для ORDER BY. function Conv2Sql(const asql: WideString): OleVariant; Руссифицирует asql замения имена полей в списке выборки на конструкции вида fieldname AS ‘русское имя’ function IsCollection(afname: OleVariant): OleVariant; Определяет является ли поле afname коллекцией function findfield(afname: OleVariant): OleVariant; Возвращает обьект интерфейса IField. property Editor1:Tform Позволяет устанавливать/определять тип формы для редактрования единичного обьекта. property Propnum:Variant Позволяет устанавливать/определять тип записей даного набора. Обьект интерфейса IField Является оболочкой для обычного Adodb.Field. Причем значения ссылочных полей при выборке заменяются на строку идентифицирующую соответствующую запись (функция GetPropName), а при вставке строка вносится в базу и заменяется корректной ссылкой. Кроме свойств Adodb.Field имеет следующую обьектную начинку: property _Field:Variant; Возвращает начальное Adodb.Field. function edit1(akey: Integer; finsert: WordBool; fthisrec: WordBool): WordBool; Вызывает встроенный или определенный пользавателем редактор свойств записи на которую ссылается данное поле. function select1(aFilter: OleVariant): OleVariant; Вызывает встроенный редактор списка значений данного поля. function GetPropName(aref: OleVariant): OleVariant; Возвращает название данного поля. В случае коллекции это будет список названий. property Propnum:Integer Возвращает иомер типа обьекта на который ссылается данное поле. property mvalue:Variant Позволяет выбирать изменять значения внутренего обьекта _Field. function IsCollection: WordBool; Определяет является ли поле коллекцией 681450766 13 function IsReference: WordBool; Определяет является ли поле ссылкой property EngName: WideString Возвращает имя поля базе. property Default: Variant Возвращает умалчиваемое значение поля. property mobj: Variant Возвращает обьект интерфейса типа IDObject для данного поля поля. property Count:Integer Возвращат число элементов в коллекции. property Item[Param1: OleVariant]:OleVariant Возвращат Param1 элемент коллекции. procedure Append(Param1: OleVariant); Добавление элемента в коллекцию. procedure Delete(Param1: Integer); Удаление элемента из коллекции. procedure Clear; Очистка коллекции.