Карта сайтаСсылкиКонтакты

Рисуем изображение в ячейках DBGrid

PDF Печать
Статьи

Есть способ разместить изображение в ячейках DBGrid. Вы можете улучшить вид сетки. При добавлении цветов в DBGrid можно произвести некоторые эффекты , если Вы действительно хотите улучшить визуальное представление сетки в Вашем приложении. Но Вы могли бы использовать изображение вместо скучного текста.

Есть пример использования разноцветных строк в 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) для хранения некоторых изображений. Добавим три изображения, которые будут отражать жалованье служащих.

ImageList для изображений

DBGrid отображает данные из таблицы Employee базы данных DBDEMOS.


 

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


Защитный код
Обновить