Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 3.rtf
Скачиваний:
15
Добавлен:
15.06.2014
Размер:
12.74 Mб
Скачать

Формирование списка возможных значений столбца.

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

Например, чтобы заполнить это свойство PickList в ходе работы программы можно поступить так, допустим у вас есть еще одна таблица Table2 с поле Name_Cl, тогда при редактирования поля в Table1, в качестве вариантов будут выведены значения из поля Name_Cl таблицы Table2. Допустим, сделаем так, чтобы свойство PickList заполнялось значениями из второй таблицы во время вставки новой записи. Для этого надо работать с событием BeforeInsert компонента Table1 (пример находится в папке Lab3_1).

unit pick_pas;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, DB, DBTables, Grids, DBGrids;

type

TForm1 = class(TForm)

DataSource1: TDataSource;

DataSource2: TDataSource;

DBGrid1: TDBGrid;

DBGrid2: TDBGrid;

Table1: TTable;

Table2: TTable;

Table1Index: TSmallintField;

Table1Name_Cl: TStringField;

Table1Mach_Num: TSmallintField;

Table1Gruz_Num: TSmallintField;

Table1City: TStringField;

Table1Date_Deliv: TStringField;

Table2Kod_cl: TSmallintField;

Table2Name_cl: TStringField;

Table2Dohod_cl: TSmallintField;

procedure Table1BeforeInsert(DataSet: TDataSet);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Table1BeforeInsert(DataSet: TDataSet);

Var n:integer;

Begin

N:=0;

While DBGrid1.Columns[n].FieldName<>'Name_Cl' do

Inc(n);{ищем номер нужного столбца по имени поля}

With Table2 do {работаем со второй таблицей}

begin

First;{идем в начало:}

while not eof do {пока не дошли до конца таблицы}

begin

DBGrid1.Columns[n].PickList.Add(Table2Name_cl.AsString);

{заполняем список PickList значениями из другой таблицы}

Next;{переходим к след. записи.}

end;

end;

end;

end.

Результат будет следующим…

Задание на лабораторную работу №3:

  1. Доработать свою базу даны таким образом, чтобы при выборе какой-либо строки в таблице, значения определенного поля показывалось бы в отдельном месте экрана, например, в компонентt TEdit (закладка Standart)

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

  3. Сформировать список возможных значений столбца таблицы.

Соседние файлы в предмете Базы данных