§ 18. Компоненты для работы с таблицами
18.2. Компонент DrawGrid
Компонент DrawGrid используется для создания таблицы, которая может содержать графические изображения. На панели компонентов Additional компонент DrawGrid изображен в виде , имя объекта DrawGrid. Компонент DrawGrid, помещенный на форму, получает имя DrawGridN, где N — номер 1, 2, 3… (пример 18.5). Этот компонент подобен компоненту StringGrid, который является наследником от DrawGrid. В DrawGrid присутствуют все свойства, методы, события компонента StringGrid, кроме относящихся к тексту, т.е. кроме свойств Cells, Cols, Rows. Компонент DrawGrid (также StringGrid) имеет канву, на которой можно размещать изображения. Для занесения изображений в ячейки DrawGrid используют обработчик событий OnDrawCell. Это событие наступает для каждой ячейки таблицы в момент ее перерисовки. Размещая в обработчике события OnDrawCell программный код, можно раскрашивать ячейки, выводить рисунки, и делать текстовые надписи. Таблица сама постоянно вызывает это событие для того, чтобы отрисовать свои ячейки. Прорисовать изображение можно, используя методы канвы StratchDraw или CopyRect. Обработчик OnDrawCell имеет параметры (пример 18.6). Пример 18.7. Создать проект, в котором при выборе ячейки таблицы, будет либо закрашиваться ячейка, либо прорисовываться картинка. Если сумма номера строки и номера столбца нечетная, то происходит закраска ячейка, иначе прорисовывается картинка. Этапы выполнения задания
Если свойство DefaultDrawing компонента DrawGrid имеет значение true (установлено по умолчанию), то зарисовываться будут только выделенные ячейки таблицы. Как только выделение изменится ячейка становится закрашенной тем цветом, который установлен по умолчанию. Если для свойства DefaultDrawing установить значение false, то после смены выделенной ячейки раскраска предыдущих ячеек не меняется. Компонент DrawGrid удобно использовать для создания игр на клеточном поле. Для программирования игры понадобится матрица состояния игры. В такой матрице будет храниться обстановка игры на текущем ходу. После выполнения хода обстановка меняется, соответствующие изменения записываются в матрицу состояния и происходит обновление компонента DrawGrid. Матрица состояния игры может использоваться для сохранения игры и последующей ее загрузки. Пример 18.8. Подготовить поле игры в крестики-нолики для двух игроков. Этапы выполнения задания
|
Компонент StringGrid обладает существенно большими возможностями, чем DrawGrid, поскольку он может хранить в ячейках и изображения, и тексты. Если необходимо внести текст в какие-то ячейки DrawGrid, то потребуется использовать методы вывода текста на канву, что не всегда удобно. Пример 18.5. Компонент DrawGrid на форме: Пример 18.6. Параметры обработчика OnDrawCell:
- gdSelected — ячейка выделена; Пример 18.7. Форма на этапе проектирования: Обработчик события OnCreate для формы.
Обработчик события OnSelectCell для таблицы.
Работающее приложение: Пример 18.8. Форма на этапе проектирования: Обработчик события OnCreate для формы.
Обработчик события OnSelectCell для таблицы.
Обработчик события OnDrawCell для таблицы.
Обработчик события OnClick для кнопки.
Работающее приложение: |