Табличное представление данных в виде самостоятельной таблицы, в виде выпадающего справочника и в виде поля ввода «детали» в случае окна ввода типа «master-detail».
—-
<view view-attributes>
[<toolbar>
...
<toolbar/>]
[<columns>
...
<columns/>]
[<edit>
...
<edit/>]
[<statusbar>
...
<statusbar/>]
<view/>
| Название | Тип | Описание |
|---|---|---|
| acl-id | @acl-id |
| Название | Тип | Описание |
|---|---|---|
| current-row | n | +n | -n | top | bottom | next | prev | center | +center | -center | При считывании возвращает номер текущей строки. При записи устанавливает курсор на запись с порядковым номером n. Кроме этого можно использовать относительное позиционирование («top», «bottom», …), а также позиционирование методом двоичного поиска с помощью »+center»/»-center». |
| current-row-by-id | value | При записи устанавливает курсор на запись, в которой поле view.id-field имеет значение value. |
| current-row-by-name | value | При записи ищет и устанавливает курсор на первую запись, в которой поле view.name-field имеет значение value. |
| current-row-by-field | fieldName:value | При записи ищет и устанавливает курсор на первую запись, в которой значение произвольного поля fieldName начинается (в отличие от прочих current-row-by-*) с value. |
| current-row-next | boolean | При записи true устанавливается на следующую строку, удовлетворяющую предыдущему критерию поиска (предыдущим значениям current-row-by-name, current-row-by-field). поиска. |
| find-row | fieldName:value | При записи ищет и устанавливает курсор на первую запись, в которой произвольное поле fieldName имеет значение value. Отличие от current-row-by-field - в проверке на точное совпадении (регистр игнорируется). |
| cursor-to-first-record | boolean | При true курсор всегда после обновления (view.refresh=true) будет устанавливаться на первую строку. |
| Название | Тип | Описание |
|---|---|---|
| row-height | number | Высота строк |
| highlightbar | row | column | no | Вид строки подсветки. |
| search-position | top | bottom | Положение строки поиска |
| checklist | boolean | Первая колонка в виде checkbox. |
| header-visible | boolean | Флаг показа заголовков колонок view. |
| resize-mode | off | all | Поведение прочих столбцов при изменении размеров одного. - "off" - прочие столбцы не реагируют. Таблица занимает места столько, сколько необходимо. Есть scroll-bar. Применяется при обычном режиме. - "all" - все столбцы справа изменяются пропорционально. Таблица занимает все видимое место. Scroll-bar отсутствует. Применяется при режиме выпадающего справочника. |
| selection-mode | single | sInterval | mInterval | Режим отметки записей. "single" - в один момент времени можно отметить только одну запись. "sInterval" - можно отметить одну сплошную группу записей. "mInterval" - можно отметить несколько сплошных групп записей. По умолчанию selection-mode=«single». |
| grid-color | color-name | Цвет сетки. |
| grid-mode | off | on | vertical | horizontal | Флаг показа сетки. |
| color-selection | color-name | Установка цвета переднего плана для выбранной строки |
| background-color-selection | color-name | Установка цвета заднего плана для выбранной строки |
| scrollbar-* | Семейство атрибутов, управляющих представением скролабара. Содержит атрибуты: scrollbar-base-color - цвет (единый) для всех элементов скролбара, scrollbar-arrow-color - цвет для кнопок, scrollbar-thumb-color - цвет для «бегунка», scrollbar-thumb-highlight-color - цвет для левой и верхней границ «бегунка», scrollbar-thumb-lightshadow-color - цвет для правой и нижней границ «бегунка» (предполагается, что она немного светлее, чем scrollbar-thumb-darkshadow-color), scrollbar-thumb-darkshadow-color - цвет для тени справа и снизу (предполагается, что она немного темнее, чем scrollbar-thumb-lightshadow-color), scrollbar-track-color - цвет для полосы, scrollbar-track-highlight-color - цвет для полосы прокрутки в момент щелчка по ней (цвет только данной части полосы). |
|
| mode | Ref | DDRef | Выбор визуального режима отображения справочника: - Ref - обычный вид, - DDRef - вид выпадающего справочника (отключены панель инструментов, заголовки колонок, статусбар и т.д.). |
| toolbar-visible | boolean | Управление видимостью панели инструментов view. |
| statusbar-visible | boolean | |
| resizable | boolean | Флаг разрешения пользователю изменять ширины колонок. |
| manage-toolbar | boolean | Разрешение/запрещение view самостоятельно управлять доступностью кнопок панели инструментов. Рекомендуется использовать (отключать) в ситуациях, когда необходимо «вручную» управлять кнопками. |
| Название | Тип | Описание |
|---|---|---|
| sort | string | Дает команду отсортировать по колонке «column.name» |
| filter-method | colNum:colValue | Фильтруем по колонке N colNum, в которой должно быть colValue. |
| remove-record | number | Удалить строку с порядковым номером n. |
| refresh | 0 | 1 | 2 | 3 | Обновить данные. 0 - просто обновить представление таблицы на экране 1 - обновить текущую выбранную строку таблицы 2 - обновить данные с помощью повторного выполнения SQL запроса 3 - обновить только добавленные или измененные записи таблицы. |
| focus | boolean | Команда передачи фокуса ввода в поле ввода. |
| start-edit | boolean | Команда вводит текущую ячейку в состояние редактирования. |
| stop-edit | boolean | Команда остановить редактирование в ячейке с сохранением данных. |
| rebuild | boolean | @rebuild |
| freeze | number | «Заморозить» первые n колонок из числа видимых. |
| call-add | boolean | Вызов внутреннего метода добавления записи. Обычно это действие выполняется через панель инструментов view. |
| call-edit | boolean | Вызов внутреннего метода редактирования текущей записи. Обычно это действие выполняется через панель инструментов view. |
| call-delete | boolean | Вызов внутреннего метода удаления текущей записи. Обычно это действие выполняется через панель инструментов view. |
| call-refresh | boolean | Вызов внутреннего метода обновления содержимого view. Обычно это действие выполняется через панель инструментов view. |
| remove-row | current | all | n | current и true - синонимы, n - номер удаляемой строки |
| clear-selection | boolean | Очищает содержимое выделенных ячеек. |
| update-total | boolean | Пересчитывает итоговые суммы. |
| Название | Тип | Описание |
|---|---|---|
| sortable | boolean | Флаг разрешения сортировки щелчком по названию колонки |
| editable | boolean | Флаг разрешения редактирования ячеек прямо в ячейках. Поля ввода автоматически берутся из <edit>. По умолчанию, editable=«false». Подразумевается, что при необходимости дать возможность редактирования напрямую в таблице атрибут view.editable по умолчанию равен false, а атрибутами column.editable регулируется разрешение на редактирование. |
| reorderable | boolean | @reorderable |
| cell-margin | number | @cell-margin |
| search-visible | boolean | Видимость строки поиска |
| popup | boolean | Флаг управления поведением при нажатии ESC. Если popup=true, то по ESC справочник закрывается. |
| memo-popup | @memo-popup | |
| search-label-visible | boolean | Видимость метки возле строки поиска. Там отображается имя поля, по которому выполняется поиск. |
| nextmatch-button-visible | boolean | Видимость кнопки «Искать далее» |
| name-field | string | Имя поля с названием. Используется для выпадающего справочника, когда требуется записать выбранное название в поле ввода, а полей в выпадающем справочнике много. |
| parent-id-field | string | Имя поля, содержащего ссылку на родительскую запись. При этом запрос, передаваемый в view.sql для _TableEdit должен содержать параметр, типа, select … where field_x=@value. |
| slave | string | Cписок подчиненных связанных view. При view.mode!=«Ref» список игнорируется. Пример: slave=«companyView, mView, view2» |
| slave-parameters | string | Oписание имен параметров и имен полей, чьи значения будут передаваться в подчиненные (slave) view. Подразумевается, что соответствующие имена параметров будут использоваться в запросе в подчиненных view в виде »@par1». Пример: slave-parameters=«par1:field1, par2:field2» |
| refresh-oncreated | boolean | По умолчанию «true». Отключать атоматическое обновление при создании объекта. Полезно при параметризованном sql. |
| totalable | boolean | Подсчитываются ли итоги. По умолчанию view.totalable=«true». |
| auto-total | boolean | Управляет автогенерацией total-* атрибутов (не путать с view.totalable, который отключает показ всех явно и неявно заданных total-* атрибутов). |
| title | string | Заголовок объекта. Атрибут имеет силу только при создании объекта. Изменение значения атрибута после создания объекта не будет иметь эффекта. Имеет дополнительные атрибуты: title-before, title-after, title-visible. |
| empty-record | boolean | Включает/отключает пустую запись для ручной корректировки таблицы. |
| Название | Тип | Описание |
|---|---|---|
| last-op | boolean | Возвращает флаг успешного выполнения команды. Пока работает в связке с view.find-row |
| is-footered | boolean | Возвращает флаг существования футера в данных. |
| footer-height | number | Возвращает высоту футера в строках. |
| mouse-row | number | Возвращает номер строки, над которой находится курсор мыши. |
| mouse-col | number | Возвращает номер колонки, над которой находится курсор мыши. |
| row-count | number | Количество строк в таблице. |
| current-col | number | Возвращает номер текущей колонки. |
| current-col-name | string | Возвращает имя текущей колонки. |
| Название | Тип | Описание |
|---|---|---|
| onBeforeCellEdit | code | Возникает перед входом в редактирование ячейки. Правила описания см. (Описание событий в ApplicationXML). |
| onBeforeCellSave | code | Возникает перед сохранением изменений в ячейку. Если вернуть true, то изменения будут сохранены. Если - false, то редактирование будет продолжено. Правила описания см. (Описание событий в ApplicationXML). Указатель this указывает на поле ввода. |
| onAfterCellSave | code | Возникает после сохранения изменений в ячейку. Правила описания см. (Описание событий в ApplicationXML). |
| onColumnSelected | code | Возникает после смены колонки. Правила описания см. (Описание событий в ApplicationXML). |
| onBeforeDelete | code | Выполняется после утвердительного ответа на вопрос, но перед непосредственным удалением. От возвращенного им значения зависит дальнейший процесс удаления. Правила описания см. (Описание событий в ApplicationXML). |
| onAfterDelete | code | Выполняется после успешного удаления записи. Правила описания см. (Описание событий в ApplicationXML). |
| onSelected | code | Описание действий для события, возникающего при выборе элемента из множества доступных (например, в выпадающем списке). Правила описания см. (Описание событий в ApplicationXML). Часто onSelected является синонимом для onAction. |
| onAction | code | Описание действий для события, типа, двойной щелчок мыши по объекту или нажатие Enter. Значение по умолчанию view.onAction=«this.call-edit=true» (открывается окно для редактирования записи) Правила описания см. (Описание событий в ApplicationXML). |
| onEmptyAction | code | Описание действий для события, возникающего при двойном щелчке на пустом пространстве view. Значение по умолчанию view.onEmptyAction=«this.call-add=true» (открывается окно для добавления) Правила описания см. (Описание событий в ApplicationXML). |
| onEmptyClick | code | Описание действий для события, возникающего при одинарном щелчке на пустом пространстве view. Правила описания см. (Описание событий в ApplicationXML). |
| onKeyPress | code | @onkeypress Правила описания см. (Описание событий в ApplicationXML). |
| onCreated | code | Описание действий для события, возникающего единожды, после создания объекта. Правила описания см. (Описание событий в ApplicationXML). |
| onAddedd | code | @onaddedd Правила описания см. (Описание событий в ApplicationXML). |
| onBeforeRefresh | code | Описание действий для события, возникающего непосредственно перед обновлением данных во (т.е. перед выполнением команды refresh=«true»). Правила описания см. (Описание событий в ApplicationXML). |
| onAfterRefresh | code | Описание действий для события, возникающего сразу после обновления данных во (т.е. после выполнения команды refresh=«true»). Правила описания см. (Описание событий в ApplicationXML). |
| onBeforeEdit | code | Описание действий для события, возникающего непосредственно перед началом редактирования в ячейке. Правила описания см. (Описание событий в ApplicationXML). |
| onAfterEdit | code | Описание действий для события, возникающего сразу после успешного окончания редактирования в ячейке. Правила описания см. (Описание событий в ApplicationXML). |
| onCancelEdit | code | Описание действий для события, возникающего сразу после отказа от сохранения изменений в ячейке. Правила описания см. (Описание событий в ApplicationXML). |
| onClick | code | Описание действий для события, возникающего при щелчке мышью на объекте. Правила описания см. (Описание событий в ApplicationXML). |
| onMouseOver | code | Описание действий для события, возникающего при наведении курсора мыши на объект. Правила описания см. (Описание событий в ApplicationXML). |
| onMouseOut | code | Описание действий для события, возникающего при выходе курсора мыши из зоны объекта. Правила описания см. (Описание событий в ApplicationXML). |
| onВeforeSort | code | Описание действий для события, возникающего перед сортировкой данных. Правила описания см. (Описание событий в ApplicationXML). |
| onAfterSort | code | Описание действий для события, возникающего после сортировки данных. Правила описания см. (Описание событий в ApplicationXML). |
| Название | Тип | Описание |
|---|---|---|
| id | id_name | Уникальный, в рамках приложения, идентификатор объекта. Доступ к объекту с помощью AppScript выполняется через этот идентификатор. Если id не задан, то интерпретатор автоматически заполнит его некоторым случайным в момент запуска приложения. В этом случае appxml-программист лишается возможности обращаться к объекту. |
| name | string | @name |
| visible | boolean | Видимость объекта |
| width | number | Ширина объекта. |
| as | date | datetime | year | memo | checkbox | enum | logical | string | hidden | icon | money | link | code | quote | percent | imagepath:icon_scale | iconpath:icon_scale | enum (перечислимый) - используется в случаях, когда поле (колонка) содержит конечное число значений и эти значения необходимо расшифровывать. Например, поле «Пол» - мужской/женский. Вместо слов колонка обычно содержит коды: 0 или 1. Вместо них нужно показать пользователю: «М» или «Ж». Каждую подстановку описываем отдельным тэгом в следующем формате: <enum [value=«nnn»] text=[«user_string» | «$$value»] /> money - денежное форматирование, может применяться к данным типа «currency» и к чисто числовым данным. code - показ числового значения с лидирующими нулями. quote - вывод числового значения с пятью знаками после запятой. Причем может применяться к данным типа «currency» и к чисто числовым данным. percent - вывод числового значения со знаком »%» в конце. imagepath - путь к пиктограмме. icon-scale - масштаб пиктограммы. |
| mask | mask | Значение маски должно записываться в java-формате (типа #,##0.00). Она имеет приоритет над значением as. Java-формат записи маски: 0 - цифра, не значащие нули показываются # - цифра, не значащие нули не показываются . - десятичная точка, в шаблоне она всегда пишется как точка, независимо от того какой символ (точка или запятая) используется для форматирования - - знак минус , - разделитель групп разрядов, те же правила что и с точкой E - разделитель мантисы и экспоненты в научной нотации (подробно и с примерами: http://base.vingrad.ru/view/2892-Formatirovanie-chisel-dat-i-teksta) |
| header-* | Cемейство визуальных атрибутов для заголовка колонки. Можно динамически менять свойства заголовка колонки. | |
| editable | boolean | Флаг редактируемости конкретной колонки. Поле ввода автоматически вытаскивается из <edit>. По умолчанию, editable=«false». Поддержка «expr:» в column.editable |
| totalable | boolean | Подсчитывать итог по данной колонке или нет. |
| total-type | sum | count | count_empty | count_non_empty | function | count_true | Тип агрегативной функции. sum - подсчитывается сумма значений в столбце. Поддерживаются столбцы с числовой информацией и с информацией типа «Сумма с валютой» count - подсчитывается общее кол-во строк. count_empty - подсчитывается кол-во строк, содержащих пустое значение в данном столбце count_true - подсчитывается кол-во строк, содержащих значение true в данном столбце count_non_empty - подсчитывается кол-во строк, содержащих непустое значение в данном столбце. function - конкретное имя функции (AppXML или Java), которая будет вызываться для каждого значения в столбце. В функцию будет передано номер строки и значение ячейки. Функция должна вернуть числовое значение (для каждой полученного значения ячейки), которое будет накапливаться и в конце обработки всех строк будет выведено в статусбар. Автоматически подсчитываются (не «count*») реквизиты с name == «sum» или начинающимся на «sum_» или «calc_», или оканчивающимся на «_sum» или «_calc». Если потребуется отключить подсчет по данному реквизиту, укажите column.totalable=«false». По умолчанию подсчитывается кол-во записей и выводится с текстом «Общее кол-во:». |
| total-text | string | Пользовательское название итога. Если не задано, используется column.text. |
| value-visible | boolean | Флаг видимости значения в ячейке. |
| icon-* | string | Семейство атрибутов для показа пиктограммы в ячейке. Все атрибуты поддерживают использование «expr:». |
| selected-background-color | color | Цвет строки подсветки текущей колонки. |
| background-color | color | Цвет фона текущей колонки. |
| selected-color | color | Цвет текст в текущей колонке в выделенной строке. |
| color | color | Цвет текста текущей колонки. |
| button-text | string | Текст кнопки в ячейке. По умолчанию - «…» |
| button-visible | boolean | Флаг управления видимостью кнопки в ячейке. |
| button-text-position | string | Позиция текста в кнопке в ячейке. |
| button-icon | string | Иконка кнопки в ячейке. |
| value | string | Если атрибут указан, то в ячейке будет показано значение, указанное в нем. |
| value-before | string | Текст перед значением в колонке. Поддерживается выражение «expr:(…)« |
| value-after | string | Текст после значения в колонке. Поддерживается выражение «expr:(…)« |
| selected | boolean | Установка/снятие курсора на/с заданную колонку в текущей строке. |
| visible | boolean | Управление видимостью колонки. |
| length | number | Длина поля для column.as=code |
| Название | Тип | Описание |
|---|---|---|
| text | string | Пользовательский текст. Текст может содержать символ переноса строки '\n', а также может быть представленным в HTML-формате. Если текст содержит спецсимволы ('<', '&' и другие, с точки зрения XML), то следует вместо атрибута text использовать одноименный тэг <text>, вложенный в текущий. Текст следует записать следующим образом (на примере описания тэга <string>): <string id="name">
<text>
<![CDATA[
<html><font color="blue">User name</html>
]]>
</text>
</string>
|
| align | string | Выравнивание текста в колонке по горизонтали. |
| valign | string | Выравнивание текста в колонке по вертикали. |
| Название | Тип | Описание |
|---|---|---|
| footer-fn | sum | average | sum - подсчитывает сумму по колонке и показывает в футере таблицы (последняя строка). average - подсчитывает среднее арифметическое по колонке и показывает в футере таблицы (последняя строка). |
| sortable | true| false | управляет возможностью сортировать по данной колонке. |
| Название | Тип | Описание |
|---|---|---|
| onAction | code | Описание действий для события, типа, двойной щелчок мыши по объекту или нажатие Enter. Правила описания см. (Описание событий в ApplicationXML). |
| onClick | code | Описание действий для события, возникающего при щелчке мышью на объекте. Правила описания см. (Описание событий в ApplicationXML). |
| onMouseOver | code | Описание действий для события, возникающего при наведении курсора мыши на объект. Правила описания см. (Описание событий в ApplicationXML). |
| onMouseOut | code | Описание действий для события, возникающего при выходе курсора мыши из зоны объекта. Правила описания см. (Описание событий в ApplicationXML). |
| button-onAction | code | Описание действий для события, возникающего при клике по кнопке внутри ячейки. Правила описания см. (Описание событий в ApplicationXML). |
Колонки описываются с помощью тэга <column> Тэг <nodata> показывает текст при отсутствии данных. Поддерживает атрибуты <label>.
Примечание! Тэг <view> уже имеет предопределенный <toolbar>; с некоторым набором кнопок. Для изменения описания кнопок следует описать <toolbaritem> с id изменяемой кнопки.
Зарезервированные id кнопок: addBtn, editBtn, delBtn, refreshBtn.
Зарезервированные id сепараторов кнопок:separatorForRefreshBtn, separatorForUserBtn.
Например, <toolbaritem id=«editBtn» text=«Теперь будет другой текст» /> Все прочие <toolbaritem>-ы с другими id будут добавлены к существующему toolbar.
Динамически записать значение в ячейку вью можно с помощью конструкции
view.field:field_name = field_value
Примечание! Касательно динамического изменения цвета у ячеек view с помощью view.getColumn(…) правило следующее:
- надо или везде использовать refresh=0 после смены цвета (цветов) или нигде.
Во view поддерживается указание редактора по умолчанию для ячейки заданного типа: <edititem db-field=«*» type=«target_type» … /> Например
<edit> <edititem type="number" db-field="*" onchanged="global.changed_wp=1"/> </edit>
<view id="currencyView" title="Справочник валют" margin="0"
<datastore order-by="name" table-name="r_currency" id-field="id">
select id, short_name, name
from r_currency
</datastore>
<columns>
<column name="short_name" text="Рабочее наименование"/>
</columns>
<edit>
<edititem id="name" text="Название валюты" db-field="name" required="true"/>
<edititem id="short_name" text="Рабочее наименование" db-field="short_name" required="true"/>
</edit>
</view>