Grid.DeleteRow not working in CheckBox Event

Hi,

a piece of code like this worked fine in TMSFNCGrid:

procedure TForm.GridCellCheckBoxChange(Sender: TObject; AColumn, ARow: Integer);
begin
if Grid.Booleans[AColumn,ARow]
then Grid.DeleteRow(ARow);
end;

Im am migrating tons of grids from TMSFNCGrid to the new DataGrid.

My task in this case: Delete a row when checkbox ist checked…

The difference between TTMSFNCGrid & TTMSFNCDataGrid is that TTMSFNCDataGrid is using real controls, so deleting the control while a control action occurs will generate an access violation. And this is because the there is still code running after clicking the checkbox. The best solution is to start a timer.

procedure TForm13.Timer1Timer(Sender: TObject);
begin
  Timer1.Enabled := False;
  if FDeleteRow <> -1 then
  begin
    TMSFNCDataGrid1.DeleteRow(FDeleteRow);
    FDeleteRow := -1;
  end;
end;

procedure TForm13.TMSFNCDataGrid1CellCheckBoxChange(Sender: TObject; AColumn,
  ARow: Integer);
begin
  if TMSFNCDataGrid1.Booleans[AColumn, ARow] then
  begin
    FDeleteRow := ARow;
    Timer1.Enabled := True;
  end;
end;