Добрый день.
Для отображения "кликабельных" чекбоксов можно использовать CellButton в коллекции TColumnEh.CellButtons
Код:
CellButtons = <
item
Images.NormalImages = ImageList1
Style = ebsGlyphEh
DrawBackTime = edbtNeverEh
OnClick = DBGridEh1Columns2CellButtons0Click
HorzPlacement = ebhpLeftEh
Pressable = False
OnDraw = DBGridEh1Columns2CellButtons0Draw
end>
Убрать отрисовку фона кнопки
DrawBackTime = edbtNeverEh
Рисовать картинку Checkbox'а можно из картинок ImageList
Images.NormalImages = ImageList1
Чтобы при нажатии на кнопку не былу эффекта нажатия/сдвига, установить свойство Pressable
Pressable = False
В событии CellButton.OnClick меняем значения нужных полей чтобы изменить статус чекбокса
Код:
procedure TForm1.DBGridEh1Columns2CellButtons0Click(Sender: TObject;
var Handled: Boolean);
begin
if (MemTableEh1.FieldByName('Continent').AsString = 'South America') then
begin
MemTableEh1.Edit;
MemTableEh1.FieldByName('Continent').AsString := 'North America';
MemTableEh1.Post;
end else
begin
MemTableEh1.Edit;
MemTableEh1.FieldByName('Continent').AsString := 'South America';
MemTableEh1.Post;
end;
end;
в событии CellButton.OnDraw можно установить номер картинки из CellButton.Images.NormalImages для отображения
Код:
procedure TForm1.DBGridEh1Columns2CellButtons0Draw(Grid: TCustomDBGridEh;
Column: TColumnEh; CellButton: TDBGridCellButtonEh; Canvas: TCanvas; Cell,
AreaCell: TGridCoord; const ARect: TRect;
ButtonDrawParams: TCellButtonDrawParamsEh; var Handled: Boolean);
begin
if (MemTableEh1.FieldByName('Continent').AsString = 'South America') then
ButtonDrawParams.ImageIndex := 1
else
ButtonDrawParams.ImageIndex := 0;
end;
Демо проект прилагается.