Справочные поля хранят не сами значения, а ссылку на значение в другой таблице. Для редактирования таких полей используется выпадающий список (Combo Box).

Таблица 1. Общие свойства компонентов

НазваниеСвойствоОписание
NameНазваниеУникальное название в пределах формы
LeftЛевоАбсцисса положения верхнего левого угла компонента относительно родительского компонента. 
TopВерхОрдината положения верхнего левого угла компонента относительно родительского компонента.  
WidthШиринаШирина компонента, в пикселях
HeightВысотаВысота компонента, в пикселях
VisibleВидимостьПризнак видимости компонента.
AnchorsЯкоряФиксация положения верхней, нижней, правой или левой стороны компонента относительно родительского.
FontШрифтГруппа свойств для настройки шрифта (тип, размер, цвет и стиль), которым отображается текст в выпадающем списке и текст выбранного значения (см. свойство Style).
BgColorЦвет фонаЦвет фона выпадающего списка и самого компонента (см. свойство Style).
TabStopТабулостопФлаг участия компонента в обходе при нажатии клавиши <Tab>
TabOrderПоследовательность табуляцииПорядковый номер при обходе клавишей <Tab>
EnabledДоступенСвойство определяет, доступен ли данный элемент для взаимодействия и можно ли ему передать фокус.
ReadOnlyТолько для чтенияЗапрет на изменение
ConstraintsОграниченияОпределяют минимальные и максимальные размеры элемента при его растягивании
HintПодсказкаТекст всплывающей подсказки.
ShowHintПоказать подсказкуФлаг, определяющий, нужна ли всплывающая подсказка для данного элемента.
CursorКурсорВнешний вид курсора при наведении указателя на компонент.
BiDiModeРежим двунаправленностиУправление режимом автоматического распознавания направления ввода или отображения данных.  

📝 Подробное описание общих свойств находится в разделе “Формы

Таблица 2. Общие свойства компонент для работы с данными

СвойствоНазваниеОписание
TableNameТаблицаРедактируемое поле + редактируемая таблица
FieldNameПолеОтображаемое поле из таблицы – справочника
BevelKindТип фаскиВлияет на внешний вид компонента. см. свойство Style
BevelInnerВнутренняя фаскаВлияет на внешний вид компонента. см. свойство Style
BevelOuterВнешняя фаскаВлияет на внешний вид компонента. см. свойство Style
CharCaseЗаглавные / прописныеУправление вводом заглавных/строчных символов.
MaxLengthМаксимальная длинаОграничение длины вводимого текста.
TextТекстОтображаемый текст.
Increm.SearchКнопка поискаИспользуется для создания фильтра с автоматическим обновлением.

📝 Подробное описание общих свойств находится в разделе “Компоненты для ввода данных“.

Настройка источника данных для этого компонента отличается от настроек остальных компонент.

Например, при редактировании списка городов (city) нам потребуется указать ссылку на страну (country), в которой находится город:

Для этого необходимо настроит свойство ForeignKey: в выпадающем списке выбрать таблицу и поле с внешним ключом. А в свойстве FieldName выбрать поле из таблицы-справочника, содержимое которого должно отображаться в выпадающем списке.

Таблица 3. Свойства ComboBox

СвойствоНазваниеОписание
ForeignKeyВнешний ключНеобходимо выбрать поле редактируемой таблицы, содержащее внешний ключ – ссылку на таблицу, которая содержит справочные значения. Если комбобокс не участвует в непосредственном отображении и вводе данных, то в поле ForeignKey можно набрать название нужной таблицы вручную.
FieldNameНазвание поляНеобходимо выбрать поле в таблице, на которую ссылается внешний ключ. Это поле будет отображаться в выпадающем списке.

Если нужно отобразить не одно поле, а несколько, наберите строковое выражение, в котором названия полей должны быть в фигурных скобках, например:
{name} ({code})

FilterФильтрДополнительная возможность для фильтрации данных, отображаемых в выпадающем списке. Настройка фильтра выпадающего списка аналогична настройке фильтра таблицы, см. раздел Отображение табличных данных. Фильтрация
DropDownCountЧисло отображаемых одновременно элементов в выпадающем спискеПо умолчанию выпадающий список одновременно отображает не более 8 элементов
DefaultIndexИндекс по умолчаниюИндекс влияет на отображаемый элемент при добавлении новой записи. Первый элемент в списке имеет индекс 0. Если установлено свойство FirstEmptyItem = True, то добавляется первый элемент: пустая строка со значением NULL
SearchableВозможность поискаПри установке данного флага внешний вид компонента изменяется для поиска элементов в списке. Поиск (фильтрация списка) идёт по вхождению, без учёта регистра.
SortСортировкаДанный флаг сортирует список по алфавиту
SortFieldПоле сортировкиМожно указать одно или несколько полей (через запятую), по которым будет производиться сортировка данных. Имеется выпадающий список с допустимыми значениями полей. Если данное поле пустое, то для сортировки будет использовано поле отображения данных.
SortOrderНаправление сортировки

