Карта сайтаСсылкиКонтакты

Функция заполнения PickList в DBGrid, чтобы облегчить ввод данных в сетке

PDF Печать
Статьи

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


 

Добавить комментарий


Защитный код
Обновить