Статьи
|
PickList DBGrid может быть полезным для ввода данных через DBGrid. Это может быть выполнено следующей функцией. Всякий раз, когда добавлена новая запись к определенному полю, это также может быть сделано, чтобы появиться в PickList с функцией, приведенной ниже. Функция 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;
По материалам http://delphi.3000.com
|