Функция заполнения PickList в DBGrid
Функция PopulatePickList может вызываться в пределах события DataSource.OnDataChange так, чтобы это обновлялось всякий раз, когда новая запись добавлена.
procedure PopulatePickList(
Column:TColumn;Table:TTable;FieldName:string);
var
QryTemp: TQuery;
i: integer;
begin
Column.PickList.Clear;
QryTemp := TQuery.Create(nil);
with QryTemp do
begin
DatabaseName := Table.DatabaseName;
SQL.Clear;
SQL.Add('SELECT DISTINCT '+
FieldName+' from '+Table.TableName);
end;
with QryTemp do
begin
Active := True;
First;
for i := 0 to QryTemp.RecordCount - 1 do
begin
if FieldByName(FieldName).AsString <> '' then
Column.PickList.Add(FieldByName(FieldName).AsString);
Next;
end;
Active := False;
end;
QryTemp.Free;
end;
procedure TForm1.DataSourceDataChange(
Sender: TObject; Field: TField);
begin
PopulatePickList(DBGrid.Columns[2],Table,'Field');
//замените таблицу Вашим tableName сетки
//DBGrid.Columns[2] с Вашим DBGrid Column, который Вы хотите PickList для
//Field с полем для PickList
end;
Комментарии