Работа с интерфейсами

Функции получения метаданных

Все метаданные хранятся в переменной app типа IMainApp.

Функции получения таблиц

Название Описание
tablesInfo getTableInfo(int idTable); Получает таблицу по ее id
tablesInfo getTableInfoOfNameMap(string nameMap); Получает таблицу по пользовательскому названию
tablesInfo getTableInfoOfNameDB(string nameDB); Получение таблицы по имени в базе
tablesInfo getTableInfoOfNameDB(string nameDb, string schema); Получение таблицы по имени в базе и имени схемы
List<tablesInfo> getTableOfType(int idType); Получение спика таблиц определенного типа
List<tablesInfo> tables_info { get; } Содержит полный список таблиц

Функции получения полей таблицы

Название Описание
List<fieldInfo> field_info { get; } Полный список колонок во всех таблицах
fieldInfo getFieldInfo(int idField); Получить колонку по id
List<fieldInfo> getFieldInfoTable(int idTable); Получить список колонок в таблице

Функции работы с файлами

Название Описание
List<photoInfo> photo_info { get; } Список таблиц с файлами
photoInfo getPhotoInfo(int idTable); Получить информацию о связанной таблицы с файлами

Функции управления правами пользователей

Название Описание
userInfo user_info { get; } Информация о текущем пользователе
user_right getTableRight(int idTable); Получение прав на таблицу
List<user_right> tables_right { get; } Список прав на таблицы
bool getReadTable(int idTable); Проверка прав на чтение таблицы
bool getWriteTable(int idTable); Проверка прав на запись в таблицу

Параметры с типами

Название Описание
List<tipTable> tip_table { get; } Список типов таблиц
List<tipGeom> tip_geom { get; } Список типов геометрии
List<tipData> tip_data { get; } Список типов колонок
tipTable getTipTable(int idTip); Получить тип таблицы
tipGeom getTipGeom(int idTip); Получить тип геометрии
tipData getTipField(int idTip); Получить тип колонок

Переменные для работы с БД и картой

Название Описание
string ipString { get; } Ip адрес сервера
string portString { get; } Порт сервера
string dbString { get; } База данных
string scheme { get; } Схема хранения метаданных
List<string> schems { get; } Список схем используемых в БД
ISQLCommand SqlWork(); Функция возвращающий коннект к базе
string srid { get; } Идентификатор проекции карты
string path_string { get; } Путь до каталога с конфигурацией
string setting_file { get; } Название файла конфигурации

Функции работы с картой

Название Описание
IRelation relation { get; } Интерфейс, хранящий список соответствия наименование слоя в системе и наименование на карте
void SetVisableLayer(int idTable, bool visble); Устанавливание свойства видимости для объекта
AxMapLIb mapLib { get; } Объект карты

 Интерфейс IWorkClass

Переменная work в основном интерфейсе содержит функции работы с визуальным интерфейсом программы с помощью нее можно добавлять, удалять, а также заменять элементы в программе.

Интерфейс IWorkClass состоит из функций:

public interface IWorkClass
    {
        IOpenForms OpenForm { get; }
        Forms.ImainFrm MainForm { get; }
        Guid AddSpoofingTableOfObjects(tablesInfo table,
              Func func);
        void RemoveSpoofingTableOfObjects(Guid guid);
        Guid AddSpoofingAttributesOfObject(tablesInfo table,
              Func func);
        void RemoveSpoofingAttributesOfObject(Guid guid);
        void AddMenuInTable(int idTable, Func menuItem);
        void RemoveMenuInTable(Func menuItem);
        void AddMenuForObject(
              int idTable, Func menuItem, bool inTable = true,
              inAttribute = true);
        void RemoveMenuForObject(Func menuItem);
        void ExportToExcel(List data, List Types);
    }

OpenForm используется для открытия форм, таких как список объектов, атрибутика объекта, история.

Подмена окна списка объектов

