Загрузка изображения в ячейку StringGrid по клику на неё

Компонент StringGrid может хранить в своих ячейках не только строковые, но и графические данные.

В качестве примера загрузки графических данных в StringGrid рассмотрим размещение изображения в ячейке по клику на неё.

Для этого необходимо обработать два события компонента StringGrid: OnClick и OnDrawCell.

В OnClick будет выполняться определение текущей ячейки и загрузка изображения. В OnDrawCell его отрисовка.

Для хранения информации о текущей ячейке используем две глобальные переменные.

Определение текущей ячейки осуществляется просто:

С загрузкой изображения гораздо сложнее. Для этого нужно «поместить» в ячейку графический объект и уже в него загрузить изображение. В качестве примера используем TBitmap.

В итоге обработчик события OnClick для StringGrid будет выглядеть следующим образом:

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

Для того чтобы изображение поместилось в ячейку воспользуемся методом StretchDraw класса Canvas. Этот метод принимает два аргумента: область, в которой необходимо поместить изображение, и графический объект, который это изображение содержит.

В качестве области будет служить размер текущей ячейки, а в качестве графического объекта, по сути, сама ячейка. Сведения о том, какая ячейка является в данный момент текущей, получаем из глобальных переменных.

После компиляции и запуска приложения в ячейки StringGrid при клке на них будет добавляться изображение.

Изображение в ячейке StringGrid

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *