Рисуем изображение в ячейках 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.
Комментарии