Для подмены формы списка объектов используются функции AddSpoofingTableOfObjects и RemoveSpoofingTableOfObjects.

AddSpoofingTableOfObjects принимает атрибуты таблицы (table) и функцию, возвращающую интерфейс (func), и возвращает Guid,  по которому можно убрать эту подмену с помощью функции RemoveSpoofingTableOfObjects.

Пример создания:

tablesInfo table = Program.App.getTableInfoOfNameDB(«table», «data»);
            Program.Work. AddSpoofingTableOfObjects(table, 
                () => new UcTableObjects(table.nameSheme, table.nameDB));

UcTableObjects содержит реализацию интерфейса UserControls.IUserControlMain

Подмена формы атрибутики объекта

Для подмены формы атрибутики объекта используются функции AddAttributeObject и RemoveAttributeObject. Подмена атрибутики объекта идентична подмене списка объекта.

Добавить меню в список объектов и атрибутику объектов

Меню добавляется командами AddMenuInTable и AddMenuForObject, а удаляется командой RemoveMenuForObject.

Пример добавления меню в таблицу с id равным 17:

 work.AddMenuInTable(17,
                () =>
                {
                    var Menu = new ToolStripMenuItem(«Меню»);
                    Menu.Tag = 17;
                    var submenu = new ToolStripMenuItem(«Подменю»);
                    submenu.Tag = Menu;
                    submenu.Click += new EventHandler(submenu_Click);
                    Menu.DropDownItems.Add(submenu);
                    return Menu;
                });

Чтобы получить текущий объект при событии клика, нужно обратится к основной форме окна.

Пример:

 void submenu_Click(object sender, EventArgs e)
        {
            var temp = ((ToolStripMenuItem)sender).Tag as ToolStripMenuItem;
            int idObj;
            if ((idObj = Convert.ToInt32(temp.Owner.Parent.Tag)) < 0)
                return;

            // Мы получили idObj в котором содержится id текущего объекта
        }

Функция ExportToExcel позволяет быстро экспортировать любые данные в окно Excel. Функция принимает тело данных (data) в которой должен находиться первой строкой заголовок, а затем все остальные строки.

Интерфейс IOpenForms

public interface IOpenForms
    {
        void OpenTableObject(Interfaces.tablesInfo table, Form owner);
        int? OpenTableObject(Interfaces.tablesInfo Table, int selected);

        void ShowAttributeObject(
              Interfaces.tablesInfo table, int idObject, bool isNew, Form owner,
              Action ActionDResult = null);

        DialogResult ShowDialogAttributeObject(
              Interfaces.tablesInfo table, int idObject, bool isNew, Form owner);

        void HistoryFrm(int idTable, int idObj, Form owner);
        void HistoryFrm(int idTable, Form owner);
        void HistoryFrm(string userName, Form owner);

        void SetFormOwner(Form frm);

        string ProcOpen(string prefix = ««);
        void ProcClose(string key);
    }

Открытия формы списка объектов

Для открытия формы нужно использовать функции OpenTableObject. Функция реализована в двух вариантах:

  1. Открывает окно списка объектов для просмотра
  2. Открывает окно списка объектов для выбора объекта

Открытия формы атрибутов объекта

Для открытия формы списка атрибутов объекта используйте функции ShowAttributeObject и ShowDialogAttributeObject в которых содержится сама таблица(table), ID объекта(idObject), признак нового объекта (isNew), функция, выполняемая при закрытии окна (ActionDResult).

Открытия формы истории

Для открытия формы истории используется функции HistoryFrm. Она может показать историю пользователя, таблицы или конкретного объекта.

Установить главное окно как родителя для формы

Для этого используйте функцию SetFormOwner.

Отобразить окно «Загрузка»

Используйте функции ProcOpen и ProcClose для отображения и скрытия окна «Загрузки». Функция ProcOpen отображает окно и при этом возвращает уникальный ключ для скрытия формы, который надо передать в функции ProcClose.

Plug_1

Рисунок 1