Поле DBLookup в DBGrid

Модератор: Модераторы

Поле DBLookup в DBGrid

Сообщение Ism » 21.01.2013 18:13:47

Привет
Решил одну задачку, думаю другим не помешает
Иногда надо , чтоб в DBGrid ячейках были многофункциональные компоненты типа DBLookupCombobox и подобное
Чтоб не заморачиваться есть функция которая выставляет компонент поверх нужной ячейки DBGrid

Цепляем эту функцию на событие OnPrepareCanvas DBGrid

Код: Выделить всё
procedure set_DBLookupComboBox_cell_pos(column_name:string; object_:TDBLookupComboBox;db_grid:TDBGrid);
var
  rect_:TRect;
  i:integer;
  found_field_flag:boolean;
begin
  // Для установки положения данного поля в ячейке DBGrid
  // Вешать на OnPrepareCanvas
  // set_DBLookupComboBox_cell_pos('vozvratnost',DBLookupComboBoxVosvratnost,TDBGrid(sender))
  if object_.DataSource.DataSet.Active then
    if object_.DataSource.DataSet.RecordCount>0 then object_.Visible:=true else object_.Visible:=false
  else
    begin object_.Visible:=false; Exit; end;
  found_field_flag:=false;
  for i:=0 to db_grid.Columns.Count-1 do if db_grid.Columns.Items[i].FieldName=column_name then begin found_field_flag:=true; break;  end;
  if found_field_flag=false then begin ShowMessage(SysToUTF8('Поле в DBGrid не найдено')); exit; end;
  if dgIndicator in db_grid.Options then inc(i); //dgIndicator тоже считается за колонку

  rect_:=db_grid.SelectedFieldRect;
  rect_.Left:=db_grid.CellRect(i,0).Left;
  rect_.Right:=db_grid.CellRect(i,0).Right;

  object_.Left:=db_grid.Left+rect_.Left+1;
  object_.Top:=db_grid.Top+rect_.Top+2;
  object_.Width:=rect_.Right-rect_.Left;
  object_.Height:=rect_.Bottom-rect_.Top;
end;


dbgrid.png
dbgrid.png (7.61 КБ) Просмотров: 15003
Последний раз редактировалось Ism 11.06.2013 18:01:46, всего редактировалось 3 раз(а).
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Re: Поле DBLookup в DBGrid

Сообщение xcod » 22.01.2013 06:32:37

не понял
а лукап поля не тоже самое ли делают7
xcod
постоялец
 
Сообщения: 108
Зарегистрирован: 07.08.2009 12:37:23

Re: Поле DBLookup в DBGrid

Сообщение Ism » 22.01.2013 15:29:51

То, что умеет DBGrid урезано и мне завести это не удалось
А lookup в Dataset не особенно нужен , если есть View в базе данных
Ism
энтузиаст
 
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08


Вернуться в Компоненты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2

Рейтинг@Mail.ru