Функция заполнения 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;
Комментарии