Guten Morgen,
wenn keine Zelle im DBGrid frei bearbeitet werden darf, dann muss die Eigenschaft ReadOnly auf True gesetzt sein. Ist nur für bestimmte Spalten ein fester Wertebereich (Listenauswahl) vorgegeben, dann würde ich die freie Bearbeitung über das Ereignis OnColEnter() unterbinden:
Delphi-Quellcode:
procedure TDataForm.DBGridColEnter(Sender: TObject);
begin
with Sender as TDBGrid do
ReadOnly := SelectedIndex in [0, 2, 4];
end;
Im Beispiel wird die freie Bearbeitung in drei Spalten verhindert.
Grüße vom marabu