Перейти к содержанию
  • 0
Ra72

TGrid данные в событии DrawColumnCell

Вопросы

Как в событии DrawColumnCell получить данные из невидимой колонки TGrid?
Для оформления ячейки требуются данные из DataSet, связанного с Grid через LiveBinding, но из другого поля.
Все дело в том, что DataSet при событии DrawColumnCell не находится на той же позиции, что и рисуемая ячейка.

Поделиться сообщением


Ссылка на сообщение

Рекомендуемые сообщения

  • 0

Здравствуйте.

Я сначала становлюсь на нужную строку вот так:

ADOQuery1.Locate('Nomer',bsSkinEdit1.Text,[loPartialKey, loCaseInsensitive]);

Где Nomer - имя поля а bsSkinEdit1.Text искомое значение поля.

С Уважением.

 

Поделиться сообщением


Ссылка на сообщение
  • 0
Опубликовано (изменено)

Олег, не получается. Нельзя при отрисовке перемещаться по DataSet.
Вот мой код. Я перемещаюсь по датасету  dsList на позицию строки. Хочу закрасить фон ячейки "наименования" значением, полученным из базы данных.
Но получается чехарда, курсор начинает перемещаться по гриду хаотично. А точнее "липнет" к низу отрисованной области грида.

procedure TListFrame.Grid1DrawColumnCell(Sender: TObject;
  const Canvas: TCanvas; const Column: TColumn; const Bounds: TRectF;
  const Row: Integer; const Value: TValue; const State: TGridDrawStates);
begin
  if Column.Header = 'НАИМЕНОВАНИЕ' then
  begin
    dsList.RecNo := Row + 1;
    Canvas.Fill.Color := dsListCOLOR.AsInteger;
    Canvas.FillRect(Bounds,0,0,AllCorners,1);
  end;
end;

У грида есть модель. Я пробовал так:

Grid1.Model.GetValue(8, Row, true).AsInteger;

Колонка номер 8 в гриде - это цвет, она не видимая. Но значение получить не удается. Хотя я при создании фрейма прописываю:

Grid1.Model.DataStored := true;

Не понимаю как это должно работать, раньше было проще...

P.S.
Все-таки удается через модель, но как же это не удобно! По имени колонки нельзя обратиться, так как имен у колонок нет...

 

Отредактировал Ra72
Результат отладки

Поделиться сообщением


Ссылка на сообщение

Присоединяйтесь к обсуждению

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

Гость
Ответить на вопрос...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.


  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×
×
  • Создать...