Кроме изображений, в 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 после имени файла добавляется цифра в круглых скобках, показывающая номер копии.

☝ Даже если две разные записи ссылаются на один и тот же файл, в базе будут храниться два экземпляра этого файла, а в режиме файлового хранения – два одинаковых файла, с отличающимися номерами.

Файлы, скопированные в папку хранения, автоматически не удаляются ни при каких обстоятельствах: ни при очистке поля редактирования, ни при удалении всей записи. С одной стороны это защищает файлы от случайного удаления, с другой стороны – требует дополнительных усилий для очистки папки файлового хранилища от неактуальной информации: либо вручную, либо с помощью скриптов.

Давайте закрепим полученные знания на практике.

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

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