Есть способ разместить изображение в ячейках DBGrid. Вы можете улучшить вид сетки. При добавлении цветов в DBGrid можно произвести некоторые эффекты , если Вы действительно хотите улучшить визуальное представление сетки в Вашем приложении. Но Вы могли бы использовать изображение вместо скучного текста.
Есть пример использования разноцветных строк в DBGrid.
Но что делать, если Вы хотите добавить некоторые изображения в определенную ячейку, чтобы обеспечить более привлекательный интерфейс?
Изображения в DBGrid
В обработчике события OnDrawColumnCell компонента DBGrid1 наберите:
procedure TForm1.DBGrid1DrawColumnCell(
Sender: TObject;
const Rect: TRect;
DataCol: Integer;
Column: TColumn;
State: TGridDrawState);
var
bitmap : TBitmap;
fixRect : TRect;
bmpWidth : integer;
imgIndex : integer;
begin
fixRect := Rect;
// настройка поля 'LastName'
if Column.Field = EmployeeTableLastName then
begin
//получение требуемого изображения
if EmployeeTableSalary.Value > 50000 then
imgIndex := 0
else if EmployeeTableSalary.Value > 25000 then
imgIndex := 1
else
imgIndex := 2;
bitmap := TBitmap.Create;
try
//получаем изображение из ImageList
//(используем значение поля "Salary")
ImageList1.GetBitmap(imgIndex, bitmap);
//Установить размеры изображения
bmpWidth := (Rect.Bottom - Rect.Top);
fixRect.Right := Rect.Left + bmpWidth;
//рисуем изображение
DBGrid1.Canvas.StretchDraw(fixRect, bitmap);
finally
bitmap.Free;
end;
// очистить прямоугольник,
// добавить место для изображения
fixRect := Rect;
fixRect.Left := fixRect.Left + bmpWidth;
end;
//рисовать текст по умолчанию (установленная позиция)
DBGrid1.DefaultDrawColumnCell(
fixRect,
DataCol,
Column,
State);
end;
Чтобы рисовать изображения на TDBGrid, поместим компонент TImageList (ImageList1) для хранения некоторых изображений. Добавим три изображения, которые будут отражать жалованье служащих.
DBGrid отображает данные из таблицы Employee базы данных DBDEMOS.
|