Главная » Уроки по ООП » Урок 40. Компоненты отображения данных

Урок 40. Компоненты отображения данных

Классификация компонентов отображения данных

Все компоненты отображения данных расположены на странице DataControls.

Компоненты отображения данных

Компоненты для работы с одним полем Компоненты для работы с несколькими полями Навигация по набору данных Компоненты синхронного просмотра данных Компонент для представления данных в виде диаграммы
DBEdit
DBMemo
DBRichEdit
DBImage
DBGrid
DBCtrlGrid
DBNavigator DBLookupListBox DBLookupComboBox DBChart

Общие свойства компонентов отображения данных:

Объявление Описание
DataSource: TDataSource; указывается компонент TDataSource, который связан с требуемым набором данных
DataField: string; Указывается поле, значение которого необходимо показать
Field: Tfield; Обеспечивает доступ к классу TField, который соответствует полю набора данных, заданному свойством DataField
Readonly: Boolean; Управляет работой режима "только для чтения"

DBNavigator

Компонент TDBNavigator - управляющие кнопки, которые выполняют операции навигации по набору данных и модификации записей целиком.

Описание: gl
Рисунок 1. Назначение кнопок компонента TDBNavigator

Компонент TDBNavigator при помощи свойства DataSource связывается с компонентом TDataSource и через него с набором данных. Такая схема позволяет обеспечить изменение текущих значений полей сразу во всех связанных с TDataSource компонентах отображения данных. Таким образом, TDBNavigator только дает команду на выполнение перемещения по набору данных или другой управляющей операции, а всю реальную работу выполняют компонент набора данных и компонент TDataSource. Компонентам отображения данных остается только принять новые данные от своих полей.

Компонент TDBNavigator содержит набор кнопок, каждая из которых отвечает за выполнение одной операции над набором данных. Всего имеется 10 кнопок, разработчик может оставить в наборе любое количество кнопок в любом сочетании. Видимостью кнопок управляет свойство VisibleButtons.


Назначение кнопок:
nbFirst — перемещение на первую запись набора данных; 
nbPrior — перемещение на предыдущую запись набора данных;
nbNext — перемещение на следующую запись набора данных;
nbLast — перемещение на последнюю запись набора данных; 
nblnsert — вставка новой записи в текущей позиции набора данных;
nbDelete — удаление текущей записи, курсор перемешается на следующую запись;
nbEdit — набор данных переводится в режим редактирования;
nbPost — в базу данных переносятся все изменения в текущей записи;
nbcancel — все изменения в текущей записи отменяются;
nbRefresh — восстанавливаются первоначальные значения текущей записи, сделанные после последнего переноса изменений в базу данных.

Задание 1. С помощью свойства VisibleButtons оставьте у DbNavigator только кнопки перемещения по набору данных:

Самой критичной к возможной потере данных вследствие ошибки является операция удаления записи, поэтому при помощи свойства confirmDelete можно включить механизм контроля удаления. При каждом удалении записи нужно будет дать подтверждение выполняемой операции.

Свойство Hints – содержит список подсказок для каждой кнопки. С помощью этого свойства можно перевести текст подсказок к каждой кнопке.

Подсказки будут отображаться, если свойство ShowHint = True.

Нажатие любой кнопки можно эмулировать программно при помощи метода BtnClick.

Например, эмуляция кнопки вставки новой записи:

DBNavigator1.BtnClick(nbInsert);

События компонента

В случае необходимости выполнения дополнительных действий при щелчке на любой кнопке можно воспользоваться обработчиками событий BeforeAction и Onclick, в которых параметр Button определяет нажатую кнопку.

BeforeAction – обработчик события выполняется при щелчке на кнопке Button перед выполнением операции, связанной с кнопкой.

OnClick - обработчик события выполняется при щелчке на кнопке Button после выполнения операции, связанной с кнопкой.

Представление отдельных полей

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

В зависимости от типа данных поля могут использовать различные компоненты. Для большинства стандартных полей используются компоненты TDBText, TDBEdit, TDBComboBox, TDBListBox.

Данные в формате Memo отображаются компонентами TDBMemo и TDBRichEdit. Для показа изображений предназначен компонент TDBImage.

Компонент TDBText

Этот компонент представляет собой статический текст, который отображает текущее значение некоторого поля связанного набора данных. При этом данные можно просматривать в режиме "только для чтения". Компонент похож на компонент TLabel.

При использовании компонента следует обратить внимание на возможную длину отображаемых данных. Для предотвращения обрезания текста можно использовать свойства AutoSize И Wordwrap.

Компонент TDBEdit

Компонент представляет собой стандартный однострочный текстовый редактор, в котором отображаются и изменяются данные из поля связанного набора данных.

Компонент может осуществлять проверку редактируемых данных по заданной для поля маске.

Непосредственно для редактора задать маску нельзя, т. к. содержащее маску свойство EditMask в классе TCustomMaskEdit является защищенным, а в TDBEdit не перекрыто. Тем не менее механизм контроля полностью унаследован. Саму же маску можно задать в связанном с редактором поле.

Объект TField имеет собственное свойство EditMask, которое и используется при проверке данных в редакторе.

Проверка редактируемого текста на соответствие маске осуществляется методом validateEdit после каждого введенного или измененного символа. В случае ошибки генерируется исключение validateError и курсор устанавливается на первый ошибочный символ.

Компонент TDBCheckBox

Компонент представляет собой почти полный аналог обычного флажка (компонент TCheckBox) и предназначен для отображения и редактирования любых данных, которые могут иметь только два значения. Это может быть логический тип данных или любые строковые значения, но поле может принимать значения только из двух строк.

Предопределенные значения задаются свойствами ValueChecked и ValueUnchecked. По умолчанию они имеют значения True и False. Этим свойствам можно также присваивать любые строковые значения, причем одному свойству можно назначить несколько возможных значений, разделенных точкой с запятой.

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

Компонент TDBListBox

Компонент отображает текущее значение связанного с ним поля набора данных и позволяет изменить его на любое фиксированное из списка. Функционально компонент ничем не отличается от компонента TListBox. Значение поля должно совпадать с одним из элементов списка. Специальных методов компонент не содержит.

Компонент TDBComboBox

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

Компонент может работать в пяти различных стилях, которые определяются свойством Style.
Специальных методов компонент не содержит.

Компонент TDBMemo

Компонент представляет собой обычное поле редактирования, к которому подключается поле с типом данных Memo или BLOB. Основное его преимущество — возможность одновременного просмотра и редактирования нескольких строк переменной длины. Компонент может отображать только строки, которые целиком видны по высоте.

Для ускорения навигации по набору данных при отображении полей типа BLOB можно использовать свойство AutoDisplay.

Если AutoDisplay=True, то любое новое значение поля автоматически отображается в компоненте. При значении False новое значение появляется только после двойного щелчка на компоненте или после нажатия клавиши <Enter> при активном компоненте.

Метод LoadMemo используется автоматически при загрузке значения поля, если свойство AutoDisplay = False.

Поведением компонента при работе со слишком длинными строками можно управлять при помощи свойства wordwrap. При значении True слишком длинная строка сдвигается влево при перемещении текстового курсора за правую границу компонента. При значении False остаток длинной строки переносится на новую строку, при этом реально новая строка в данных не создается.

Компонент TDBImage

Компонент предназначен для просмотра изображений, хранящихся в базах данных в графическом формате.

Редактировать изображения можно только в каком-либо графическом редакторе, перенося исходное и измененное изображение при помощи буфера обмена. Это делается средствами операционной системы пользователем или программно при помощи методов CopyToClipboard, CutToClipboard, PasteFromClipboard.

Визуализация изображения осуществляется при помощи свойства Picture, которое представляет собой экземпляр класса TPicture.

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

Загрузка в DBImage с помощью диалогового окна выбора файла.

if DBImage1.DataSource.State <> dsEdit then DBImage1.DataSource.Edit;
if OpenPictureDialog1.Execute then
DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
DBImage1.DataSource.DataSet.Post;

Очистка изображения из DBImage

if DBImage1.DataSource.State <> dsEdit then DBImage1.DataSource.Edit;
DBImage1.DataSource.DataSet.FieldByName(‘Photo’).Clear;
DBImage1.DataSource.DataSet.Post;

Сохранение изображения из DBImage в файл

if SavePictureDialog1.Execute then
try
DBImage1.Picture.SaveToFile(SavePictureDialog1.FileName);
except
ShowMessage('Ошибка записи в файл:'+#13#10+ SavePictureDialog1.FileName);
end;

Примечание: для того, чтобы компилятор не выдавал ошибок, необходимо добавить в раздел Uses модуль DB.

Свойство AutoDisplay позволяет управлять процессом загрузки новых изображений из набора данных в компонент. При значении True любое новое значение поля автоматически отображается в компоненте. При значении False новое значение появляется только после двойного щелчка на компоненте или после нажатия клавиши <Enter> при активном компоненте.

Для ускорения просмотра изображений можно применять свойство QuickDraw, которое задает используемую изображением палитру. При значении True применяется стандартная системная палитра. В результате уменьшается время загрузки изображения, но может ухудшиться и качество изображения, в некоторых случаях до полного искажения. При значении False используется собственная палитра изображения и процесс загрузки замедляется.

Компонент TDBRichEdit

Компонент предоставляет возможности полноценного текстового редактора для просмотра и изменения текстовых данных, хранящихся в связанном поле набора данных. Поле должно содержать информацию о форматировании текста.

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

Составитель: Салий Н.А.

Яндекс.Метрика
Сайт создан в системе uCoz