
- •1. Наборы данных
- •Var I: integer;
- •1.1. Состояния наборов данных
- •If not CheckBoxl.Checked then Abort;
- •If not CheckBoxl.Checked then begin
- •If CheckBox2.Checked then
- •If CheckBox2.Checked then begin
- •1.2. Режимы наборов данных
- •1.3. Доступ к полям
- •Var n: integer;
- •Var X: integer;
- •Var X: integer;
- •1.4. Особенности набора данных Table
- •If OpenDialogl.Execute then begin
- •Var n: integer;
- •If Editl.CanFocus then Editl.SetFocus;
- •1.5. Особенности набора данных Query
- •Interface
- •Implementation
- •2. Объекты поля
- •2.1 Редактор полей
- •2.2. Операции с полями
- •Var X: integer;
- •Var s: string;
- •X: real;
- •Var s: string;
- •X: real;
- •If not Tablel.Fields[2].IsValidChar(Editl.Text[1]) then
- •If (TablelCode.Required) and (TablelCode.IsNull)
- •3. Источник данных
- •Var n: integer;
- •1. Отображение и редактирование значения логического поля
- •2. Отображение и выбор значения поля
- •3. Отображение и выбор значения поля из списка
- •3.1. Простой и комбинированный списки
- •3.2. Списки, сформированные по значениям поля набора данных
- •4. Представление записей в табличном виде
- •4.1 Характеристики сетки
- •Var r :tRect;
- •4.2. Столбцы сетки
- •Var c, n :integer;
- •4.3. Использование модифицированной сетки
- •5. Использование навигационного интерфейса
- •6. Вывод графических изображений
- •Interface
- •Implementat ion
- •If OpenPictureDialogl.Execute then
- •If SavePictureDialogl.Execute then
- •7. Построение диаграмм
- •Var n: integer;
3. Отображение и выбор значения поля из списка
Чтобы отобразить поле текущей записи и выбрать этому полю новое значения,
Служат списки — компоненты DBListBox, DBCoraboBox, DBLookupComboBox и
DBLookupListBox. По своей функциональности списки напоминают группу переключателей DBRadioGroup, однако предоставляют большие возможности. Список DBComboBox также обеспечивает возможность ввода в поле произвольного значения.
3.1. Простой и комбинированный списки
Компоненты DBListBox и DBComboBox позволяют пользователю выбирать один из строковых элементов. При выборе нужной строки простого списка DBListBox содержащееся в ней значение автоматически заносится в поле, с которым связан этот список. в дополнение к этому комбинированный список DBComboBox позволяет вводить произвольное значение.
Замечание
Новое значение не фиксируется в поле и, соответственно, не отображается в других визуальных компонентах, связанных с этим же набором данных. На рис. 8.2 в списке для поля unit выбрано новое значение Упаковка, однако в сетке DBGrid это не отображается Закрепление в поле нового значения, а также отображение этого значения в других визуальных компонентах, связанных сданным полем, произойдет при переходе к другой записи.
Рис. 8.2. Использование простого списка
3.2. Списки, сформированные по значениям поля набора данных
В простом и комбинированном списках перечень возможных значений поля формируется программистом и в общем случае не зависит от значений записей наборов данных. Иногда это может оказаться неудобным и привести к ошибкам ввода или выбора. В Delphi имеются компоненты DBLookupListBox и DBLookupComboBox, которые также предназначены для выбора значения из списка или непосредственного ввода значения в поле редактирования (только для DBLookupComboBox). Во многом эти компоненты похожи на простой список DBListBox и комбинированный список DBComboBox, соответственно, и отличаются от них только способом формирования списка возможных значений.
Принципы работы с компонентами DBLookupComboBox и DBLookupListBox практически такие же, как с полем выбора, которое было рассмотрено в предыдущей главе. Основное отличие заключается в том, что поле выбора создается с помощью Редактора полей, и основные его свойства задаются в специальном окне, а в случае указанных компонентов для списка используется один из них (DBLookupComboBox или DBLookupListBox), а свойства устанавливаются, как правило, через Инспектор объектов.
Компонент DBLookupComboBox (или DBLookupListBox) связывается с полем "своего" набора данных через свойства DataSource и DataField, а для формирования списка используются свойства ListSource типа TDateSource и DataField типа String, указывающие на второй набор данных и его поле, используемое для заполнения списка.
В свойстве KeyField типа string указывается поле второго набора данных, значение которого заносится в поле, связанное с компонентом списка.