
Формирование списка возможных значений столбца.
Свойство 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:
-
Доработать свою базу даны таким образом, чтобы при выборе какой-либо строки в таблице, значения определенного поля показывалось бы в отдельном месте экрана, например, в компонентt TEdit (закладка Standart)
-
При добавлении числовых данных в таблицу следить за границами вводимых значений, если введенное число не удовлетворяет условиям, то выдавать соответствующее предупреждение.
-
Сформировать список возможных значений столбца таблицы.