Учись программированию на C++ Builder бесплатно!

Компонент DrawGrid используется для создания в приложении таблицы, которая может содержать графические изображения. Этот компонент подобен компоненту StringGrid, поскольку последний является производным от DrawGrid. Поэтому в DrawGrid присутствуют все свойства, методы, события компонента StringGrid, кроме относящихся к тексту, т.е. кроме свойств Cells, Cols, Rows, Objects. С этой точки зрения компонент StringGrid обладает существенно большими возможностями, чем DrawGrid, поскольку он может хранить в ячейках и изображения, и тексты. А если вы захотите внести текст в какие-то ячейки DrawGrid, то вам надо будет использовать для этого методы вывода текста на канву, что не очень удобно.

Компоненты DrawGrid и StringGrid имеют канву Canvas, на которой можно размещать изображения методами. Имеется метод CellRect, который возвращает область канвы, отведенную под заданную ячейку.

ACol и ARow - индексы столбца и строки, начинающиеся с 0, на пересечении которых расположена ячейка. Возвращаемая этой функцией область является областью канвы, в которой можно рисовать необходимое изображение.

Например, оператор копирует методом CopyRect в ячейку (1,1) таблицы DrawGrid1 изображение из компонента BitMap:

DrawGrid1->Canvas->CopyRect(DrawGrid1->CellRect(1,1),BitMap->Canvas,Rect(0,0,BitMap->Height,BitMap->Width));

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

Изображение на канве компонентов DrawGrid и StringGrid, как и на канве любого компонента, подвержено стиранию при перекрытии окна приложения другими окнами или, например, при сворачивании приложения. Поэтому необходимо принимать меры, чтобы с помощью обработчика событий OnPaint восстанавливать испорченное изображение. Это делает компонент DrawGrid не слишком удобно для использования.

Удобным способом занесения изображений в ячейки DrawGrid является использование обработчика событий OnDrawCell. Эти события наступают для каждой ячейки таблицы в момент ее перерисовки.

Параметры ACol и ARow - это номер столбца и строки, на пересечении которых расположена перерисовываемая ячейка. Параметр Rect типа TRect определяет область данной ячейки на канве. В эту область надо заносить изображение. Параметр State указывает состояние ячейки. Он является множеством, которое может содержать следующие элементы:

  • gdSelected - выделенная ячейка;
  • gdFocused - ячейка, находящаяся в фокусе;
  • gdFixed - ячейка в фиксированной области таблицы.

Параметр State можно использовать для различного характера отображения ячеек в различных состояниях.

Поделиться