Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа7.doc
Скачиваний:
5
Добавлен:
06.11.2018
Размер:
461.82 Кб
Скачать
    1. Обзор компонент

В скобках указаны соответствующие компоненты страниц Standart и Additional.

DBNavigator – компонент имеющий ряд кнопок нажатие на которые вызывают соответственно методы First, Prior, Next, Last, Insert, Delete, Edit, Post, Cancel и Refresh.

DBText (Label) – отображает значение поля простого типа (ftString, ftSmallint, ftInteger, ftBoolean, ftFloat, ftCurrency, ftDate, ftTime, ftDateTime) текущей записи.

DBEdit (Edit) – отображает и позволяет редактировать значение поля простого типа.

DBMemo (Memo) – отображает и позволяет редактировать значение поля типа ftMemo.

DBImage (Image) – отображает значение поля типа ftGraphic. Для изменения значения поля можно воспользоваться стандартными процедурами объекта TPicture, например:

DBImage.Picture.LoadFromFile(OpenPictureDialog.FileName)

DBRadioGroup (RadioGroup),

DBListBox (ListBox),

DBComboBox (Combobox) – позволяют выбрать значение поля простого типа из списка заданного в свойстве Items.

DBCheckBox (CheckBox) – отображает и позволяет редактировать значение поля типа ftBoolean.

DBLookupListBox (ListBox),

DBLookupComboBox (ComboBox) – позволяют работать с Lookup-связанными полями без их статического создания (см. урок 4, Поле выбора).

DBRichEdit (RichEdit) – отображает и позволяет редактировать значение поля типа ftFmtMemo

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

DBChart (Chart) – позволяет построить диаграмму, используя значения числового поля набора данных. В отличие от Chart, при выборе типа данных DataSource у какой-либо Series можно указать – Dataset или Single Record и затем выбрать набор данных и его поля, по которым необходимо построить диаграмму.

DBGrid (StringGrid) – таблица позволяющая просмотреть и редактировать значение полей с простыми типами данных. По умолчанию каждому полю набора данных, связанного с DBGrid, соответствует столбец сетки, который создается динамически. Для создания статических столбцов можно воспользоваться Редактором столбцов. Работа с Редактором столбцов аналогична работе с Редактором полей для набора данных. Достоинство статических столбцов в том, что для них можно установить значения свойств отличные от свойств соответствующего поля.

    1. Работа с полями таблицы

Каждое поле набора данных представляет собой отдельный столбец соответствующей таблицы. Для работы с ними используется свойство Fields, содержащий список объектов типа TField. На количество столбцов набора указывает свойство FieldCount. Это количество может не совпадать с числом полей таблицы, т.к. состав полей может формироваться с помощью Редактора полей набора данных, а для компонента Query зависит от SQL-запроса.

Для примера рассмотрим копирование значений полей текущей записи в список ListBox1:

procedure TForm1.Button1Click(Sender: TObject);

var i : integer;

begin

ListBox1.Items.Clear;

for i:=0 to Table1.FieldCount-1 do

ListBox1.Items.Add(Table1.Fields[i].AsString);

end;

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

procedure TForm1.Button1Click(Sender: TObject);

var i : integer;

begin

with Table1 do begin

Last;{переход к последней записи}

Edit;{переход в режим редактирования}

try

FieldByName('Name').AsString:=Edit1.Text;{Значение из Edit1}

FieldByName('Count').AsInteger:=StrToInt(Edit2.Text); {Значение из Edit2}

FieldByName('Time').AsDateTime:=Now;{Текущее время}

Post; {выход из режима редактирования с сохранением изменений}

except

Cancel; {аварийный выход из режима редактирования без сохранения изменений}

ShowMessage('Ошибка изменения данных');

end;

end;

end;

Обратите внимание на конструкцию try … except … end, которая обеспечивает выход из режима редактирования (метод Cancel) при возникновении исключительной ситуации (например, если в Edit2 содержится не число).