Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > EhLib изменение цвета записи


Автор: 14SatanA88 2.6.2011, 08:58
Доброго времени суток, уважаемые программеры.

Появилась необходимость выделять некоторые записи таблицы, отображаемые в ехлибовском гриде, цветом.
Хотелось бы сделать это по двойному клику на гриде.

Как это реализовать?

Автор: Frees 2.6.2011, 09:46
смотри событие OnGetCellParams

Автор: 14SatanA88 2.6.2011, 10:24
Цитата(Frees @  2.6.2011,  09:46 Найти цитируемый пост)
смотри событие OnGetCellParams


можешь кодом показать, что там как?

Автор: Frees 2.6.2011, 10:35
Цитата(14SatanA88 @  2.6.2011,  13:24 Найти цитируемый пост)
можешь кодом показать, что там как?

Мне лень, читай документацию, там все по русски...

Автор: 14SatanA88 2.6.2011, 10:50
да не в этом дело.
как эту перерисовку обыграть по даблклику? 

Автор: Frees 2.6.2011, 10:54
по ДаблКлику запоминаешь ID текущей записи в список.

а в отрисовке если текущий ID в списке то рисуешь такую запись по другому

возможно будет достаточно в Options Грида поставить MultiSelect ?

Автор: 14SatanA88 2.6.2011, 11:01
спасибо, попробую.
мультиселект не нужен.

Добавлено через 13 минут и 26 секунд
Grid.OnDrawColumnCell() с какими параметрами его вызвать можно из другого события?

Автор: 14SatanA88 2.6.2011, 16:09
все-таки у меня ничего не получается.
пробовал на событие GetCellParams вешать закрашивание 

Код

procedure TMainForm.PlanCatGridGetCellParams(Sender: TObject;
  Column: TColumnEh; AFont: TFont; var Background: TColor;
  State: TGridDrawState);
begin

  if PlanCatTable.FieldByName('KOLVO').AsInteger<>0
  then Background:=clRed
  else Background:=clWhite;

end;


а на даблклик пробовал вешать изменение значения поля KOLVO и вызывать там GetCellParams, чтобы проверить работоспособность

Код

procedure TMainForm.PlanCatGridDblClick(Sender: TObject);
begin
PlanCatTable.Edit;
PlanCatTable.FieldByName('KOLVO').AsInteger:=1;
PlanCatTable.Post;

PlanCatGrid.onGetCellParams:=PlanCatGridGetCellParams;
end;


по даблклику окрашивается только ячейка (не вся запись), на которой кликал, а потом уже просто тупо все закрашивается при кликах и скролле грида.

помогите написать правильно, чтобы по даблклику на записи она вся окрашивалась в нужный цвет

Автор: Frees 2.6.2011, 17:38
Код

procedure TMainForm.PlanCatGridDblClick(Sender: TObject);
begin
PlanCatTable.Edit;
PlanCatTable.FieldByName('KOLVO').AsInteger:=1;
PlanCatTable.Post;

PlanCatGrid.onGetCellParams:=PlanCatGridGetCellParams;
PlanCatGrid.Invalidate;// или Repaint
end;

Автор: Akella 2.6.2011, 23:01
можно не в список,  а создать невидимую колонку в гриде или в НД, и в ней запоминать значение, а потом уже рисовать основываясь на значении колонки

Автор: 14SatanA88 3.6.2011, 07:58
Frees, спасибо, попробую.


Цитата(Akella @  2.6.2011,  23:01 Найти цитируемый пост)
можно не в список,  а создать невидимую колонку в гриде или в НД, и в ней запоминать значение, а потом уже рисовать основываясь на значении колонки


у меня по сути так и есть. поле KOLVO только для фильтрования таблы, оно пользователю не видно

всем спасибо, вопрос закрыт.
во-первых, репаинт помог, а во-вторых у меня табла связана была через MemTableEh, а обращался через Table. Моя ошибка.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)