Кроме изображений, в MVDB можно организовать хранение любых файлов. Для этого предназначен компонент DBFile.
Механика хранения данных у компонента DBFile такая же, что и у компонента для хранения изображений DBImage. А вот интерфейс управления содержимым отличается. Добавить файл в базу можно с помощью кнопки с изображением папки (1). При нажатии кнопки с изображением дискеты (2) появляется меню (3), в котором перечислены все доступные действия: открыть файл, сохранить файл, удалить файл.
Файл удаляется только из базы данных. Если выбран режим хранения ссылок, то физически файл не удаляется из папки, в которую он был скопирован (см. свойство CopyTo).

В режиме хранения ссылок данный компонент может хранить ссылки не только на файлы, но и на папки (см. свойство Type). В этом случае меню действия приобретает другой вид: в нем отображаются действия для открытия папки (1) или удаления ссылки на папку (2).

Таблица 1. Общие свойства компонентов
Название | Свойство | Описание |
---|---|---|
Name | Название | Название компонента должно быть уникальным в пределах формы. |
Left | Лево | Абсцисса положения верхнего левого угла компонента относительно родительского компонента. |
Top | Верх | Ордината положения верхнего левого угла компонента относительно родительского компонента. |
Width | Ширина | Ширина компонента, в пикселях |
Height | Высота | Высота компонента, в пикселях. Выставленная в редакторе высота не имеет значения, так как при запуске приложения она установится таким образом, чтобы соответствовать высоте шрифта. |
Visible | Видимость | Признак видимости компонента. |
Anchors | Якоря | Якорь позволяет фиксировать положение верхней, нижней, правой или левой стороны компонента относительно родительского. |
Font | Шрифт | Группа свойств для настройки шрифта (тип, размер, цвет и стиль), которым отображается заголовок (caption) или текст (text). |
BgColor | Цвет фона | Цвет фона компонента |
TabStop | Табулостоп | Этот флаг определяет, включать ли компонент в очередь обхода. |
TabOrder | Последовательность табуляции | Порядковый номер в очереди обхода компонентов клавишей Tab (Shift+Tab). |
Enabled | Доступен | Свойство определяет, доступен ли данный элемент для взаимодействия и можно ли ему передать фокус. |
ReadOnly | Только для чтения | По умолчанию свойство установлено в True, то есть имя загруженного файла редактировать нельзя. Установка свойства в False разрешает редактирование отображаемого текста, но результат редактирования не сохранятся. Чтобы переименовывать хранимые файлы понадобится скрипт. |
Constraints | Ограничения | При использовании якорей (anchors) может быть полезным настройка данных свойств, которые определяют минимальные и максимальные размеры элемента при его растягивании. |
Hint | Подсказка | Это свойство позволяет задать текст всплывающей подсказки. |
ShowHint | Показать подсказку | Флаг, определяющий, нужна ли всплывающая подсказка для данного элемента. |
Cursor | Курсор | С помощью этого свойства можно менять внешний вид курсора при наведении указателя на визуальный компонент. |
BiDiMode | Режим двунаправленности | Управление режимом автоматического распознавания направления ввода или отображения данных. |
📝 Подробное описание общих свойств находится в разделе “Формы“
Таблица 2. Общие свойства компонент для работы с данными
Свойство | Название | Описание |
---|---|---|
TableName | Таблица | Источник данных – имя таблицы. |
FieldName | Поле | Источник данных – имя поля. |
Alignment | Выравнивание | Выравнивание текстовой информации, значения: taRightJustify – по правому краю taLeftJustify – по левому краю taCenter – по центру |
AutoSelect | Автовыделение | При установленном флаге текстовое содержимое компонента выделяется. |
AutoSize | Авторазмер | Размер компонента автоматически подстраивается под отображаемое текстовое содержимое. В случае с компонентом TdbFileDataBase подстраивается высота под размер иконок загрузки файла и вызова меню управления. |
BevelKind | Тип фаски | Стили оформления. Позволяет управлять фасками на компонентах, придавая им трёхмерность. Возможные значения: bkNone – отсутствует (по умолчанию) bkFlat – плоский bkSoft – смягченный bkTile – плитка |
BevelInner | Внутренняя фаска | Возможные значения: bvNone – отсутствует bvRised – выпуклая bvLowered – вогнутая bvSpace – промежуток |
BevelOuter | Внешняя фаска | Возможные значения: bvNone – отсутствует bvRised – выпуклая bvLowered – вогнутая bvSpace – промежуток |
BorderStyle | Стиль границы | Возможные значения: bsSingle – граница, придающая объёмность bsNone – нет границы |
CharCase | Заглавные / прописные | Используется у компонентов для ввода текста. Возможные значения: ecNormal – все символы ecUpperCase – только заглавные ecLowerCase – только строчные |
MaxLength | Максимальная длина | Данная настройка позволяет ограничить длину вводимого текста. Нулевое значение означает отсутствие ограничений. Влияет только на длину вводимого вручную текста, на длину имен файлов, загруженных через кнопку загрузки, не влияет. |
Text | Текст | Отображаемый текст. Отображает название загруженного файла. При ручном редактировании изменения не сохраняются. |
📝 Подробное описание общих свойств находится в разделе “Компоненты для ввода данных“.
Таблица 4. Свойства DBImage
Свойство | Название | Описание |
Type | Тип | Тип хранения данных: StoreFile – файл хранится в базе LinkFile – хранится ссылка на изображение LinkFolder -хранится ссылка на папку |
CopyTo | Копировать в | Это свойство используется в режиме хранения ссылок (Type = LinkFile ). Указывает папку, в которую будет скопировано сохраняемое изображение. Возможные значения свойства CopyTo: \ – файл будет автоматически скопирован в папку с файлом базы данных <имя> – в папке расположения файла базы данных, будет создана папка <имя>, куда файлы будут автоматически скопированы, допускается указать цепочку папок, например files\docs, данные папки будут созданы автоматически. c:\files\ – (полный путь к папке) файл будет автоматически скопирован в указанную папку. Если свойство оставить пустым, файл автоматически скопирован не будет. |
В режиме LinkFile при сохранении записи в папку, указанную в свойстве CopyTo, проверяется наличие в ней файла с таким же именем. И если такой файл найден, то имя нового файла автоматически меняется по правилам операционной системы (в Windows после имени файла добавляется цифра в круглых скобках, показывающая номер копии.
☝ Даже если две разные записи ссылаются на один и тот же файл, в базе будут храниться два экземпляра этого файла, а в режиме файлового хранения – два одинаковых файла, с отличающимися номерами.
Файлы, скопированные в папку хранения, автоматически не удаляются ни при каких обстоятельствах: ни при очистке поля редактирования, ни при удалении всей записи. С одной стороны это защищает файлы от случайного удаления, с другой стороны – требует дополнительных усилий для очистки папки файлового хранилища от неактуальной информации: либо вручную, либо с помощью скриптов.
Давайте закрепим полученные знания на практике.