Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции_БД.doc
Скачиваний:
28
Добавлен:
04.05.2019
Размер:
4.03 Mб
Скачать

Тема. Визуальные компоненты отображения записей из набора данных.

Компонент DBGrid (вкладка DataControl) позволяет выводить записи из набора данных. При этом сетка DBGrid отображает все записи набора данных. С помощью сетки можно управлять набором данных, поля которого отображаются. Для навигации по записям и их просмотра используются полосы прокрутки и клавиши перемещения курсора. <Insert> - вставка новой записи. <Ctrl>+<Del> - удаление записи.

Свойства

Columns:TDBGridColumns – массив объектов Column:TColumn, которые описывают отдельные столбцы сетки. По умолчанию отображаются все столбцы. С помощью редактора формируется определенный набор. Например,

// вывод количества колонок в DBGrid-е

ShowMessage(inttostr(DBGPokupka.Columns.Count));

FieldCount:Integer – содержит число видимых столбцов сетки. Нумерация от 0.

Fields[Index:Integer]:TField – доступ к отдельному столбцу с указанным номером. Индекс определяет номер столбца от 0 до FieldCount-1. Например,

ShowMessage(DBGPokupka.Fields[5].AsString);

SelectedField:TField – указывает на объект типа TFiled текущего столбца сетки. Например, ShowMessage(DBGPokupka.SelectedField.AsString);

SelectedIndex:Integer – номер текущего столбца в массиве Colunms (нумерация с 0).

Например,

DBGPokupka.SelectedIndex:=4; ShowMessage(DBGPokupka.Columns.Items[DBGPokupka.SelectedIndex].Field.AsString);

Title:TColumnTitle – объект заголовка столбца, который имеет свойства Caption, Alignment, Color, Font. Например,

DBGTovar.Columns[2].Title.Caption:='Цена'; DBGTovar.Columns[2].Title.Alignment:=taCenter; DBGTovar.TitleFont.Style:=[fsBold]; DBGTovar.TitleFont.Color:=clMaroon;

Color:TColor, FixedColor:TColorзадают цвета сетки и ее фиксированных элементов.

Например,

DBGTovar.Color:=clOlive;

DBGTovar.FixedColor:=$00ff00cc;

Options:TGridOptions – доступ к параметрам сетки: dgEditing – разрешено редактирование, dgTitles – отображаются заголовки столбцов, dgConfirmDelete – при удалении строки выдается запрос на подтверждение. Например,

// разрешить редактирование и перемещение с помощью <Tab>

DBGTovar.Options:=DBGTovar.Options+[dgEditing,dgTabs];

События

OnCellClick – генерируется при щелчке на ячейке с данными. Например,

// вывод в Label содержимого текущей ячейки

procedure TForm1.DBGTovarCellClick(Column: TColumn);

begin

Label1.Caption:=Column.Field.AsString;

end;

OnTitleClick – генерируется при щелчке на заголовке столбца. Например,

procedure TForm1.DBGTovarTitleClick(Column: TColumn);

begin

Label1.Caption:=Column.Title.Caption; // название столбца

Label2.Caption:=Column.FieldName; //имя поля

end;

OnColEnter – возникает при получении фокуса столбцом сетки.

OnColExit – при потере фокуса столбцом сетки.

Свойства объекта TColumn - столбец

PickList:TStrings – список для выбора значений, заносимых в поле. Текущая ячейка вместе со списком образует своего рода компонент ComboBox или DBComboBox.

ButtonStyle задает режим работы со списком PickList:

cbsAuto – стрелка с выпадающим списком,

cbsEllipsis - многоточие без выпадающего списка,

cbsNone – нет списка.

Пример. Формирование списка PickList поля T_Prim (A,20) таблицы Tovar.

procedure TForm1.FormCreate(Sender: TObject);

begin

DBGrid1.Columns[4].PickList.Clear;

DBGrid1.Columns[4].Title.Caption:='Примечание;

DBGrid1.Columns[4].PickList.Add('Товар на складе);

DBGrid1.Columns[4].PickList.Add('Товар в зале’);

DBGrid1.Columns[4].PickList.Add('Нет в наличии’);

end;

Пример. Вычисление общей суммы всех товаров в таблице Tovar БД Tovar.

procedure TForm1.BtTotalSumClick(Sender: TObject);

var s: real; i: integer;

begin

s:=0; TbTovar.First;

while not TbTovar.eof do begin

s:=s+TbTovar.fieldbyname('Summa').AsFloat;

TbTovar.Next;

end;

Label1.Caption:=Floattostr(s);

end;

Компонент TDBText – позволяет отображать текстовое представление различных полей набора данных, также как они отображаются в TDBGrid. Подобен TLabel, но текст формируется автоматически.

Свойства:

DataSource:TDataSource; - указывает используемый источник данных.

DataField: TDataField; - задает поле набора данных.

Например, В компоненте DBText1 отображается значение поля P_Kol_vo для текущей записи:

procedure TForm1.FormCreate(Sender: TObject);

begin

TbTovar.Active:=True;

TbPokupka.Active:=True;

DBText1.DataSource:=dsPokupka;

DBText1.DataField:='P_Kol_vo';

end;

Компонент TDBEdit – однострочное поле редактирования для отображения и изменения значения поля набора данных. Введенное в поле редактирования значение будет сохранено в таблице базы данных только после применения метода Post.

Свойства:

DataSource:TDataSource; - указывает используемый источник данных.

DataField: TDataField; - задает поле набора данных.

Text: String; - содержит значение поля текущей записи.

Например,

    1. ShowMessage(DBEdit1.Text);

    2. В компоненте DBEdit1 отображается значение поля T_Nazv для текущей записи:

procedure TForm1.FormCreate(Sender: TObject);

begin

TbTovar.Active:=True;

TbPokupka.Active:=True;

DBEdit1.DataSource:=dsTovar;

DBEdit1.DataField:='T_Nazv';

end;

    1. Сохранение в базе данных значения, введенного в поле DBEdit1, выполняется только после подтверждения пользователем:

procedure TForm1.DBEdit1Exit(Sender: TObject);

begin

if MessageDlg('Сохранить изменение?', mtConfirmation, [mbYes,mbNo],0) = mrYes

then TbTovar.Post

else TbTovar.Cancel;

end;

Компонент TDBMemo –многострочное поле редактирования.

Свойства:

DataSource:TDataSource; - указывает используемый источник данных.

DataField: TDataField; - задает поле набора данных.

Text: String; - содержит значение поля текущей записи.

Компонент TDBImage – реализует объект рисунок, в котором можно отображать и изменять значение поля набора данных формата BLOB.

Свойства:

DataSource:TDataSource; - указывает используемый источник данных.

DataField: TDataField; - задает поле набора данных.

Picture:TPicture; - определяет изображение. Значение этого свойства можно изменить программно.

Например,

  1. DBImage1.Picture.Assign(Image1.Picture);

  2. Загрузка в компонент DBImage1 объекта-рисунок из файла, выбранного в стандартном диалоговом окне:

procedure TForm1.Button1Click(Sender: TObject);

begin

if OpenPictureDialog1.Execute then

DBImage1.Picture.LoadFromFile(OpenPictureDialog1.FileName);

end;