<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:simpleType name="DocumentSheets_Events">
    <xs:restriction base="xs:string">      
      <xs:enumeration value="OnUpdateTemplate">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает при открытии обновленного документа и производит действия необходимые для перехода с предыдущей на текущую версию.
            Возвращаемое значение игнорируется.
            1й параметр - предыдущая версия документа.
            2й параметр - текущая версия документа.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnStart">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает при открытии документа.
            На момент выполнения события таблицы, листы и редакторы документа НЕ будут загружены.
            Возвращаемое значение игнорируется.
            Параметров нет.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnGetTemplateFileName">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает перед стандартным экспортом документа в Excel.
            Должно возвратить имя Excel-шаблона в относительной адресации.
            Параметров нет.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnGetExportFileName">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает перед стандартным экспортом документа в Excel.
            Должно возвратить имя файла с которым будет сохранен файл, после обработки меток.
            Если обработка события отсутствует, файл будет сохранен с именем документа.
            Параметров нет.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnGetDefaultExportDirectory">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает перед стандартным экспортом документа в Excel.
            Должно возвратить полный путь к директории куда будет сохранен файл, после обработки меток.
            Если обработка события отсутствует, файл будет сохранен в папку из которой был запущен клиент.
            Параметров нет.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnDataImport">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает после импорта данных из bxml в документ.
            1й параметр - имя загруженного файла.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnBeforeDocumentSave">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает перед сохранением документа.
            Событие дожно вернуть true (можно сохранять документ) или false (отменить сохранение документа).
            1й параметр - GUID сохраняемого документа (в т.ч. временный если в описании атрибута guid нет).
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnAfterStart">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает после открытия(загрузки) документа.
            Параметров нет.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnBeforeRenderDoc">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает перед рендерем(отрисовкой данных) документа.
            Параметров нет.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnGetProgramDescription">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает перед показом главного окна программы в вызове FormShow.
            Параметров нет.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  
  <xs:simpleType name="Sheet_Events">
    <xs:restriction base="xs:string">
      <xs:enumeration value="OnShow">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает перед отрисовкой листа в документе.
            Событие дожно вернуть true (показать лист после отрисовки) или false (скрыть лист после отрисовки).
            1й параметр - имя листа.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnActivateSheet">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает при выборе листа в качестве активного.
            1й параметр - имя листа.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnCreateTitle">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает перед отрисовкой заголовка к содержимому листа.
            Событие может вернуть произвольное значение заголовка закладки на которой размещается лист.
            1й параметр - имя листа.
            2й параметр - title листа из описания.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnCreateCaption">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает перед отрисовкой листа в документе.
            Событие может вернуть произвольное значение подписи к листу.
            1й параметр - имя листа.
            2й параметр - caption листа из описания.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="GridAndFieldsSheet_Events">
    <xs:restriction base="xs:string">
      <xs:enumeration value="OnSave">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает после сохранения данных в листе.
            1й параметр - имя листа.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="FieldsSheet_Events">
    <xs:restriction base="xs:string">
      <xs:enumeration value="OnCommonGetIsReadonly">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает при проверке допустимости ввода в редактор. И перекрывает событие OnGetIsReadOnly поля FieldsSheet.
            Устанавливает доступность для всех полей редактирования.
            Должно вернуть true (только на чтение) или false (можно редактировать).
            Если редактор поля уже доступен только для чтения, то событие не будет вызваться.
            1й параметр - имя dataSet(таблицы).
            2й параметр - имя поля.
            3й параметр - текщее значение поля.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnCommonGetIsRequired">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает при проверке допустимости ввода в редактор. И перекрывает событие OnGetIsRequired поля FieldsSheet.
            Устанавливает обязательность для всех полей.
            Должно вернуть true (только на чтение) или false (можно редактировать).
            Если редактор поля уже доступен только для чтения, то событие не будет вызваться.
            1й параметр - имя dataSet(таблицы).
            2й параметр - имя поля.
            3й параметр - текщее значение поля.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnCommonGetIsVisible">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает при прорисовке списка полей. И перекрывает событие OnGetIsVisible поля FieldsSheet.
            Устанавливает видимость для всех полей. Для визуального элемента типа TPanel не работает.
            Должно вернуть true (показывать) или false (спрятать).
            Если редактор поля уже доступен только для чтения, то событие не будет вызваться.
            1й параметр - имя dataSet(таблицы).
            2й параметр - имя поля.
            3й параметр - текщее значение поля.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnEditField">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает при редактировании поля (изменении значения, обычно возникает при потери фокуса, зависит от контрола).
            Должно вернуть true (изменить значение поля) или false (не изменять).
            Если редактор поля уже доступен только для чтения, то событие не будет вызваться.
            1й параметр - имя поля.
            2й параметр - новое значение поля.
            3й параметр - старое значение поля.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnCheck">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие срабатывает при проверке значений (обычно при потере фокуса).
            Должно вернуть текст ошибки или пусто.
            1й параметр - имя поля.
            2й параметр - отображаемое значение в контроле.
            3й параметр - сообщение об ошибке.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  
  <xs:simpleType name="GridSheet_Events">
    <xs:restriction base="xs:string">
      <xs:enumeration value="OnMerge">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает при сравнении соседних значений в графе с включенной опцией mergeCells при операции отрисовки.
            Должно вернуть true (объединить ячейки) или false (не объединять ячейки).
            1й параметр - имя листа.
            2й параметр - индекс 1 записи (верхней строки)
            3й параметр - индекс 2 записи (нижней строки)
            4й параметр - видимый индекс графы 
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnSort">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает при сортировке соседних значений в графе установленным атрибутом sortIndex.
            Должно вернуть 1 (значение 1 больше значения 2), 0 (значения равны) или -1 (значение 2 больше значения 1).
            1й параметр - имя листа.
            2й параметр - индекс 1 записи (верхней строки)
            3й параметр - индекс 2 записи (нижней строки)
            4й параметр - видимый индекс графы
            5й- параметр - значение 1
            6й- параметр - значение 2
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnChangeSheet">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает при активации/деактивации листа и при изменении данных на листе.
            1й параметр - имя листа.
            2й параметр - флаг активации листа. true - лист активируется/активен, false - лист деактивируется/неактивен.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnGetFormat">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает при запросе параметров отрисовки ячеек на листе.
            Должно вернуть массив из 6 элементов (любое значение может быть заменено на null и тогда оно будет взято по умолчанию).
            Элементы возвращаемого массива:
            1й элемент - величина шрифта.
            2й элемент - маска стиля.
            3й элемент - цвет шрифта.
            4й элемент - цвет фона (ячейки).
            5й элемент - идентификатор картинки из раздела images для отображения в ячейке.
            6й элемент - горизонтальное выравнивание | вертикальное выравнивание.
            Параметры:
            1й параметр - имя листа.
            2й параметр - индекс записи (строки) из источника табличного листа
            3й параметр - индекс видимой графы.
            4й параметр - имя поля графы.
            5й параметр - уровень записи.
            6й параметр - индекс группировки графы из атрибута groupIndex.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnCalc">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает при запросе параметров отрисовки ячеек на листе.
            Должно вернуть либо массив из 2 элементов, либо строку "CHILDS" (в этом случае автоматически сгенерируется 
            массив зависимых ячеек и будет производиться их суммирование).
            Элементы возвращаемого массива:
            1й элемент - либо название стандартной операции (SUM, MUL, SUB, AVG), либо название пользовательской функции, используемой для расчета значения.
            2й элемент - двумерный массив координат ячеек текущего листа требующихся для расчета.
            Параметры:
            1й параметр - имя листа.
            2й параметр - индекс записи (строки) из источника табличного листа.
            3й параметр - индекс видимой графы.
            4й параметр - имя поля графы.
            5й параметр - уровень записи.
            6й параметр - индекс группировки графы из атрибута groupIndex.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnGetCellHint">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает при получении параметров подсказки для ячеек на листе.
            Должно вернуть строку.
            Параметры:
            1й параметр - имя листа.
            2й параметр - индекс записи (строки) из источника табличного листа.
            3й параметр - индекс видимой графы.
            4й параметр - имя поля графы.
            5й параметр - уровень записи.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnClick">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает клике на таблицу листа. 
            Правило должно вернуть true (клик обработан) или false (клик не обработан).
            Параметры:
            1й параметр - имя листа.
            2й параметр - индекс записи (строки) из источника табличного листа.
            3й параметр - индекс видимой графы.
            4й параметр - имя поля графы.
            5й параметр - уровень записи.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnEditCell">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает после редактирования ячейки. 
            Правило должно вернуть true (текущее значение ячейки будет записано в таблицу) или false (в ячейку будет возвращено предыдущее значение).
            Параметры:
            1й параметр - имя листа.
            2й параметр - индекс записи (строки) из источника табличного листа.
            3й параметр - индекс видимой графы.
            4й параметр - имя поля графы.
            5й параметр - уровень записи.
            6й параметр - предыдущее значение ячейки.
            7й параметр - текущее значение ячейки.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnEditingCell">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает при попытке редактирования ячейки. 
            Правило должно вернуть true (можно редактировать ячейку) или false (редактирование запрещено).
            Параметры:
            1й параметр - имя листа.
            2й параметр - индекс записи (строки) из источника табличного листа.
            3й параметр - индекс видимой графы.
            4й параметр - имя поля графы.
            5й параметр - уровень записи.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnCanAdd">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает при проверке доступность пункта меню "Добавить строку". 
            Правило должно вернуть true (пункт меню доступен) или false (пункт меню недоступен).
            Параметры:
            1й параметр - имя листа.
            2й параметр - индекс записи (строки) из источника табличного листа.
            3й параметр - индекс видимой графы.
            4й параметр - имя поля графы.
            5й параметр - уровень записи.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnCanEdit">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает при проверке доступность пункта меню "Редактировать". 
            Правило должно вернуть true (пункт меню доступен) или false (пункт меню недоступен).
            Параметры:
            1й параметр - имя листа.
            2й параметр - индекс записи (строки) из источника табличного листа.
            3й параметр - индекс видимой графы.
            4й параметр - имя поля графы.
            5й параметр - уровень записи.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnCanDelete">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает при проверке доступность пункта меню "Удалить строку". 
            Правило должно вернуть true (пункт меню доступен) или false (пункт меню недоступен).
            Параметры:
            1й параметр - имя листа.
            2й параметр - индекс записи (строки) из источника табличного листа.
            3й параметр - индекс видимой графы.
            4й параметр - имя поля графы.
            5й параметр - уровень записи.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnShowEditorInList">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает при проверке доступность подпункта меню из "Добавить", который вызывает редактор на добавление. 
            Правило должно вернуть true (пункт меню доступен) или false (пункт меню недоступен).
            Параметры:
            1й параметр - имя листа.
            2й параметр - индекс записи (строки) из источника табличного листа.
            3й параметр - индекс видимой графы.
            4й параметр - имя поля графы.
            5й параметр - уровень записи.
            6й параметр - идентификатор редактора.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnDenyMultipleRowsRefresh">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает при проверке необходимости обновления всего листа, если отредактирование значение на листе отображается в нескольких местах. 
            Правило должно вернуть true (надо обновить весь лист) или false (будут обновлены только отредактированные значения).
            Параметры:
            1й параметр - имя листа.
            2й параметр - имя таблицы, значение которой встречается несколько  раз.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnGetCallEditorID">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает при попытке получения идентификатора редактора для редактирования текущей ячейки. 
            Правило должно вернуть строку с идентификатором редактора.
            Параметры:
            1й параметр - имя листа.
            2й параметр - индекс записи (строки) из источника табличного листа.
            3й параметр - индекс видимой графы.
            4й параметр - имя поля графы.
            5й параметр - уровень записи.
            6й параметр - имя таблицы, для которой определяется редактор.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnGetIsReadOnly">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает при каждой загрузке(рендере) или перерисовке таблицы.
            Правило должно вернуть строку флаг, только для чтения или нет(true - только для чтения).
            Параметры:
            1й параметр - флаг, текщуего атрибута ReadOnly.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="OnGetSelectSQL">
        <xs:annotation>
          <xs:documentation xml:lang="ru-ru">
            Событие наступает при попытке получения SQL-запроса для наполнения/обновления табличного источника данных листа. 
            Правило должно вернуть строку с SQL-запросом.
            Параметры:
            1й параметр - имя листа.
            2й параметр - массив имен полей, который должны существовать в запросе.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
  
</xs:schema>
