Як розмістити зображення в клітинку таблиці StringGrid
Компонент StringGrid може розміщувати в своїх осередках не тільки текст, а й графіку. Помістити малюнок або інше зображення в клітинку таблиці StringGrid дозволяє властивість Canvas компонента StringGrid.
Властивість Canvas має метод для виведення графіки в заданий своїми координатами прямокутник:
Canvas.StretchDrav (const Rect: TRect; Graphic: TGraphic);
Цей метод "підганяє" розміри малюнка під розміри прямокутника, розтягує або стискає його і по горизонталі і по вертикалі, причому не обов'язково пропорційно. Якщо розміри прямокутника і розміри зображення не подібні, то малюнок буде спотворений.
procedure TForm1.StringGrid1DrawCell (Sender: TObject;
ACol. ARow. Integer; Rect. TRect;
State: TGridDrawState);
begin
var Picture: TPicture; // Глобальна змінна
begin
Picture: = TPicture.Create;
Picture.LoadFromFile ( 'Ім'я_файлу');
StringGrid1.ColWidths [1]: = Picture.Width;
StringGrid1.RowHeights [1]: = Picture.Height;
end;
Якщо для завантаження передбачається зображення формату JPEG, то в список uses потрібно підключити модуль JPEG.
Якщо зображення занадто велике, потрібно встановити розміри осередку з деяким коефіцієнтом подібності n:
StringGrid1.ColWidths [1]: = Picture.Width div n;
StringGrid1.RowHeights [1]: = Picture.Height div n;
Таким чином, висновок зображення в клітинку з координатами (1, 1) записується в обробнику події OnDrawCell ось так:
with StringGrid1 do
if ((ACol = 1) and (ARow = 1)) then
Canvas.StretchDraw (Rect, Picture.Graphic);