В выпадающем списке можно выбрать одно из двух значений, определяющих направление сортировки: по возрастанию (Ascending) или по убыванию (Descending). Направление будет относиться ко всем полям, участвующим в сортировке.
ParentComboBoxРодительский Combo BoxДанное свойство позволяет организовать каскадную фильтрацию данных. см. далее раздел “Каскадная фильтрация”.
AutoCompleteАвтозаполнениеПри включенном автозаполнении по мере набора текста он дополняется найденным из списка значением.
AutoWidthАвтоширинаПри установке флага ширина выпадающего списка автоматически увеличивается, подстраиваясь под ширину отображаемых данных.
FirstEmptyItemПервый пустой элементФлаг указывает, нужно ли добавлять в список значений пустой элемент, который используется для выбора значения NULL
MultiSelectМножественный выборФлаг активирует множественный выбор в выпадающем списке:


Применяется в механизме фильтрации данных (см. гл. 9.8).Результат такого выбора для ввода данных можно использовать только с помощью скриптов.
StyleСтильСтиль отображения определяет внешний вид компонента. Отображение стиля зависит от версии операционной системы. В таблице 4 приведены примеры для Win10.
TextHintТекстовая подсказкаДанная подсказка отображается курсивом поверх выпадающего списка, если ни один из элементов списка не был выбран.

Каскадная фильтрация

Например, таблицы имеют следующие зависимости:

Тогда на форме редактирования города необходимо установить два выпадающих списка: список континентов и список стран, а у последнего в свойстве ParentComboBox указать первый из комбобоксов.

При выборе значения в верхнем комбобоксе значения в нижнем комбобоксе будут автоматически отфильтрованы:

☝ Данный механизм не работает, если у верхнего комбобокса установлено свойство  MultiSelect

Стиль отображения

Внешний вид компонента определяется свойством Style, а также дополнительными свойствами BevelKind, BevelInner и BevelOuter. Но в большей степени внешний вид определяется операционной системой.

Таблица 4. Свойство Style

StyleОписание
csDropDownВыпадающий список со строкой ввода текста.
csDropDownListВыбор значения только из списка. Значение по умолчанию.
csOwnerDrawFixedОпределяет раскрывающийся список, без поля редактирования. Каждый элемент в списке имеет высоту, указанную свойством ItemHeight.

В MVDB данный стиль может отображаться с графическими артефактами, не рекомендуется к использованию.

Результат настройки свойств для настойки фаски (внешнего вида границы, имитирующий объем) зависит от стиля и операционной системы.

Таблица 5. Вид фаски (свойство BevelKind)

BevelKindОписание
bkNoneБез фаски. Значение по умолчанию. Внешний вид определяется операционной системой. Компонент выгляди плоским, кнопка без границы.
bkFlatПлоская. Компонент и кнопка выпадающего списка выглядя плоскими.
bkSoftМягкая. При этом стиле в полной мере можно увидеть, как работают свойства BevelInner и BevelOuter, предающие визуальный объем.
bkTileПлитка. Плоский внешний вид с легким намеком на объемность.

Таблица 6. Внешняя и внутренняя фаска.

ЗначениеОписание
bvNoneНет
bvLoweredУтопленная
bvRaisedВыдавленная
bvSpaceНезаполненное пространство

📝 Названия стилей фасок не всегда соответствуют визуальному эффекту, который зависит от операционной системы, вида фаски и стиля компонента.

Таблица 7. Некоторые сочетание стиля и фасок

BevelKindBevelInnerBevelOuterОписание
bkFlatbvNonebvNone
bkFlatbvRaisedbvLowered
bkSoftbvRaisedbvLowered

☝ К сожалению, не у всех визуальных компонентов, используемых в MVDB, имеются аналогичные свойства, управляющие стилем (внешним видом), поэтому его сложно использовать в полной мере для создания стильного пользовательского интерфейса.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *