Як розмістити зображення в клітинку таблиці stringgrid delphi

Як розмістити зображення в клітинку таблиці 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);

Схожі статті